[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: AND (Another Namespace Dilemma) ... DTD Validation
- From: "Thomas B. Passin" <email@example.com>
- To: firstname.lastname@example.org
- Date: Fri, 10 Aug 2001 01:16:28 -0400
> OK, I've been watching Namespaces threads looking for this answer, but no
> one seems to have yet hit the head of this particular nail. So ... if
> Namespace prefixes are irrelevant, how do I write a (namespace-aware) DTD
> to validate a document instance? Take the following for example:
> <furn:Table xmlns:furn="urn:org-furniture-household">
> <html:TABLE xmlns:html="http://www.w3.org/1999/xhtml">
> ... other table entries for top, legs, etc. ...
> Now I can write a DTD for all the "furn" elements with or without the
> "furn:" prefix (although it's a pain), using something like:
> <!ELEMENT (Table | furn:Table) (Parts | furn:Parts)> etc., etc.
> (hmmm, can I still do that with XML? Well, another topic)
> But if I don't know what prefix is going to be used there's no hope of
> validating an instance. Am I missing something?
That's basically so for a DTD, but not for an XML-schema. On the other
hand, using a DTD could still work if you are willing to preprocess the data
to fix up the prefix, or to adjust the value of a parameter entity that the
DTD would use for the prefix. There are some rather complicated schemes for
using parameter entities to make the DTD work as desired, but if your prefix
can change I don't see how to avoid the preprocessing step to learn what
actual prefix is being used.
> I also don't see right off how W3C XML Schemas (can't we just call this
> XSD?) will help, but I'm more hopeful of built-in support there. HELP!
Unlike a dtd processsor, an XML-Schema processor understands that the prefix
is an alias for a namespace, and as long as the namespace itself is correct
will be happy if you change the prefix (AFAIK). XML-Schema will not
understand if you change that prefix in the middle of a document, though.
Also, there might be all kinds of complicated subtleties about the prefixes
depending on just what you try to do. But if you want to do normal
uncomplicated things in the schema, it should work all right.