[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [xml] Missing namespace prefix after xmlReconciliateNs
- From: Stefan Behnel <stefan_ml behnel de>
- To: "Landl, Martin" <Martin Landl fabasoft com>
- Cc: xml gnome org
- Subject: Re: [xml] Missing namespace prefix after xmlReconciliateNs
- Date: Sun, 27 Jul 2008 10:39:24 +0200
Hi,
Landl, Martin wrote:
> I think the function xmlReconciliateNs is buggy in a certain situation,
> where an attribute lies in a defined namespace which is - at the same
> time - the default namespace.
>
> xmlns="urn:test:AAA"
>
> xmlns:a="urn:test:AAA"
>
> The functions seems to strip the attribute of its namespace prefix. This
> would be correct for nodes, but is wrong for attributes. According to
> XML spec an attribute without a namespace prefix does NOT mean the
> attribute has the default namespace.
I wrote a highly customised version of that function for lxml. Look out for
the "moveNodeToDocument()" function in
http://codespeak.net/svn/lxml/trunk/src/lxml/proxy.pxi
AFAIR, I tackled the problem of the OP in two places, one being the function
above and the other place being the creation of a child element, where we
originally moved a namespaced attribute into the default namespace during
namespace cleanup. We now always declare the default namespace last, so that
later namespace cleanups hit a prefixed version of that namespace before the
non-prefixed declaration.
That is done because the problem is not necessarily in xmlReconsiliateNs(),
but may just be the serialisation. It doesn't output a prefix for attributes
in the default namespace, which is a problem if they occur in prefixed elements.
Stefan
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]