Re: [xslt] [PATCH] Bug: xsltCompilePattern : failed to compile '@node()'
- From: Daniel Veillard <veillard redhat com>
- To: The Gnome XSLT library mailing-list <xslt gnome org>
- Subject: Re: [xslt] [PATCH] Bug: xsltCompilePattern : failed to compile '@node()'
- Date: Thu, 17 Sep 2009 15:24:18 +0200
On Sat, Jul 11, 2009 at 07:40:05PM +0200, Nick Wellnhofer wrote:
>
> I have always used match="@*" which works as expected.
>
> But, being curious, I had a deeper look at xsltCompileStepPattern. The problem is that "@node()", "attribute::node()", "child::node()" and "node()" are all handled in different code paths and only the latter works.
>
> Then, I noticed that the handling of match="child::name" is wrong. It matches the parents of <name> elements although it should be treated exactly like match="name". So the whole XSLT_OP_CHILD stuff is unneeded.
>
> I also found that xsltScanName behaves a bit strange with regard to ':' characters. It doesn't parse an XML Name like the documentation says. It's better to use xsltScanNCName instead.
>
> Another minor issue is that the parser currently allows invalid expressions like match="element*" because of lines 1745-1747 in pattern.c in trunk.
>
> Attached is a patch against trunk that fixes all these issues. It merges the parsing of NodeTests in StepPatterns into a single code path keeping track of the axis that has been specified previously. The patch also contains some test cases.
Good analysis and excellent patch ! This does clean things up a lot !
Aplied and pushed to git head. The only change I had to make was to add
the new regression tests in tests/REC/Makefile.am :-)
Thanks a lot !
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel veillard com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]