Home arrow XML arrow Page 2 - Designing Your own XML Schema: Restrictions and User Defined Types
SEARCH DEVARTICLES

TOOLS YOU CAN USE

advertisement
Designing Your own XML Schema: Restrictions and User Defined Types - Restrictions based on patterns in XML Schema
(Page 2 of 7 )

Let us consider that we would like to have an employee ID to be provided with only five digits, in the form of a string.  If it is in the form of a string, it would accept any character.  I wanted to restrict it to only digits.  Another good example along the same lines would be a zip code.

In these situations, you can use “patterns” in XML Schema.  Even though I present a simple example of this, I suggest you refer to http://www.w3c.org/ for further in-depth information on “patterns.”  It is just beyond the scope of this article to concentrate so deeply on patterns.

Let us look at the following complete schema before I give a complete explanation:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/
XMLSchema
" elementFormDefault="qualified" 
attributeFormDefault="unqualified">
  <xs:element name="Employees">
    <xs:annotation>
      <xs:documentation>Contains All Employee information</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Employee" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ID">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:pattern value="[0-9]{5}" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Name" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:key name="PK_Employee_ID">
      <xs:selector xpath=".//Employee" />
      <xs:field xpath="ID" />
    </xs:key>
  </xs:element>
</xs:schema>

You need to observe the following fragment within the above complete schema, which actually does the restriction:

<xs:element name="ID">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{5}" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

The above “restriction” is of type “pattern” facet where it would allow any digit between zero and nine, and a maximum of five digits.  And not only that, it would not accept less than five digits as well!

I strongly suggest you go through several types of patterns available in XML Schema criteria, before designing a schema.  This will help you get a better grasp of what you need to know to design powerful schema.


blog comments powered by Disqus
XML ARTICLES

- Using Regions with XSL Formatting Objects
- Using XSL Formatting Objects
- More Schematron Features
- Schematron Patterns and Validation
- Using Schematron
- Datatypes and More in RELAX NG
- Providing Options in RELAX NG
- An Introduction to RELAX NG
- Path, Predicates, and XQuery
- Using Predicates with XQuery
- Navigating Input Documents Using Paths
- XML Basics
- Introduction to XPath
- Simple Web Syndication with RSS 2.0
- Java UI Design with an IDE

Dev Articles Forums 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Weekly Newsletter
 
Developer Updates  
Free Website Content 
Contact Us 
Site Map 
Privacy Policy 
Support 



© 2003-2012 by Developer Shed. All rights reserved. DS Cluster 8 - Follow our Sitemap
Popular Web Development Topics
All Web Development Tutorials