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.

  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


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


- 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: