![](https://secure.gravatar.com/avatar/3173e2ae99b980708880a85092da271e.jpg?s=120&d=mm&r=g)
Quoting Douglas Crosher (dtc@scieneer.com):
o Add support for including the namespace URI in the element and attribute names.
Thanks, that was a long-standing issue. Checked in with a few changes:
+(defun make-xmls-builder (&key (include-default-values t) + (include-namespace-uri nil))
Applied with default (include-namespace-uri t).
+ when (and (or (sax:attribute-specified-p attr) + include-default-values) + (or (not include-namespace-uri) + (not attr-namespace-uri) + attr-local-name))
What is the (or ..) test for? IIUC, it currently removes declarations for the default namespace (xmlns="a") but not declarations for other namespaces (xmlns:b="a"). If removal of namespace declarations was the idea of this test, it should probably affect all of them, but only if *include-xmlns-attributes* is false. Applied without the OR.
+ (t + (let ((lq (length qname)) + (ll (length local-name))) + (if (eql lq ll) + nil + (subseq qname 0 (- lq ll 1)))))))
Changed to use just qnames in this mode. The old mode with pairs of local name and prefix was useless. Finally, I have changed serialization (CXML-XMLS:MAP-NODE) to also distinguish between the two representations. With namespace URI, we run the events through the namespace normalizer, which invents prefixes for us. Without namespaces, we continue to generate namespace-less SAX events, which are suitable for normal serialization purposes (but nothing else, really).