[Home] [By Thread] [By Date] [Recent Entries]

  • To: xml-dev@l...
  • Subject: GenX and attribute QNames
  • From: Simon Fell <xml@z...>
  • Date: Wed, 10 Mar 2004 09:50:16 -0800
  • User-agent: Mozilla Thunderbird 0.5 (Windows/20040207)

Hi,

I've been looking at Tim Bray's GenX library in order to generate 
canonicalized SOAP messages, and i can't see how to handle attributes 
whose value is a QName, e.g. i need to generate this element
<p1 xsi:type='xsd:int'
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xmlns:xsd='http://www.w3.org/2001/XMLSchema'>1</p1>

I used genxDelcareNamespace to declare the xsd namespace, but it looks 
like GenX doesn't write it to the stream unless it see's it being used, 
so i end up with
<p1 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xsi:type='xsd:int'>1</p1>

Tim said
 > On the face of it, the obvious thing seems to be to add a call
 >
 >  genxAddQname(genxWriter w, genxNamespace n, utf8 value);
 >
 >Got a better idea?
 >
 >Oops, this has the potential of breaking Canonical XML.
 >
 >I *HATE* qnames in content, bah.

On a related note, I'd like to serialize out a number of namespace 
declarations in my root element in order to reduce the number of times a
particular namespace needs declaring (in soap you tend to get a number 
of sibling elements all using the same namespace, but no parent elements 
using it, so it ends up being declared on every sibling, massively 
increasing the message size).

Othen than pointing out how evil QNames in content are, anyone have any 
suggestions on how these things might be incorporated into the API 
without breaking the canonicalization ?

Thanks
Simon
www.pocketsoap.com

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member