4

我有以下架构,我用它来确保一个人的PhoneNumberPhoneNumberType(家庭、工作等)不超过 10 个字符。但是,我想改进此架构,以便PhoneNumberType如果PhoneNumber未提供 a 则不需要,但如果PhoneNumber提供了则需要。有没有办法在 XML Schema 1.0 中做到这一点?

我知道这可以在 XML Schema 1.1 中使用 来完成<xs:assert/>,但不幸的是我被 XML Schema 1.0 困住了。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xs:element name="PhoneNumber">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="0"/>
        <xs:maxLength value="10"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="PhoneNumberType">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="0"/>
        <xs:maxLength value="10"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xsd:schema>
4

3 回答 3

0

在我看来,这是一种“有”的关系。

如果您有一个PhoneNumber 元素,那么它应该有一个PhoneNumberType 类型的属性。与其搞乱验证和限制,我建议您将 PhoneNumber 变成一个复杂的元素,并使 PhoneNumberType 成为它的必需属性。

于 2010-03-25T18:44:02.207 回答
0

可能为时已晚,但您可以像这样将它们分组

<xs:group name="group">
<xs:sequence>
    <xs:element ref="PhoneNumber"/>
    <xs:element ref="PhoneNymberType" />
</xs:sequence>

并使这个组需要或不需要

于 2011-06-10T10:09:22.680 回答