Friday 7 November 2014

xs:enumeration : Restriction on set of values


By using <xs:enumeration> you can define a list of possible values.

        <!-- validate sex -->
        <xs:element name="sex">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="male" />
                    <xs:enumeration value="female" />
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

The example above defines an element called "sex" with a restriction. The only acceptable values are: male, female.

employee.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- Schema for simple elements -->
        <xs:element name="id" type="xs:integer" />
  <xs:element name="firstname" type="xs:string" />
  <xs:element name="middlename" type="xs:string" />
  <xs:element name="lastname" type="xs:string" />
        <xs:element name="salary" type="xs:decimal" />
        <xs:element name="married" type="xs:string" />
        <xs:element name="department" type="xs:string" />
        <xs:element name="pjtname" type="xs:string" />
  <xs:element name="from" type="xs:date" />
  <xs:element name="to" type="xs:date" />

        <!-- validate sex -->
        <xs:element name="sex">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="male" />
                    <xs:enumeration value="female" />
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

        <!-- Applying restriction on Employee age -->
        <xs:element name="age">
            <xs:simpleType>
                <xs:restriction base="xs:integer">
                    <xs:minInclusive value="19" />
                    <xs:maxExclusive value="56" />
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
        
  <!-- Schema for element details -->
  <xs:element name="details">
    <xs:complexType>
      <xs:sequence>
                            <xs:element ref="firstname" />
                            <xs:element ref="middlename" />
                            <xs:element ref="lastname" />
                            <xs:element ref="age" />
                            <xs:element ref="salary" />
                            <xs:element ref="married" />
                            <xs:element ref="sex" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

         <!-- Schema for element project -->
  <xs:element name="project">
    <xs:complexType>
      <xs:sequence>
                            <xs:element ref="department" />
                            <xs:element ref="pjtname" />
                            <xs:element ref="from" />
                            <xs:element ref="to" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

         <!-- Schema for element employee -->
  <xs:element name="employee">
    <xs:complexType>
      <xs:sequence>
                            <xs:element ref="id" />
                            <xs:element ref="details" />
                            <xs:element ref="project" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

          <!-- Schema for element employees -->
  <xs:element name="employees">
    <xs:complexType>
      <xs:sequence>
                            <xs:element ref="employee" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
</xs:schema>


employee.xml
<?xml version="1.0" encoding="UTF-8"?>
   
<employees xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="employees.xsd">

    <employee>
        <id>1</id>
        <details>
            <firstname>Hari</firstname>
            <middlename>Krishna</middlename>
            <lastname>Gurram</lastname>
            <age>25</age>
            <salary>80000</salary>
            <married>single</married>
            <sex>male</sex>
        </details>

        <project>
            <department>aero</department>
            <pjtname>Flight Controls</pjtname>
            <from>2011-09-16</from>
            <to>2013-01-22</to>
        </project>

        <project>
            <department>banking</department>
            <pjtname>Online Transaction Processing System</pjtname>
            <from>2013-01-23</from>
            <to>2014-10-06</to>
        </project>

        <project>
            <department>mobile</department>
            <pjtname>Daily News Application</pjtname>
            <from>2014-10-07</from>
            <to>2015-05-06</to>
        </project>
    </employee>
</employees>


Prevoius                                                 Next                                                 Home

No comments:

Post a Comment