XML - XML Namespaces – Advanced Usage
Introduction
XML Namespaces are used to avoid element name conflicts when combining XML documents from different sources. When multiple XML vocabularies are used together, two elements may have the same name but different meanings. Namespaces provide a unique identity to each element and attribute.
Example problem:
Two systems may use the element <table>:
-
Furniture information
-
Database table information
Namespaces help distinguish between them.
Basic Namespace Concept
A namespace is declared using the xmlns attribute.
Example:
<book xmlns="http://example.com/books">
<title>XML Guide</title>
</book>
Here, all elements belong to the namespace http://example.com/books.
The namespace URI acts as a unique identifier. It does not need to be a real website.
Namespace Prefixes
Instead of applying one namespace to all elements, prefixes can be used.
Example:
<library xmlns:bk="http://example.com/books"
xmlns:au="http://example.com/authors">
<bk:title>XML Basics</bk:title>
<au:name>Ravi Kumar</au:name>
</library>
Explanation:
-
bkandauare prefixes. -
Each prefix represents a different namespace.
-
Elements are uniquely identified.
Default Namespace
A default namespace applies automatically to all elements without a prefix.
Example:
<library xmlns="http://example.com/library">
<book>
<title>Learning XML</title>
</book>
</library>
All elements belong to the same namespace.
Multiple Namespaces in One Document
XML allows mixing multiple namespaces.
Example:
<root xmlns:html="http://www.w3.org/TR/html4/"
xmlns:furn="http://example.com/furniture">
<html:table>
<html:tr>
<html:td>Data</html:td>
</html:tr>
</html:table>
<furn:table>
<furn:name>Wooden Table</furn:name>
</furn:table>
</root>
Here:
-
HTML table and furniture table are different elements.
-
Namespace prefixes prevent confusion.
Namespace Scope
Namespaces apply only within the element where they are declared and its child elements.
Example:
<parent xmlns:a="http://example.com/a">
<a:item>Valid</a:item>
</parent>
Outside the parent element, prefix a is not valid.
Namespaces for Attributes
Namespaces can also be used with attributes.
Example:
<book xmlns:info="http://example.com/info"
info:id="B101">
</book>
Attributes must use prefixes if they belong to a namespace.
Advanced Usage Scenarios
1. Combining Different XML Standards
Namespaces allow integration of standards like:
-
XHTML
-
SVG
-
MathML
inside one XML document.
2. Web Services and SOAP
Namespaces identify message structures in web services communication.
3. XML Schema Validation
Schemas use namespaces to validate elements correctly.
Common Mistakes
-
Assuming namespace URI must exist online.
-
Forgetting prefixes during XPath queries.
-
Mixing default namespace and prefixed namespace incorrectly.
-
Expecting attributes to inherit default namespace automatically.
Advantages of XML Namespaces
-
Prevents element name conflicts.
-
Enables reuse of XML vocabularies.
-
Supports large enterprise XML systems.
-
Improves interoperability between applications.
Conclusion
Advanced XML Namespace usage allows developers to merge multiple XML vocabularies safely in one document. It plays an important role in web services, data exchange, XML schemas, and large-scale XML integration systems.