如何合并多个XSD限制类型定义新简单类型T_FOOBAR?
解决方案
在XML Schema 1.0中,你可以使用<xsd:union>元素合并多个简单类型的取值范围,既能复用已定义的T_YES_NO和T_FORBIDDEN类型,又无需重复枚举值,具体写法如下:
<xsd:simpleType name="T_FOOBAR"> <xsd:union memberTypes="T_YES_NO T_FORBIDDEN"/> </xsd:simpleType>
说明
<xsd:union>的memberTypes属性指定要合并的目标简单类型,合并后的T_FOOBAR会自动包含T_YES_NO的y、n和T_FORBIDDEN的f这三个合法取值。- 该方式完全遵循XSD规范,且完美匹配你不想重复枚举值的需求。
若使用XML Schema 1.1,还可通过<xsd:assert>实现更复杂的约束组合,但针对当前场景,union是最直接且兼容XSD 1.0的方案。
内容的提问来源于stack exchange,提问作者Toru
相关产品推荐
相关产品推荐

