Doing More With XML Schemas (part 4) - Stocking Up
(Page 2 of 7 )
First, the basics. A namespace is simply a prefix added to an element in order to distinguish it from other elements with the same name.
An example might help to make this clearer. Let's suppose that I decided to encode my stock portfolio as an XML document. Here's what it might look like:
<?xml version="1.0"?>
<portfolio>
<stock>Cisco Systems</stock>
<stock>Nortel
Networks</stock>
<stock>eToys</stock>
<stock>IBM</stock>
</portfolio>
And now let's suppose that Tom, my next-door neighbour and the proud owner of his own computer store, hears about XML, gets really excited, and assigns some of his employees to the task of encoding his store's inventory into XML. Here's what his XML document might look like:
<?xml version="1.0"?>
<inventory>
<item name="Mouse C106">
<vendor>Logitech</
vendor>
<stock>100</stock>
</item>
<item name="Visor Deluxe">
<vendor>HandSpring</vendor>
<stock>23</stock>
</item>
<item
name="Nomad">
<vendor>Creative</vendor>
<stock>2</stock>
</item>
</inventory>
Finally, let's suppose that Tom and I get together for a drink, tell each other about our XML experiments and (in a moment of tequila-induced clarity) decide to put XML's capabilities to the test by combining our two documents into one. However, since both documents include a tag named
<stock>
whose meaning is entirely dependent on its context, it's pretty obvious that our attempt at integration will fail, since an XML application would have no way of telling whether the data enclosed between <stock>...</stock> tags belonged to my portfolio or Tom's inventory.
It's precisely to avoid this kind of ambiguity that the XML specification now provides for namespaces. Namespaces are a way to uniquely identify specific elements within an XML document. This is accomplished by assigning a unique prefix to an element, thereby immediately associating it with a particular data universe and eliminating ambiguity.
Next: The Name Game >>
More XML Articles
More By Harish Kamath, (c) Melonfire