如何在xml-schema中声明一个类型?

Dom*_*ang 0 xsd

我有一个类似下面的架构,color元素defaultinstance相同restriction(red/ green/ blue).我想将限制移到更高级别并color使用它设置所有元素(就像在Java/C#中声明类型或枚举一样)

我该怎么做?

<xs:element name="something">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="instance" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                    <xs:attribute name="color" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:string">
                                <xs:enumeration value="red"/>
                                <xs:enumeration value="green"/>
                                <xs:enumeration value="blue"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:complexType>
            </xs:element>
            <xs:element name="default">
                <xs:complexType>
                    <xs:attribute name="color" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:string">
                                <xs:enumeration value="red"/>
                                <xs:enumeration value="green"/>
                                <xs:enumeration value="blue"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

Dav*_*d M 5

定义类型:

<xs:simpleType name="colorenum">
    <xs:restriction base="xs:string">
        <xs:enumeration value="red"/>
        <xs:enumeration value="green"/>
        <xs:enumeration value="blue"/>
    </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

并参考它:

<xs:attribute name="color" type="colorenum" />
Run Code Online (Sandbox Code Playgroud)