87

我正在使用xsd:all复杂类型。当我在验证时错过任何强制性元素时,它将显示所有元素。它不会显示准确的遗漏元素。

但如果我使用xsd:sequence,我可以得到准确的遗漏元素。

这两者有什么区别吗?

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

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

4

6 回答 6

142

<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 的更多信息

希望我回答了你的问题。

于 2013-04-19T09:46:41.657 回答
23

区别:

  • xsd:all - “子元素可以按任何顺序出现,每个子元素可以出现零次或一次”(即 maxOccurs 可以是 0 或 1)
  • xsd:sequence - “子元素必须出现在一个序列中。每个子元素可以出现 0 到任意次数”(即 maxOccurs 可以是 0 或任意数字或“无界”)

这里这里的 W3Schools 教程。

于 2013-04-19T09:32:41.780 回答
4

该模式仅定义了构成合规文档的内容。

如何报告违规行为完全取决于验证者。没有什么可以阻止验证器准确报告缺少哪些字段,但显然您使用的字段在这种情况下不会。

无论这是错误还是设计,您都必须与验证器的提供者讨论。

于 2018-02-01T12:05:04.680 回答
3

简单的 XML 示例:

<school>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</school>

XSD OF ABOVE XML(解释):

<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 简单。

于 2020-04-11T13:37:12.947 回答
2

所有指标

<all>指示符指定子元素可以按任何顺序出现,并且每个子元素只能出现一次:

顺序指示器

<sequence>指示符指定子元素必须以特定顺序出现:

参考链接

于 2013-04-19T09:34:58.197 回答
0

当我们使用 under 标签时,它表示在该 complexType 中声明的所有元素必须以相同的顺序出现在 XML 文档中。否则,你会得到一个错误。因为不需要以正确的顺序指定元素。

于 2017-02-09T02:06:06.137 回答