Namespaces are used to group elements and attributes that relate to each other in some special way. Namespaces are held in a unique URI (Uniform Resource Identifier). Note that, although it is possible that an XML schema is kept at this URI, it is not required. This can be a bit confusing. It is important to understand that a namespace is a set of rules that can be enforced by an application in whatever way the application wishes.
As an example, modern HTML editors understand the http://www.w3.org/1999/xhtml namespace. It is unlikely that these editors ever visit the URI that holds the XHTML namespace. Instead, these applications have built-in functionality to support the namespace. The main reason a URI is used is to provide a unique variable name to hold the namespace. Namespace authors should use URIs that they own to prevent conflicts with each other.