Microsoft XML Core Services (MSXML) 5.0 for Microsoft Office provides support for associating elements and attributes with namespaces. You can use a default or explicit declaration to declare namespaces. In both cases, the declaration associates a Uniform Resource Identifier (URI) with particular element and attribute names.
Developers creating new XML vocabularies might need to choose URIs for use as namespace identifiers. The following are general guidelines for creating new vocabularies that need namespace identifiers.
Although the Namespaces in XML recommendation does not prohibit borrowing, do not create a new namespace using a URI you do not control.
Although they are usually maintained, domain names do expire. Other URI facilities, such as Uniform Resource Names (URNs) and Permanent URLs (PURLs), guarantee persistence beyond the domain name infrastructure.
Although the Namespaces in XML recommendation does not prohibit the use of relative URI references in namespace identifiers, their use is largely undefined.
The default declaration declares a namespace in effect for an element and all other elements contained within it where the element is not prefixed. The following example declares the <catalog>
elementand all its element descendents that do not have a prefixto be members of the namespace declared using the URI http://www.example.microsoft.com/catalog/.
Example
<catalog
xmlns="http://www.example.microsoft.com/catalog/">
<book id="bk101"> ... </book> <book id="bk109"> ... </book> </catalog>
If the URI reference is an empty string, unprefixed elements within the scope of the declaration are not considered to belong to any namespace. Default declarations are commonly used when a document contains only elements from a particular namespace, or when one namespace effectively dominates all others.
Note Default namespaces do not directly apply to attributes.
An explicit declaration defines a shorthand, or prefix, to substitute for the full name of a namespace. Use an explicit declaration to reference a node from a namespace separate from your default namespace.
If the catalog example created in the document map had to represent its currency values using an element from a different namespace, it might include both a declaration for the catalog as a whole and an explicit declaration for the element describing the prices.
Explicit declarations of namespace prefixes use attribute names beginning with the xmlns
attribute and followed by the prefix. The value of the attribute is the namespace URI.
The following example declares cat
and money
to be shorthand for the full names of their respective namespaces. All elements beginning with cat:
or money:
are considered to be from the namespace "http://www.example.microsoft.com/catalog/"
or "http://www.example.microsoft.com/currency/"
, respectively.
<cat:catalog xmlns:cat="http://www.example.microsoft.com/catalog/" xmlns:money="http://www.example.microsoft.com/currency/"> <cat:book id="bk101"> <cat:author>Gambardella, Matthew</cat:author> <cat:title>XML Developer's Guide</cat:title> <cat:genre>Computer</cat:genre> <money:price>44.95</money:price> <cat:publish_date>2000-10-01</cat:publish_date> <cat:description><![CDATA[An in-depth look at creating applications with XML, using <, >,]]> and &.</cat:description> </cat:book> <cat:book id="bk109"> <cat:author>Kress, Peter</cat:author> <cat:title>Paradox Lost</cat:title> <cat:genre>Science Fiction</cat:genre> <money:price>6.95</money:price> <cat:publish_date>2000-11-02</cat:publish_date> <cat:description>After an inadvertant trip through a Heisenberg Uncertainty Device, James Salway discovers the problems of being quantum.</cat:description> </cat:book> </cat:catalog>
Explicit declarations are useful when a node contains elements from different namespaces. You can also fix default namespace declarations with explicit namespace declarations.
The following example is almost identical to the preceding example. However, all of the elements except price
use the default namespace declaration, avoiding repeated cat:
prefixes. All of the elements except price
are associated with the namespace URI "http://www.example.microsoft.com/catalog/"
; price
is associated with "http://www.example.microsoft.com/currency/"
.
<catalog xmlns="http://www.example.microsoft.com/catalog/" xmlns:money="http://www.example.microsoft.com/currency/"> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <money:price>44.95</money:price> <publish_date>2000-10-01</publish_date> <description><![CDATA[An in-depth look at creating applications with XML, using <, >,]]> and &.</description> </book> <book id="bk109"> <author>Kress, Peter</author> <title>Paradox Lost</title> <genre>Science Fiction</genre> <money:price>6.95</money:price> <publish_date>2000-11-02</publish_date> <description>After an inadvertant trip through a Heisenberg Uncertainty Device, James Salway discovers the problems of being quantum.</description> </book> </catalog>