XSD架构处理两个值之一

时间:2013-04-04 19:48:24

标签: xml xsd switch-statement

我正在创建一个xsd架构来支持以下xml结构:

<Switch code="enable'>
 .....more..stuff.....
</Switch>

以下是在架构中声明它的方式

 <xs:element name="Switch minOccurs="1" maxOccurs="1">
      <xs:complexType>
         ................
        <xs:attribute type="xs:string" name="Code" use="required"/>
      </xs:complexType>
    </xs:element>

现在,Switch代码的值只能是“启用”或“禁用”。在我的xsd架构中,我如何指定它只能是其中一个值?这是可能的还是我需要使用C#等编程语言来处理这个问题?

如果有人能帮助我,我将不胜感激。

谢谢,

2 个答案:

答案 0 :(得分:2)

您可以在XML架构中定义枚举类型:

<xs:simpleType name="enableDisable">
  <xs:restriction base="xs:string">
    <xs:enumeration value="enable" />
    <xs:enumeration value="disable" />
  </xs:restriction>
</xs:simpleType>

使用此类型,您可以使用此类型而不是xs:string作为属性

<xs:attribute type="enableDisable" name="Code" use="required"/>

(如果您的架构有targetNamespace

,则可能需要前缀

答案 1 :(得分:1)

请参阅Ian回答...或直接查看命名类型:

<xs:element name="Switch" minOccurs="1" maxOccurs="1">
  <xs:complexType>
     ................
    <xs:attribute name="Code" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="enable" />
          <xs:enumeration value="disable" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
</xs:element>