XML Tutorial/XML Schema/enumeration

Материал из Web эксперт
Версия от 08:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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.