Xml 如何在XSD中组合属性的枚举值?
我想创建一个属性(Xml 如何在XSD中组合属性的枚举值?,xml,enums,xsd,Xml,Enums,Xsd,我想创建一个属性(gravity\u layout),它采用不同的组合值(例如:bottom\124; right) 如何创建此属性? 我写过这样的话: <xs:attribute name='layout_gravity'> <xs:simpleType> <xs:union memberTypes='xs:string'> <xs:simpleType> <xs:restric
gravity\u layout
),它采用不同的组合值(例如:bottom\124; 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>
我可以为它定义一个值,例如justright
或bottom
,但是如果我写right | bottom
,那么我会得到错误。您可以
|
符号
或源元素
layout\u gravity
而不是将多个值塞入一个
@layout\u gratity
属性:
<layout_gravity>
<source>bottom</source>
<source>right</source>
<!-- ... -->
</layout_gravity>
底部
正确的
- XSD(v1.1或v1.0)将能够自然地表示您的约束,并且
- 使用XML的程序将能够更好地利用XML解析器 而不是必须微解析填充到单个 属性
- 使用XSD v1.1断言(XSD v1.0中不可用)
并尝试找出一个聪明的XPath来
验证由
符号 或|
- 修复您的XML设计,使用单独的
源
元素
而不是将多个值塞入一个layout\u gravity
属性:@layout\u gratity
<layout_gravity> <source>bottom</source> <source>right</source> <!-- ... --> </layout_gravity>
底部 正确的
我推荐方法2,因为
- XSD(v1.1或v1.0)将能够自然地表示您的约束,并且
- 使用XML的程序将能够更好地利用XML解析器 而不是必须微解析填充到单个 属性
- 你可以