我在复杂类型中使用xsd:all
。当我在验证时错过任何强制元素时,它将显示所有元素。它不会精确显示遗漏的元素。
但是如果我使用xsd:sequence
,我可以得到确切的遗漏元素。
这两者有什么区别吗?
xsd:sequence
: XML元素的顺序必须一致
但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创建一个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创建一个XML文件,那么它可能看起来像这样:
<compElement>
<ele2>Second</ele2>
<ele1>First</ele1>
<ele4>Fourth</ele4>
<ele3>Third</ele3>
</compElement>
关于xsd:all的更多信息
关于xsd:sequence的更多信息
希望我回答了你的问题。
差异:
-
xsd:all -子元素可以以任意顺序出现。默认情况下,每个子元素只出现一次。子元素允许出现的次数可以通过
minOccurs
和maxOccurs
属性进行修改。 -
xsd:sequence -子元素必须按照定义的顺序出现。默认情况下,每个子元素只出现一次。子元素允许出现的次数可以通过
minOccurs
和maxOccurs
属性进行修改。
从W3Schools教程这里和这里
模式仅仅定义了兼容文档的构成。
如何报告不符合完全取决于验证者。没有什么可以阻止验证器准确地报告哪些字段丢失了,但显然,在这种情况下,您使用的验证器不会这样做。
这是一个bug还是一个设计,您必须与验证器的提供者讨论
简单的XML示例:
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
以上XML的XSD(已解释):
<xs:element name="school">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
:
xs:element:定义一个元素
xs:all:表示子元素可以按任意顺序出现。
xs:sequence:表示子元素只按照指定的顺序出现。
xs:complexType:表示包含其他元素。
xs:simpleType:表示不包含其他元素。
类型:字符串,小数,整数,布尔,目前为止,时间,
- 简而言之, xsd是用特定类型表示和验证XML数据的另一种方法。
在额外属性的帮助下,我们可以执行多个操作
在xsd上执行任何任务都比xml简单。
所有指标
<all>
指示符指定子元素可以以任何顺序出现,并且每个子元素只能出现一次:
序指示器
参考链接
<sequence>
指示符指定子元素必须以特定的顺序出现:
当我们使用under标记时,它表示在该complexType中声明的所有元素必须以相同的顺序出现在XML文档中。否则,您将得到一个错误。因为不需要按适当的顺序指定元素。