Steve Loughran wrote on 06/13/2006 06:24:45 AM: > I'm now looking at the namespace aware dynamic attribute stuff > > The qname parameter for this is built up as follows: > String qName = ("".equals(uri) > ? localName : (uri + ":" + localName)); > > > this is not how, say, Qname.toString() presents qnames, which is > {http://example.org}tag > > I'd change it, but then I looked at how XmlFragment handled it, which it
> does by handing it off to the Dom element > > e.setAttributeNS(uri, qName, value); > > I dont use classic DOM. but from what the javadocs imply, this appears > wrong. the qname that Element.setAttributeNS() seems to want is a > classic prefix:value tuple, like "xmlns:name" or "ant:example". > > So really we should pass down the prefix and localname, as the uri comes > down in the namespace URI param: > > String qName = ("".equals(uri) > ? localName : (prefix + ":" + localName)); > > Am I right here? This is not shipping code so we have time to correct > it, but I'd need input from someone who knows Dom intimately enough to > get it right. Me, I use Xom :) > > -steve Steve, Yes, you are correct. The prefix value is not used when serializing and/or comparing QNames. The setAttributeNS method extracts the prefix part from the qName parameter and sets it on the Attr node (whether new or existing). The prefix is optional -- you should be able to simply pass the localName in, independent of whether the namespace is present. What I'm surprised at is that not only is this not shipping code, this code is apparently not exercised at all, since the two implementations I looked at will throw an exception if you try to use the URI as the prefix in the way that the code you quoted does. Igor -- Igor Peshansky (note the spelling change!) IBM T.J. Watson Research Center XJ: No More Pain for XML's Gain (http://www.research.ibm.com/xj/) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]