Re: [xml] proximity position in libxml2's xmlXPathEvalExpression()

On Wed, Oct 18, 2006 at 11:14:18PM +0200, Marius Konitzer wrote:
Consider the following XML document:

<test><!-- a --><somenode><!-- b --></somenode><!-- c --></test>

and let libxml2 evaluate the XPath expression "//comment()" on it.
libxml2 returns node-set (a,c,b) instead of (a,b,c), that I would have
expected. To be exact, "(//comment())[2]" gives singleton (c) instead of
the expected (b).
W3C's XPath recommendation indeed states, that predicates are to
determine "the position of the node in the node-set ordered in document
order if the axis is a forward axis" [1], which should be the case here.

Don't hesitate to call me a fool for this stupid-looking question, I
probably just got something terribly wrong, right?

  Not really, seems you hit a bug when element are not pre-ordered.
Please create a bugzilla for this, I guess it's limited to comments
(and possibly PIs) 

There is a good workaround, call xmlXPathOrderDocElems() on your
document before running XPath queries on it, that fixes it and will
speed up some XPath operations a lot.


Red Hat Virtualization group
Daniel Veillard      | virtualization library
veillard redhat com  | libxml GNOME XML XSLT toolkit | Rpmfind RPM search engine

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]