0

我一直在尝试构建一个 XSD 文件来验证一些 xml

XSD 示例

<xs:element name="person" type="persontype"/>
<xs:complexType name="persontype">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

XML 示例

<persontype>
  <firstname/>
  <lastname/>
</persontype>

我如何构造 xsd 以要求“名字”是强制性的,而“姓氏”甚至不是 xml 有效所必需的,而且只要层次结构是,序列不必按顺序排列尊重?

可能遇到的 XML 的最终结果,我希望根据我的最终 xsd 将其视为有效。

有效场景 1

<persontype>
  <firstname/>
</persontype>

有效场景 2

<persontype>
  <lastname/>
  <firstname/>
</persontype>

感谢您的帮助。

4

1 回答 1

1

我已经从关于指标的 XML Schema 教程中改编了这个:

<xs:element name="person">
  <xs:complexType>
    <xs:all>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string" minOccurs="0"/>
    </xs:all>
  </xs:complexType>
</xs:element>

如果您使用all指标,您的元素的顺序可以是任意的,但默认情况下,每个元素必须恰好出现一次。要使姓氏可选,您可以通过提供minOccurs指示符并将其设置为零来更改默认值。

这将允许您有选择地为每个人指定一个姓氏,具有任何元素顺序。

于 2013-04-09T18:02:02.677 回答