我正在使用xsd:all
复杂类型。当我在验证时错过任何强制性元素时,它将显示所有元素。它不会显示准确的遗漏元素。
但如果我使用xsd:sequence
,我可以得到准确的遗漏元素。
这两者有什么区别吗?
xsd:sequence
: XML 元素的顺序必须相同。
但是xsd:all
: XML 元素可以是任何顺序。
我正在使用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 的更多信息
希望我回答了你的问题。
该模式仅定义了构成合规文档的内容。
如何报告违规行为完全取决于验证者。没有什么可以阻止验证器准确报告缺少哪些字段,但显然您使用的字段在这种情况下不会。
无论这是错误还是设计,您都必须与验证器的提供者讨论。
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<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 简单。
当我们使用 under 标签时,它表示在该 complexType 中声明的所有元素必须以相同的顺序出现在 XML 文档中。否则,你会得到一个错误。因为不需要以正确的顺序指定元素。