Welcome to the XML Namespaces tutorial! In this lesson, we'll explore one of the key concepts in XML, learning how to create unique element and attribute names to avoid naming conflicts in your XML documents.
An XML Namespace is a collection of XML element and attribute names used by an application. The purpose of namespaces is to prevent naming conflicts between elements and attributes from different sources.
In a real-world scenario, you might have XML documents coming from different sources. Without namespaces, it could lead to element and attribute name conflicts. Namespaces help ensure that each element and attribute is unique, and it's clear which source they belong to.
An XML Namespace is created using a URI (Uniform Resource Identifier). Although the URI doesn't need to be a valid URL, it's best to use a valid one to avoid confusion.
Here's an example of how to create an XML Namespace:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:myPrefix="http://www.example.com" xmlns="http://www.w3.org/2000/svg">
<myPrefix:myElement attribute1="value1" attribute2="value2"/>
<circle attribute1="value1" attribute2="value2"/>
</root>In this example, myPrefix is the alias for the namespace, http://www.example.com is the URI for our custom namespace, and http://www.w3.org/2000/svg is the default namespace for SVG elements.
š Note: You can choose any name for the prefix. It should be short and meaningful to make the code easier to read.
To access elements or attributes in different namespaces, use the prefix followed by the local name (element or attribute name without the namespace).
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:ns1="http://www.example1.com" xmlns:ns2="http://www.example2.com">
<ns1:myElement attribute1="value1" attribute2="value2"/>
<ns2:myElement attribute1="value1" attribute2="value2"/>
</root>In this example, to access myElement from the ns1 namespace, use ns1:myElement.
A default namespace applies to all unprefixed elements in the document. If you have elements without a namespace prefix, they will belong to the default namespace.
To declare a default namespace, use the xmlns attribute without a prefix.
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.example.com">
<myElement attribute1="value1" attribute2="value2"/>
</root>In this example, the default namespace is http://www.example.com.
What is an XML Namespace?
Why do we need XML Namespaces?