Home arrow XML arrow Page 6 - Doing More With XML Schemas (part 4)

Being Selective - XML

In this concluding article, find out all about namespaces - what they are, how they work, and how you can use schemas to make sure that they're enforced in a consistent manner.

TABLE OF CONTENTS:
  1. Doing More With XML Schemas (part 4)
  2. Stocking Up
  3. The Name Game
  4. Setting Policy
  5. Old Friends And New
  6. Being Selective
  7. Closing Time
By: Harish Kamath, (c) Melonfire
Rating: starstarstarstarstar / 7
February 12, 2003

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement
The previous examples have demonstrated how a schema designer can force a document author to qualify an XML document with appropriate namespaces. However, based on what we've seen thus far, this is an all-or-nothing proposition - either every element is qualified or every element is unqualified - which is not very practical for real-world use.

Fortunately, the XML Schema specification also provides a "form" attribute for each element and attribute definition, which allows you to specify qualification rules on a case-by-case basis. Consider the following example, which demonstrates:

<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="http://www.somedomain.com/ns/sw/" xmlns:sw="http://www.somedomain.com/ns/sw/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- define a complex type --> <xsd:complexType name="starWarsEntity"> <xsd:sequence> <xsd:element name="name" type="xsd:string" form="qualified"/> <xsd:element name="species" type="xsd:string" form="unqualified"/> <xsd:element name="language" type="xsd:string" form="unqualified"/> <xsd:element name="home" type="xsd:string" form="qualified"/> </xsd:sequence> </xsd:complexType> <!-- define the root element and its contents --> <xsd:element name="gallery"> <xsd:complexType> <xsd:sequence> <xsd:element name="character" type="sw:starWarsEntity" maxOccurs="unbounded" form="qualified"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
As you can see, I've introduced the "form" attribute into the element definitions above. Like its schema-level cousins, this attribute too takes two values: "qualified" and "unqualified". In the example above, the <character>, <name> and <home> elements are all to be qualified with namespaces; the others may remain unqualified.

And here's an XML document instance conforming to the schema above:

<?xml version="1.0" encoding="UTF-8"?> <sw:gallery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sw="http://www.somedomain.com/ns/sw/" xsi:schemaLocation="http://www.somedomain.com/ns/sw/starwars.xsd"> <sw:character> <sw:name>Luke Skywalker</sw:name> <species>Human</species> <language>Basic</language> <sw:home>Tatooine</sw:home> </sw:character> <sw:character> <sw:name>Chewbacca</sw:name> <species>Wookie</species> <language>Shyriiwook</language> <sw:home>Kashyyyk</sw:home> </sw:character> <sw:character> <sw:name>Chief Chirpa</sw:name> <species>Ewok</species> <language>Ewok</language> <sw:home>Endor</sw:home> </sw:character> </sw:gallery>
The XML Schema author can thus selectively enforce XML element qualification - useful if only some of the elements are likely to clash with others.

 
 
>>> More XML Articles          >>> More By Harish Kamath, (c) Melonfire
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

XML ARTICLES

- Google Docs and Xpath Data Functions
- Flex Array Collection Sort and Filtering
- The Flex Tree Control
- Flex List Controls
- Working with Flex and Datagrids
- How to Set Up Podcasting and Vodcasting
- Creating an RSS Reader Application
- Building an RSS File
- An Introduction to XUL Part 6
- An Introduction to XUL Part 5
- An Introduction to XUL Part 4
- An Introduction to XUL Part 3
- An Introduction to XUL Part 2
- An Introduction to XUL Part 1
- XML Matters: Practical XML Data Design and M...

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: