我有以下架构,我用它来确保一个人的PhoneNumber
和PhoneNumberType
(家庭,工作等)不超过10个字符。但是,我想改进此架构,以便在未提供PhoneNumberType
时不需要PhoneNumber
,但如果提供PhoneNumber
则需要<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 1.1中完成,但不幸的是我仍然坚持使用XML Schema 1.0。
{{1}}
答案 0 :(得分:2)
抱歉,XML Schema无法做到这一点。
一些类似的问题:
答案 1 :(得分:0)
在我看来,这是一种“有”关系。
如果您有PhoneNumber元素,那么它应该具有PhoneNumberType类型的属性。我建议你将PhoneNumber变成一个复杂的元素,并使PhoneNumberType成为它的必需属性,而不是搞乱验证和限制。
答案 2 :(得分:0)
可能为时已晚,但你可以把它们放在这样的小组中
<xs:group name="group">
<xs:sequence>
<xs:element ref="PhoneNumber"/>
<xs:element ref="PhoneNymberType" />
</xs:sequence>
让这个群体成为必需