Big fixes of pattern compilations
authorNick Wellnhofer <wellnhofer@aevum.de>
Thu, 17 Sep 2009 13:23:46 +0000 (15:23 +0200)
committerDaniel Veillard <veillard@redhat.com>
Thu, 17 Sep 2009 13:23:46 +0000 (15:23 +0200)
commit3d435b25cf2e8112d87cb133c00b94d5924ec75c
tree921e0c62276d311b3061d71d5858dcb56d008b50
parentd65daeaf651adde15a9f34d93d8cf3f3303303ff
Big fixes of pattern compilations

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.

* libxslt/pattern.c: fix all those problems
* tests/REC/Makefile.am tests/REC/test-5.2-19* tests/REC/test-5.2-20*
  tests/REC/test-5.2-21*: add test cases to the regression suite
libxslt/pattern.c
tests/REC/Makefile.am
tests/REC/test-5.2-19.out [new file with mode: 0644]
tests/REC/test-5.2-19.xml [new file with mode: 0644]
tests/REC/test-5.2-19.xsl [new file with mode: 0644]
tests/REC/test-5.2-20.out [new file with mode: 0644]
tests/REC/test-5.2-20.xml [new file with mode: 0644]
tests/REC/test-5.2-20.xsl [new file with mode: 0644]
tests/REC/test-5.2-21.out [new file with mode: 0644]
tests/REC/test-5.2-21.xml [new file with mode: 0644]
tests/REC/test-5.2-21.xsl [new file with mode: 0644]