之间有什么区别
<xs:element name="root">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="child"/>
</xs:sequence>
</xs:complexType>
</xs:element>
和
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="child" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
在第一个示例中,事件指示符应用于xs:sequence
,第二次应用于xs:element
。
答案 0 :(得分:2)
在您的特定情况下,没有区别,但请考虑序列包含多个元素时的情况:
<xs:element name="root">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="child1"/>
<xs:element name="child2"/>
<xs:element name="child3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
与之相比:
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="child1" maxOccurs="unbounded"/>
<xs:element name="child2" maxOccurs="unbounded"/>
<xs:element name="child3" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
第一个匹配child1
,child2
,child3
的任意数量的序列:
<root>
<child1/><child2/><child3/>
<child1/><child2/><child3/>
<child1/><child2/><child3/>
…
</root>
,第二个匹配单个序列,该序列可以包含一个或多个child1
元素,后跟一个或多个child2
元素,后跟一个或多个child3
元素:
<root>
<child1/><child1/><child1/><child1/>
<child2/><child2/>
<child3/>
</root>
您的模式具有相同的效果,因为包含重复的单个元素的序列与包含单个元素的重复序列相同。通常,重复的序列和重复的元素会导致不同的内容模型。