XML namespace

This is an old revision of this page, as edited by Ehn (talk | contribs) at 17:55, 17 April 2008 (Namespace declaration: Abbreviation cleanup, capitalization etc). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

XML namespaces are used for providing uniquely named elements and attributes in an XML instance. They are defined by a W3C recommendation called Namespaces in XML. An XML instance may contain element or attribute names from more than one XML Vocabulary. If each vocabulary is given a namespace then the ambiguity between identically named elements or attributes can be resolved.

A simple example would be to consider an XML instance that contained references to a customer and an ordered product. Both the customer element and the product element could have a child element "ID_number". References to the element ID_number would therefore be ambiguous unless the two identically named but semantically different elements were brought under namespaces that would differentiate them.

Namespace declaration

A namespace is declared using the reserved XML attribute xmlns, the value of which must be a Uniform Resource Identifier (URI) reference.

For example:

xmlns="http://www.w3.org/1999/xhtml"

Note, however, that the URI is not actually read as an online address; it is simply treated by an XML parser as a string. For example, the document at http://www.w3.org/1999/xhtml itself does not contain any code. It simply describes the XHTML namespace to human readers. Using a URI (such as "http://www.w3.org/1999/xhtml") to identify a namespace, rather than a simple string (such as "xhtml"), reduces the possibility of different namespaces using duplicate identifiers.

It is also possible to map namespaces to prefixes in namespace declarations. For example:

xmlns:xhtml="http://www.w3.org/1999/xhtml"

In this case, any element or attribute names that start with the prefix "xhtml:" are considered to be in the XHTML namespace.