模式定义中的<xsd:all>和<xsd:sequence>之间的区别?
我正在使用复杂types的xsd:all 。 当我错过任何强制性的元素,而validation它会显示所有的元素。 它不会显示确切的遗漏元素。 
 但是如果我使用xsd:sequence我可以得到确切的错过的元素。 
这两者有什么区别?
  xsd:sequence :XML元素的xsd:sequence必须相同。 
 但是, xsd:all :XML元素可能是任何顺序。 
  < xsd:all >指定子元素可以以任何顺序出现。 
  < xsd:sequence >指定子元素只能按提到的顺序出现。 
序列示例:
 <xs:element name="compElement"> <xs:complexType> <xs:sequence> <xs:element name="ele1" type="xs:string"/> <xs:element name="ele2" type="xs:string"/> <xs:element name="ele3" type="xs:string"/> <xs:element name="ele4" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> 
如果你从这个xsd创build一个XML,那么它会是这样的:
 <compElement> <ele1>First</ele1> <ele2>Second</ele2> <ele3>Third</ele3> <ele4>Fourth</ele4> </compElement> 
所有例子:
 <xs:element name="compElement"> <xs:complexType> <xs:all> <xs:element name="ele1" type="xs:string"/> <xs:element name="ele2" type="xs:string"/> <xs:element name="ele3" type="xs:string"/> <xs:element name="ele4" type="xs:string"/> </xs:all> </xs:complexType> </xs:element> 
如果你从这个xsd创build一个XML文件,那么它会是这样的:
 <compElement> <ele2>Second</ele2> <ele1>First</ele1> <ele4>Fourth</ele4> <ele3>Third</ele3> </compElement> 
有关 xsd:序列的更多信息
希望我回答你的问题。
区别:
- xsd:all – “子元素可以以任何顺序出现,每个子元素可以出现零次或一次”(即,maxOccurs可以是0或1)
- xsd:sequence – “子元素必须出现在一个序列中,每个子元素可以出现0到任意次数”(即,maxOccurs可以是0或任何数字或“无界”)
从这里和这里的W3Schools教程。
所有指标
<all>指示符指定子元素可以以任何顺序出现,并且每个子元素只能出现一次:
序列指标
<sequence>指示符指定子元素必须以特定顺序出现:
参考链接
当我们在标签下使用的时候,它表明所有在那个complexType中声明的元素必须在XML文档中以相同的顺序出现。 否则,你会得到一个错误。 因为没有必要以正确的顺序指定元素。