如何合并 XSD 中属性的枚举值?
How to combined enum values for an attribute in XSD?
我想创建一个采用不同组合值的属性 (gravity_layout
)(例如:bottom|right
)
我怎样才能使这个属性?
我写了这个:
<xs:attribute name='layout_gravity'>
<xs:simpleType>
<xs:union memberTypes='xs:string'>
<xs:simpleType>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value='bottom' />
<xs:enumeration value='center' />
<xs:enumeration value='center_horizontal' />
<xs:enumeration value='center_vertical' />
<xs:enumeration value='clip_horizontal' />
<xs:enumeration value='clip_vertical' />
<xs:enumeration value='fill' />
<xs:enumeration value='fill_horizontal' />
<xs:enumeration value='fill_vertical' />
<xs:enumeration value='left' />
<xs:enumeration value='right' />
<xs:enumeration value='top' />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
我可以只为它定义一个值,例如right
或bottom
,但是如果我写right|bottom
,就会出错。
你可以
使用 XSD v1.1 断言(在 XSD v1.0 中不可用)
并尝试找出一个聪明的 XPath 来
验证由 |
分隔的合法值的微语言
符号,
或
修复您的 XML 设计以使用单独的 source
元素
layout_gravity
而不是将多个值塞进一个
@layout_gratity
属性:
<layout_gravity>
<source>bottom</source>
<source>right</source>
<!-- ... -->
</layout_gravity>
我推荐方法 #2 因为
- XSD(v1.1或v1.0)将能够自然地表示你的约束,并且
- 使用您的 XML 的程序将能够利用 XML 解析器
而不是必须微解析复合值塞进一个单一的
属性。
我想创建一个采用不同组合值的属性 (gravity_layout
)(例如:bottom|right
)
我怎样才能使这个属性?
我写了这个:
<xs:attribute name='layout_gravity'>
<xs:simpleType>
<xs:union memberTypes='xs:string'>
<xs:simpleType>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value='bottom' />
<xs:enumeration value='center' />
<xs:enumeration value='center_horizontal' />
<xs:enumeration value='center_vertical' />
<xs:enumeration value='clip_horizontal' />
<xs:enumeration value='clip_vertical' />
<xs:enumeration value='fill' />
<xs:enumeration value='fill_horizontal' />
<xs:enumeration value='fill_vertical' />
<xs:enumeration value='left' />
<xs:enumeration value='right' />
<xs:enumeration value='top' />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
我可以只为它定义一个值,例如right
或bottom
,但是如果我写right|bottom
,就会出错。
你可以
使用 XSD v1.1 断言(在 XSD v1.0 中不可用) 并尝试找出一个聪明的 XPath 来 验证由
|
分隔的合法值的微语言 符号,或
修复您的 XML 设计以使用单独的
source
元素layout_gravity
而不是将多个值塞进一个@layout_gratity
属性:<layout_gravity> <source>bottom</source> <source>right</source> <!-- ... --> </layout_gravity>
我推荐方法 #2 因为
- XSD(v1.1或v1.0)将能够自然地表示你的约束,并且
- 使用您的 XML 的程序将能够利用 XML 解析器 而不是必须微解析复合值塞进一个单一的 属性。