我的意思是在任何情况下:
<xs:element name="MyType1">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="MyType2">...</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
对此有不同的含义:
<xs:element name="MyType1">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="MyType2">...</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
提前致谢
答案 0 :(得分:16)
一般来说,对元素组(序列或选择)的出现约束(minOccurs
或maxOccurs
)意味着可以重复整个组,而对元素的出现约束意味着元素可以在之前重复组中的下一个元素出现。
如果您的序列只包含一个元素,则没有区别。
<xs:sequence>
<xs:element maxOccurs="unbounded" name="MyType2">...</xs:element>
</xs:sequence>
等于
<xs:sequence maxOccurs="unbounded">
<xs:element name="MyType2">...</xs:element>
</xs:sequence>
并且它们都允许重复元素<MyType2>
。一旦序列包含多个元素定义,就会有所不同。
<xs:sequence>
<xs:element maxOccurs="unbounded" name="MyType">...</xs:element>
<xs:element maxOccurs="unbounded" name="foobar">...</xs:element>
</xs:sequence>
不等于
<xs:sequence maxOccurs="unbounded">
<xs:element name="MyType">...</xs:element>
<xs:element name="foobar">...</xs:element>
</xs:sequence>
第一个允许像
这样的结构<MyType/>
<MyType/>
<foobar/>
<foobar/>
但第二个不允许这样的结构。相反,它允许像
这样的结构<MyType/>
<foobar/>
<MyType/>
<foobar/>
另一方面,第一个定义不允许这样做。