我定义的simpleType
restriction
可以是enumeration
的值,也可以是pattern
的值。我意识到我可以从pattern
完成所有操作,但我希望获得enumeration
提供的选项列表。
这是我期望能够做到的:
<xs:simpleType name="both">
<xs:restriction base="xs:string">
<xs:enumeration value="one" />
<xs:enumeration value="two" />
<xs:pattern value="[0..9]+" />
</xs:restriction>
<xs:simpleType>
但由于某个值无法与两个约束匹配,因此失败。如果我修改模式以允许任何枚举值,那么如果只匹配模式,它将失败。
答案 0 :(得分:9)
原来我需要union
。将枚举类型定义为单独的类型:
<xs:simpleType name="enumeration">
<xs:restriction base="xs:string">
<xs:enumeration value="one" />
<xs:enumeration value="two" />
</xs:restriction>
<xs:simpleType>
然后将目标类型创建为枚举:
<xs:simpleType name="both">
<xs:union memberTypes="enumeration">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0..9]+" />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
所以现在我得到了选择列表,或者匹配模式。正是我想要的!
更新:实际上可以将这两种简单类型定义为union
的子项或memberTypes
属性。