0

我正在创建一个 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 code 的值只能是“enable”或“disable”。在我的 xsd 模式中,我将如何指定它只能是其中一个值?这是可能的还是我需要使用诸如 C# 之类的编程语言来处理这个问题?

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

谢谢,

4

2 回答 2

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

于 2013-04-04T19:58:08.703 回答
1

请参阅 Ian answer ... 或直接不声明命名类型:

<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>
于 2013-04-04T20:11:03.723 回答