2

そのため、私の大学ではXPathを「修正」するという割り当てが与えられ、ノードを正しい順序で返すようになりました。

私は、非常に長いコードを記述し、各式を小さなピースに分割して、再びまとめる方法を見つけようとしてきました。

私はいくつかのアイデアを考えましたが、それらを実現するための助けが必要です:)

  1. ノードをソートして削除するXPathjar内のメソッドを見つけます-問題は、XPath jarコードを表示できるかどうかわからないことであり、オンラインで見つけることができませんでした.-それを指摘できれば、それは素晴らしいことです!

  2. http://cafeconleche.org/books/xmljava/chapters/ch16s06.htmlのトリックを実行する必要があるように見えるこのオプションを見つけました
    が、XPath 3.0のdom実装が必要であり、どこにもそのdomを見つけることができません。そのようなこと ?

  3. 他に何かアイデアがあれば聞いてみたいです!

例:このxmlの場合

 <library> 
 <book name="book1"> 
  hello 
 </book> 
 <book name="book2"> 
  world 
 </book>
 <book name="book3">
  !!! 
 </book>
 </library>

そしてこの表現:/ library / book [3] / previous-sibling :: book Im get

book1 book2

の挿入:

book2 book1

Javaプログラムでやれば何でも使えます

すべてのあなたの助けをありがとう:)

4

1 に答える 1

3

XPath 1.0では、ノードシーケンスはなく、ノードセットのみがあります。XPath 1.0仕様では、ノードセット内のノードの順序は定義されていません。多くのAPIもそれを定義していませんが、常にノードセット内のノードをドキュメント順に返します-XPathがそれを必要とするためではなく、XSLTがそれを必要とするため、XSLTはXPathエンジンがどのように動作するかについての期待を設定しました。

順序を制御できるノードシーケンスが必要な場合は、XPath 2.0(またはXPath2.0のスーパーセットであるXQuery1.0)に移行する必要があります。XPath 2.0では、次の式が必要なものを返します。

reverse(/library/book[3]/preceding-sibling::book)
于 2012-05-11T08:40:36.937 に答える