XML namespaces are a W3C recommendation for providing uniquely named elements and attributes in an XML instance. 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.
All element names within a namespace must be unique.
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 URI (Uniform Resource Identifier) 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, http://www.w3.org/1999/xhtml itself does not contain any code, it simply describes the xhtml namespace to human readers. Using a URL (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.