-->

区别 和 在模式定义?(Difference between and

2019-08-31 13:29发布

我使用xsd:all在复杂的类型。 当我错过任何强制性内容,同时验证它会显示所有元素。 它不会显示确切错过元素。

但是,如果我使用xsd:sequence我能得到确切错过元素。

有没有这两者之间有什么区别?

xsd:sequence :XML元素必须以相同的顺序。

xsd:all :XML元素可以是任意顺序。

Answer 1:

<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:所有
更多信息的XSD:序列

希望我回答你的问题。



Answer 2:

区别:

  • XSD:所有 - “子元素可以以任何顺序出现,并且每个子元素可出现零或一个时间”(即,maxOccurs的可以是0或1)
  • XSD:序列 - “子元素必须出现在序列中的每个子元素可以从0到发生任意次数。”(即,maxOccurs的可以是0或任意数量的或“无限”)

从W3Schools的教程这里和这里 。



Answer 3:

所有指标

所述<all>指示符指示所述子元素可以以任何顺序出现,并且每个子元素必须只出现一次:

序列指标

所述<sequence>指示符指示所述子元素必须出现在一个特定的顺序:

引用链接



Answer 4:

该模式仅仅定义什么是标准的文件。

如何不遵守报道完全取决于验证。 没有什么从报告究竟哪些领域缺少停止验证,但显然你使用一个在这种情况下没有。

这是否是一个错误或设计,你将不得不与验证程序的供应商进行讨论。



Answer 5:

当我们在代码中使用,表示所有被该复杂类型声明必须出现在XML文档中的顺序相同的元素。 否则,你会得到一个错误。 对于没有必要指定正确的顺序元素。



文章来源: Difference between and in schema definition?