Namespace clashes?
Ronald Bourret
rbourret at ito.tu-darmstadt.de
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>"
then
> 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
www.schema.net.
> 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
that
> are a mixture of different DTD's? It's easy when they have the same
content
> model but what if "an:t" and "dn:t" are containers and have
completely
> 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
solve.
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 ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list