<div class="gmail_quote">On Tue, May 22, 2012 at 2:45 PM,  <span dir="ltr"><<a href="mailto:rm@tuxteam.de" target="_blank">rm@tuxteam.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">On Tue, May 22, 2012 at 12:03:40PM +0200, Raymond Wiker wrote:<br>
> On May 22, 2012, at 12:16 , <a href="mailto:rm@tuxteam.de">rm@tuxteam.de</a> wrote:<br>
> > On Tue, May 22, 2012 at 10:43:27AM +0200, Raymond Wiker wrote:<br>
> >> I'm using cxml-stp to build XML responses for a web service that implements Microsoft's "Research" API (actually, this is just a generalised search interface). While building this, I found something that looks like a bug in cxml-stp. If this is _not_ a bug, I'd be happy for any hint about what I'm doing wrong :-)<br>

> >><br>
> >> The attachment contains a small test case which builds an XML document and serializes it. The attachment should be compiled and loaded after cxml-stp has been loaded, and the commented-out test form at the end of the file should then be evaluated.<br>

> >><br>
> >> The test uses two implementations of cxml-stp-impl::collect-local-namespaces. With the original implementation, the "Status" and "Providers" elements get incorrect xmlns attributes. With the modified version, this is not the case.<br>

> >><br>
> ><br>
> ><br>
> > Sorry, I don't have much time to investigate your example, but I think<br>
> > your "fixup" is wrong. Your code (add-element ...) will put the new<br>
> > element into the namespace with namespace name "", but your "fixup" will<br>
> > emit xml that puts the element into the _default_ namespace (which, in<br>
> > your example will be "urn:Microsoft.Search.Registration.Response").<br>
> > A namespace of "" is _not_ the same as no declaration.<br>
> ><br>
><br>
> add-element calls cxml-stp:make-element, which sets the namespace to "" if it is not supplied (or nil). Thus, setting namespace-uri to "" if no uri is supplied should not make any difference (and it does not seem to do so - I just checked by defaulting namespace-uri to nil instead of "").<br>

<br>
<br>
</div></div>Yes, that first observation seemsa to be correct. But the conclusion<br>
isn't. Cxml-stp's assumption seems to be that an unspecified namespace<br>
means the namespace with uri "" (wich is a valid assumption given that<br>
every element/attribute _has_ to be in a namespace). What you seem to<br>
expect is that cxml-stp puts an element with unspecified namespace uri<br>
into the same namespace as an ancessor element somewhere up the tree<br>
whose namespace prefix is "". But the element hierarchy isn't even given<br>
during (cxml-stp:make-element ...).<br>
Iff you want "Status" to be in the "urn:Microsoft.Search.Registration.Response"<br>
namespace, then put it there. Something like:<br>
<br>
<br>
  (let ((namespace-uri "urn:Microsoft.Search.Registration.Response"))<br>
    (let ((root<br>
           (cxml-stp:make-element "ProviderUpdate" namespace-uri)))<br>
      (add-element root `("Status" ,namespace-uri) nil "SUCCESS")<br>
      ......<br><br></blockquote><div><br>Aha... thanks.<br><br>I was confused about empty namespace uris vs empty namespace tags - I wanted to create nodes that would be in the same namespace as their parent, but I now see why that would be problematic.<br>
<br>Thank you for your patience.<br><br> <br></div></div>