Namespace clashes?

Ronald Bourret rbourret at
Wed Feb 3 11:54:36 GMT 1999

> Imagine A, B, C, D and E and all users of some XML data. A and B exchange 
> data and agree to use A's namespace and that "<an:t>title</an:t>" is a
> book title (among other things).
> Elsewhere, C and D also exchange data and agree to use D's namespace and
> that "<dn:t>title</dn:t>" is a book title.
> 1. E comes along and wants to create data and exchange data with A, B, C
>    and D. What does E use? If E creates a new NS "<en:t>title</en:t>" 
>    A, B, C and D have to update there procedures to cater for this?

E should use <an:t> to exchange data with A and B and <dn:t> to exchange 
data with C and D. If E creates their own DTD, then everybody who wants to 
exchange data with E needs to update their software, which is unlikely to 
make E very popular.  A much better solution is to get everybody (A-E) to 
agree on a single set of tags in the first place.

> 2. Is there going to be (or is there) a registry for URI and tags so that 
>    this can be avoided?

There are some DTD (tag) registries already -- for example, see

> 3. Is there some way to "alias" names so that you can say that "an:t",
>    "dn:t" and "en:t" are all the same (or is this up to the application)?

I believe that architectural forms allow you to do this, but I'm not sure.

> 4. How do you validate a document that may contain tag's and attributes 
>    are a mixture of different DTD's? It's easy when they have the same 
>    model but what if "an:t" and  "dn:t" are containers and have 
>    different content models?

With current parsers, you need to make sure that the same prefixes are used 
in both the DTD and the document.  That "an:t" and "dn:t" have different 
content models is not a problem for validation -- they are different 
elements and have different names.  Differentiating between two different 
elements with the same name (whether they represent the same real-world 
information or not) is exactly the problem that namespaces were designed to 

Note that an application needs to treat "an:t" and "dn:t" differently, just 
as it would treat "an:t" and "an:xxx" differently.  The fact that both 
represent a title is the application's problem and must be solved in the 
application.  As mentioned above, a simple (but not always easy) way to do 
this is to get A-E to agree on a single DTD.

In general, namespaces will more likely be used to differentiate between 
elements from two different DTDs that cover different subject areas but use 
the same names, such as when <Title> means book title in one DTD and job 
title in another DTD.  This becomes a problem when somebody creates a new 
DTD that reuses both of these DTDs.

-- Ron Bourret

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as: and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at

More information about the Xml-dev mailing list