我使用xsd:all
的是复杂类型。当我在验证时错过任何必填元素时,它将显示所有元素。它不会显示确切的缺失元素。
但是,如果我使用xsd:sequence
我可以得到确切的漏掉的元素。
两者之间有什么区别吗?
xsd:sequence
:XML元素必须具有相同的顺序。
但是xsd:all
:XML元素可以是任何顺序。
我使用xsd:all
的是复杂类型。当我在验证时错过任何必填元素时,它将显示所有元素。它不会显示确切的缺失元素。
但是,如果我使用xsd:sequence
我可以得到确切的漏掉的元素。
两者之间有什么区别吗?
xsd:sequence
:XML元素必须具有相同的顺序。
但是xsd:all
:XML元素可以是任何顺序。
Answers:
<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>
希望我回答了你的问题。
<xs:all>
限制子元素出现的次数吗?我在W3C规范中找不到这方面的证据。
该模式仅定义构成合规文档的内容。
如何报告不符合项完全取决于验证者。没有什么可以阻止验证程序准确报告丢失的字段,但是显然在这种情况下您不会使用。
无论是错误还是设计使然,您都必须与验证程序的提供者进行讨论。
<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简单。