← Prev in month ← Prev in thread

GenX and attribute QNames

From
Simon Fell <>
To
Date
2004-03-10T17:50:16Z
ID
<>
Thread
GenX and attribute QNames
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
← Prev in month ← Prev in thread