我有以下模式,我用它来确保一个人的 PhoneNumberPhoneNumberType (家庭、工作等)不超过 10 个字符。但是,我想改进这个架构,以便 PhoneNumberType 不需要,如果 PhoneNumber 未提供,但如果以下情况则需要 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>

其他提示

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

如果你有一个PhoneNumber元素,那么它应该有一个属性即类型PhoneNumberType的。而不是瞎搞与验证和限制,我建议你把******中国成为一个复杂的元素,使PhoneNumberType它的一个必需的属性。

可能为时已晚,但你可以把它们组这样

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

和使所需的或不是该组

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top