[lxml-dev] Serialization with namespaces
Stefan Behnel
stefan_ml at behnel.de
Wed Sep 12 14:54:08 CEST 2007
Stefan Behnel wrote:
> Stefan Behnel wrote:
>> Anders Bruun Olsen wrote:
>>> Now the problem occurs when I try to serialize. When I serialize the
>>> root, everything looks fine:
>>>
>>> >>> etree.tostring(root, pretty_print=True)
>>> '<topicMap xmlns="http://www.topicmaps.org/xtm/1.0/"
>>> xmlns:xlink="http://www.w3.org/1999/xlink" id="personnavnereg1">
>>> ...
>>>
>>> The XML Namespace is applied as it should. However on the topic-element
>>> that I found using XPath no XML Namespace is output:
>>>
>>> >>> etree.tostring(elem, pretty_print=True)
>>> '<topic id="abeleHenriksdatter">\n\t\t<instanceOf>\n\t\t\t<topicRef
>>> ...
>>>
>>> Even though the nsmap attribute is set correctly:
>>>
>>> >>> elem.nsmap
>>> {None: 'http://www.topicmaps.org/xtm/1.0/', 'xlink':
>>> 'http://www.w3.org/1999/xlink'}
>> Hmm, I actually thought these problems were gone with 1.3, but I can reproduce
>> this with the current trunk.
>
> Ok, so the problem here is libxml2. It serialises only the namespaces that are
> defined on the node itself, not all those that are defined in the node's context.
Here's a patch (against the trunk) that works for me. It copies the node
before the serialisation and adds all namespaces that were declared up in the
tree.
Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ns-serialisation.patch
Type: text/x-diff
Size: 3984 bytes
Desc: not available
Url : http://codespeak.net/pipermail/lxml-dev/attachments/20070912/c376e7b9/attachment.bin
More information about the lxml-dev
mailing list