我正在尝试为类似于此的 xml 编写架构
<?xml version="1.0" encoding="ISO-8859-1"?>
<store>
<book>title1</book>
<poster>some text</poster>
<poster>some text</poster>
<book>title1</book>
<poster>some text</poster>
</store>
我想知道 Schema 中是否有一个 complexType 允许“book”和“poster”标签出现最少 0 次和无限制的最大次数。我需要它们能够以随意的顺序出现,例如:书籍、海报、书籍海报、海报。
我虽然我不能简单地放一个序列,而是写一个这样的模式
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="store" type="TStore"/>
<xs:complexType name="TStore">
<xs:element name="book" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="poster" type="xs:string" maxOccurs="unbounded"/>
</xs:complexType>
</xs:schema>
但这只是无效的模式。如果书和海报标签以随意的顺序出现,那么“xs:all”会很好,但只出现一次。我该如何解决?编辑:带有 maxOccurs="unbounded" 的 xs:choice 可以很好地解决问题。
我也不明白为什么像这样的简单重复需要一个序列。我查阅了一些教程,但我找不到这个简单案例的参考。
<?xml version="1.0" encoding="ISO-8859-1"?>
<tags>
<tag>text1</tag>
<tag>text2</tag>
<tag>text3</tag>
</tags>
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="tags" type="complexType">
<xs:sequence>
<xs:element name="tag" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:element>
</xs:schema>