让我们说,我有以下元素
<Employment type ="Full">
</Employment>
这是我表达属性的方式
<xs:attribute name="Degree" type="xs:string" use="required" />
现在我想表达一个事实,即该属性只能有2个值,即完整和部分
所以,我试过这个
<xs:attribute name="Degree" type="xs:string" use="required" >
<xs:simpleType>
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
</xs:attribute>
我收到的错误是xs:attribute不能与SimpleType或ComplexType一起出现。
我如何表达这种约束?
感谢帮助。
答案 0 :(得分:2)
这是一个XML Schema定义,演示了一个包含字符串内容和带有枚举值的属性的元素:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xs:element name="Employment">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Degree" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Full" />
<xs:enumeration value="Part" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
这样的XML实例有效:
<Employment Degree="Part">string content</Employment
此XML实例无效(缺少属性):
<Employment>string content</Employment
此XML实例无效(非法属性值):
<Employment Degree="asdf">string content</Employment