web-dev-qa-db-ja.com

列挙値のXSD定義

次の3つの値のいずれか1つのみを持つことができるフィールドを含むXSDを定義しようとするのが止まりません。

  • 青い

基本的に、スキーマレベルで厳密な列挙を定義します。

私の最初の試みは間違っているように見えますが、それを修正する「正しい」方法がわかりません。

<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>
46
Nate

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>
84
Colin Cochrane