1

假设,我有以下元素

<Employment type ="Full">
</Employment>

这就是我表达属性的方式

<xs:attribute name="Degree" type="xs:string" use="required" />

现在我还想表达一个事实,即属性只能有 2 个值,即FullPart

所以,我试过这个

   <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 一起出现的错误。

我如何表达这种约束?

感谢您的帮助。

4

1 回答 1

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
于 2013-09-29T00:57:55.010 回答