返回XPath正确的顺序(文档顺序的insted)

所以我已经在我的大学里给了一个“修复”XPath的任务,让它以正确的顺序返回节点。

我一直试图找到一种方法来编写一个很长的代码,并将每个表达式分解为很少的和平并再次将它重新组合在一起。

我想过一些想法,但我需要帮助让它们发生:)

  1. 在XPath jar中找到对节点进行排序并删除它的方法 – 问题是我不知道是否可以看到XPath jar代码,并且没有在网上找到它.-如果你可以指向我,那就太棒了!

  2. 我发现这个看起来应该做的选项http://cafeconleche.org/books/xmljava/chapters/ch16s06.html
    但它要求dom实现XPath 3.0,我无法在任何地方找到dom – 任何想法,如果有这样的事情?

  3. 如果您有任何其他想法,我很乐意听到!

例如:对于这个xml

  hello   world   !!!   

这个表达式:/ library / book [3] / preceding-sibling :: book我得到了

book1 book2

绝于:

book2 book1

只要我在java程序中执行它,我就可以使用任何东西

谢谢你的帮助 :)

在XPath 1.0中,没有节点序列,只有节点集。 XPath 1.0规范未定义节点集中节点的顺序。 许多API也没有定义它,但是它们总是以文档顺序返回节点集中的节点 – 不是因为XPath需要它,而是因为XSLT需要它,而XSLT已经设定了对XPath引擎应该如何表现的期望。

如果您希望节点序列能够控制排序,则必须转到XPath 2.0(或XQuery 1.0,它是XPath 2.0的超集)。 在XPath 2.0中,以下表达式返回您想要的内容:

 reverse(/library/book[3]/preceding-sibling::book)