枚举值的XSD定义

时间:2009-07-22 21:59:13

标签: xsd

我试图定义一个包含一个只能包含以下三个值之一的字段的XSD:

  • 绿色
  • 红色

基本上,我想在Schema级别定义一个严格的枚举。

我的第一次尝试出现了错误,我不确定解决它的“正确”方法。

<xs:element name="color">
    <xs:complexType>
        <xs:choice>
            <xs:element name="green"/>
            <xs:element name="red"/>
            <xs:element name="blue"/>
        </xs:choice>
    </xs:complexType>
</xs:element>

通过使用自动XML生成器,它将这些元素名称视为字符串对象:

<xs0:color>
    <xs0:green>text</xs0:green>
</xs0:color>

2 个答案:

答案 0 :(得分:80)

您可以在simpleType的上下文中定义枚举。

 <xs:simpleType name="color" final="restriction" >
    <xs:restriction base="xs:string">
        <xs:enumeration value="green" />
        <xs:enumeration value="red" />
        <xs:enumeration value="blue" />
    </xs:restriction>
</xs:simpleType>
<xs:element name="SomeElement">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Color" type="color" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

答案 1 :(得分:1)

此解决方案对我有用:

<xs:element name="color">
   <xs:simpleType>
      <xs:restriction base="xs:string">
          <xs:enumeration value="green"/>
          <xs:enumeration value="red"/>
          <xs:enumeration value="blue"/>
      </xs:restriction>
   </xs:simpleType>
</xs:element>