The first thing you'll need to understand are XML namespaces. If you have some time to waste, you could read the specification. I found this to be one of the clearer specs related to XML. It doesn't matter if you don't understand everything it says, it's a good basis. But here's a quick rundown.
XML elements and attributes have a name. When you see <test att="hello"/>, you're looking at an element with name "test", in which we have an attribute with name "att". But this isn't really the entire story...
XML is a syntax that allows you to mix content from different markup languages. For example, when using XSLT to turn an XML document into an XHTML page, you're dealing with at least three markup languages defined in XML: your input document's, XSLT and XHTML. Such mixes would become rather hard if each one reserved its own element/attribute names and no collisions were ever allowed.
Enter XML namespaces. An XML namespace defines a "sphere" within which element and attribute names have actual semantics. The element "template" has a well-defined meaning in the XSLT namespace. The element "complexType" has a well-defined meaning in the XML Schema namespace. If you wish to use either in your own markup language using XML, then that's possible provided you do so in a different namespace.
In order to make sure a namespace is unique, you'll need to provide some unique identifier. The specification settled on the use of URIs, most often in the form of a HTTP URL. The reason for this is simple: such URLs tend to be good unique identifiers. But it's also a very common cause for confusion because people think the URLs really hold meaning or will be accessed over the network during XML processing. Know very well that this is not the case! The URL is not required to point to any existing resource. It will not go through any transformation or be
answered 2011-11-22T17:46:21.227