[
Lists Home |
Date Index |
Thread Index
]
- From: Wayne Steele <xmlmaster@hotmail.com>
- To: xml-dev@lists.xml.org
- Date: Tue, 08 Aug 2000 13:36:30 -0700 (PDT)
Problem:
What we _REALLY_ want is for DTDs to "know about" namespaces; to treat
"p:foo", "p1:foo", and "foo" differently or indentically depending on the
namespace declarations in scope.
This is really hard, and probably impossible to do without reworking DTDs.
I think most people would accept, as a compromise, restricting
themselves to a one-to-one mapping of prefix to namespace, if they could
somehow inform the DTD of the proper prefix for each namespace (each
document gets to make its own mapping). It would be nice to allow a
many-to-one mapping.
The question then becomes: How do you "inform" the DTD of the proper
prefix for this instance document?
Solution:
One solution that's been discussed here is using the internal
subset of the instance document, to "inform" the DTD through
redeclaration of certain Entities.
Careful use of Entity Refs in the DTD just barely allow you to get by with
this.
Solution #2:
This Just occured to me: The System Identifier! Since it's a
URI, it has lots of room for sneaking stuff into it.
Instead of having a URI like
"http://example.org/DTDs/MyDTD"
you could use
"http://example.org/ProtoDTDs/MyProtoDTD?svg=http%3A%2F%2fwww.w3.org%2F2000%2Fsvg"
The web server would have to:
a. get the ProtoDTD
b. send it through a ProtoDTD-to-DTD processor, with this param:
svg=http://www.w3.org/2000/svg
c. return the new DTD to the requestor.
For offline work, or without a whole web server:
Instead of using the System Identifier
"file:c:/DTDs/MyDTD"
I could set up a different URL handler, and use:
"ProtoDTD:svg=http%3A%2F%2fwww.w3.org%2F2000%2Fsvg@file:c:/DTDs/MyDTD"
to do the same thing.
The only downsides I can think of are:
Someone has to actually write the code to do this (shouldn't be too hard)
Comparing the System Identifiers of XML documents becomes much more
complicated
It makes the System Identifier really verbose and ugly.
What do you think?
-Wayne Steele
________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
|