XML Tutorial/XML Schema/enumeration
Содержание
Enumerating A Simple Type
File: Schema.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru"
elementFormDefault="qualified">
<xs:element name = "Tshirt">
<xs:complexType>
<xs:sequence>
<xs:element name = "Color" type = "clothesColorType" />
<xs:element name = "Size" type = "clothesSizeType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="clothesSizeType">
<xs:restriction base="xs:string">
<xs:enumeration value="S" />
<xs:enumeration value="M" />
<xs:enumeration value="L" />
<xs:enumeration value="XL" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="clothesColorType">
<xs:restriction base="xs:string">
<xs:enumeration value="Black" />
<xs:enumeration value="White" />
<xs:enumeration value="Green" />
<xs:enumeration value="Blue" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
File: Data.xml
<Tshirt>
<Color>Blue</Color>
<Size>XL</Size>
</Tshirt>
However, this would not be allowed:
<Tshirt>
<Color>LightBlue</Color>
<Size>10</Size>
</Tshirt>
enumeration Constrains the value of the data type to a defined set of values
<xsd:simpleType name="dayType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Monday"/>
<xsd:enumeration value="Tuesday"/>
<xsd:enumeration value="Wednesday"/>
<xsd:enumeration value="Thursday"/>
<xsd:enumeration value="Friday"/>
<xsd:enumeration value="Saturday"/>
<xsd:enumeration value="Sunday"/>
</xsd:restriction>
</xsd:simpleType>
Enumeration limits a value space to a specific set of values - if a value isn"t specified in the set in the schema, it isn"t valid.
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru"
elementFormDefault="qualified">
<xs:simpleType name="Sizes">
<xs:restriction base="xs:string">
<xs:enumeration value="S" />
<xs:enumeration value="M" />
<xs:enumeration value="L" />
<xs:enumeration value="XL" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
Specifying a Set of Acceptable Values
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru"
elementFormDefault="qualified">
<xsd:element name="continent">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Asia" />
<xsd:enumeration value="Africa" />
<xsd:enumeration value="Australia" />
<xsd:enumeration value="Europe" />
<xsd:enumeration value="North America" />
<xsd:enumeration value="South America" />
<xsd:enumeration value="Antartica" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
Data.xml: The continent element can now contain any single one of these values.
<?xml version="1.0"?>
<continent>Asia</continent>
You can use the xsd:enumeration facet with all simple types except boolean.
Each enumeration value must be unique.
Enumeration values may contain white space.