[Home] [By Thread] [By Date] [Recent Entries]
On Mon, 2002-01-07 at 22:41, Elliotte Rusty Harold wrote: > Correct, DOM does not do that. When creating an element in the > http://www.foo.com/ namespace, DOM2 does not add an > xmlns="http://www.foo.com/" in the right place to make this work. > Section 1.1.8 states:... Having just built an object model (MOE - http://moe.sourceforge.net) that supports namespace-aware names, I'm happy to testify that this is not a simple problem, nor does it have a single clear answer. The variety of options in SAX2 for handling namespaces (or not) is also testimony to the difficulty of making namespace declarations work auto-magically. > In other words, what should happen is that any code that moves DOM to > some other model such as SAX, XPath, or a text file should insert the > necessary namespace declarations. What actually does happen though, > is that such code often neglects to insert them, thus requiring users > to add the attributes in DOM manually. This is a big honking mess. The only sane approach I've found is to use a visitor class to traverse the document and maintain a list of namespace declarations that have been made, so that when a new declaration is needed, it appears. I don't think expecting the object model itself to handle this is plausible or workable, especially given issues like fragment serialization. (You can have the objects themselves refer to the visitor class for toString() and the like, but it's still a tricky process.) Alternate approaches include things like having elements declare their namespaces and those of their attributes every time. It does produce easily-decomposed XML documents, but it's not especially pretty as a general strategy. > It gets even nastier when you consider the possibility of namespaces > being in scope on things other than element and attribute names, > since DOM really can't keep track of these at all. Yes, though I've argued long and hard that those QName usages are a wretched idea in the first place. -- Simon St.Laurent Ring around the contents, a pocket full of brackets Errors, errors, all fall down.
|

Cart



