题
我有以下模式,我用它来确保一个人的 PhoneNumber
和 PhoneNumberType
(家庭、工作等)不超过 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>
解决方案
抱歉,XML Schema 无法做到这一点。
一些类似的问题:
其他提示
在我看来,这是一个“有”关系。
如果你有一个PhoneNumber元素,那么它应该有一个属性即类型PhoneNumberType的。而不是瞎搞与验证和限制,我建议你把******中国成为一个复杂的元素,使PhoneNumberType它的一个必需的属性。
可能为时已晚,但你可以把它们组这样
<xs:group name="group">
<xs:sequence>
<xs:element ref="PhoneNumber"/>
<xs:element ref="PhoneNymberType" />
</xs:sequence>
和使所需的或不是该组
不隶属于 StackOverflow