In the below test script, I'm not getting the result I expect.
Is this a bug in lxml? If not, what am I doing wrong?
I'm using lxml 3.1.1 on win32, downloaded from PyPi.
What I get:
<root xmlns="url1">
<test attrib="value"/>
</root>
I expect attrib to not lose its namespace, as shown when I re-parse the
output:
>>> lxml.etree.parse('test.xml').getroot()[0].attrib
{'attrib': 'value'}
If I swap the append and the attribute setting, things work:
<test xmlns:ns0="url1" ns0:attrib="value"/>
>>> lxml.etree.parse('test.xml').getroot()[0].attrib
{'{url1}attrib': 'value'}
If this is intended behaviour, I'll have to see how to fit that into my
design, since my functions return elements ready for appending.
from lxml import etree
nsmap = {None: 'url1'}
root = etree.Element('{url1}root', nsmap=nsmap)
test = etree.Element('{url1}test')
test.attrib['{url1}attrib'] = 'value'
root.append(test)
print etree.tostring(root, encoding='utf-8', pretty_print=True)