XML Schema to restrict one field based on another
我有以下架构,我使用它来确保一个人的
我知道这可以在 XML Schema 1.1 中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?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 不能这样做。
一些类似的问题:
- 两个xml列表的长度可以定义为要求相等吗?
- 基于属性限制元素值
- 如何使用属性值作为 XML 多态类型选择的判别器?
- 如何在 XSD 中根据它的邻居 xml 节点值验证 xml 节点值
可能为时已晚,但您可以像这样将它们分组
1 2 3 4 5 | <xs:group name="group"> <xs:sequence> <xs:element ref="PhoneNumber"/> <xs:element ref="PhoneNymberType" /> </xs:sequence> |
是否需要这个组
在我看来,这是一种"有"关系。
如果你有一个PhoneNumber 元素,那么它应该有一个PhoneNumberType 类型的属性。我建议您将 PhoneNumber 转换为复杂元素并将 PhoneNumberType 设置为它的必需属性,而不是搞乱验证和限制。