所以我在我的大学里接到了一个"修复"XPath的任务,并让它以正确的顺序返回节点。
我一直在试图找到一种方法来编写一个很长的代码,并将每个表达式分解成小和平,然后重新组合在一起。
我想到了一些想法,但我需要帮助使它们发生:)
-
在 XPath jar 中找到对节点进行排序并删除它的方法 - 问题是我不知道是否有可能看到 XPath jar 代码,并且没有在网上找到它.- 如果你能指出我,那就太好了!
-
我发现这个选项看起来应该可以解决问题
http://cafeconleche.org/books/xmljava/chapters/ch16s06.html但它需要 DOM 实现 XPath 3.0而且我在任何地方都找不到那个 dom - 知道是否有这样的事情吗? -
如果您有任何其他想法,我很想听听!
例如:对于这个 xml
<library>
<book name="book1">
hello
</book>
<book name="book2">
world
</book>
<book name="book3">
!!!
</book>
</library>
和这个表达式:/library/book[3]/preceding-sibling::book我得到
册1书2
而不是:
书2册1
只要我在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)