|
[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Namespaces hate validation!
Murray Maloney wrote: > Everything that follows this point is predicated on the > assumption that one can have such a DTD, but later Tim > makes it clear that it is not currently feasible to design > such a DTD. Au contraire: we of DDML (formerly XSchema) *have* designed such a DTD. The DDML DTD uses two namespaces, DDML and IBTWSH (which latter does not use prefixes, in the name of HTML compatibility, but is a true namespace anyway). What we do not have is a *algorithmic* way of building such a DTD. I doubt we ever will, as *judgment* is required to decide when elements imported from other namespaces are to be allowed. Merging two DTDs intelligently is no easier (but no harder, IMHO) than designing content models in the first place: an "AI-complete" problem. > >5. You preprocess the DTD, rewriting all the element & attribute > > declarations with the appropriate prefixes > > Using special care to take into account the non-XML notion > of "global attributes". There is nothing particular about global attributes: from a purely XML 1.0 viewpoint, they are ordinary attributes that happen to have a ":" in their names. Their prefixes must be munged just like element prefixes. > >6. You preprocess the instance, making all namespace prefixes > > explicit (no defaulting), declaring all the namespaces on the root > > element, and using the same set of prefixes you used in the DTD > > Of course, this will not work for instances that redeclare > a namespace prefix with a different URI for the purposes > of local scoping of namespaces. In that case, you have to > declare namespaces on elements as you go. Not at all. With appropriate renamings of prefixes, you can move all nested prefixes out to the outermost element. For example: <root> <foo:a xmlns:foo="http://yadda.yadda"> <foo:b/> <foo:c xmlns:foo="http://bongo.bongo"> <foo:d/> </foo:c> </foo:a> </root> which uses two different namespaces with the prefix "foo", can be rewritten without loss of generality as: <root xmlns:foo1="http://yadda.yadda" xmlns:foo2="http://bongo.bongo"> <foo1:a> <foo1:b/> <foo2:c> <foo2:d/> </foo2:c> </foo1:a> </root> > [Y]ou would have to inspect the entire document to determine > whether local scoping of namespaces has been applied [...]. So you would. But nothing says Tim's algorithm can't be two-pass, as indeed it must be: one pass to scan for namespace declarations, and another pass to output the root element with all correctly munged declarations and then all elements and attributes with munged prefixes correctly applied. Given a tree API like the DOM, it is not necessary (though it may be preferable) to actually parse the instance twice. > Well, tedious enough to make it unlikely that anyone will use > validation on documents that utilize namespaces. It is hard. > It is too hard. It is hard until someone writes a tool to do it. I would do it now if I had an easy-to-use DTD analyzer in Java. > Murray Maloney, Esq. Phone: (905) 509-9120 > Muzmo Communication Inc. Fax: (905) 509-8637 > 671 Cowan Circle Email: murray@m... Hmm. Pity I can't list my address as "Maloney Square" for symmetry. :-) -- John Cowan http://www.ccil.org/~cowan cowan@c... You tollerday donsk? N. You tolkatiff scowegian? Nn. You spigotty anglease? Nnn. You phonio saxo? Nnnn. Clear all so! 'Tis a Jute.... (Finnegans Wake 16.5) xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@i... Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ To (un)subscribe, mailto:majordomo@i... the following message; (un)subscribe xml-dev To subscribe to the digests, mailto:majordomo@i... the following message; subscribe xml-dev-digest List coordinator, Henry Rzepa (mailto:rzepa@i...)
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|
|||||||||

Cart








