Возврат XPath правильного порядка (вставлен в порядок документов)

Так что мне дали задание в моем университете по «исправлению» XPath и получить его, чтобы вернуть узлы в правильном порядке.

Я пытался найти способ написать очень длинный код, разбить каждое выражение на маленькие кусочки и снова собрать их вместе.

Я подумал о нескольких идеях, но мне нужна помощь, чтобы воплотить их в жизнь :)

Find the method in the XPath jar that sorts the nodes and delete it - problem is i dont know if its possible to see the XPath jar code , and didnt find it online.- if you can point me to it , that would be great !

Ive found this option which looks like it should do the trick http://cafeconleche.org/books/xmljava/chapters/ch16s06.html
but it demands dom implementation of XPath 3.0 and i cant find that dom anywhere - any idea if there is such thing ?

If you have any other idea i would love to hear !

Например: для этого xml

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

и это выражение: / библиотека / книга [3] / предыдущий-брат :: книга Я собираюсь

Книга1 book2

инстед из:

book2 Книга1

Я могу использовать что угодно, если я делаю это в Java-программе

Спасибо за твою помощь :)

 Greg Inozemtsev11 мая 2012 г., 09:36
Какиеis правильный порядок? Если вы имеете в виду отсортировано, не могли бы выuse XSLT?
 Greg Inozemtsev11 мая 2012 г., 10:12
XSLT может создать документ с узлами, отсортированными в любом порядке. Но насколько я могу сказать, вы просто всегда хотите изменить порядок?
 Drau11 мая 2012 г., 09:49
Добавил пример. Я могу использовать что-нибудь, пока я пишу это в коде Java, который я не понял, как может помочь XSLT?
 Drau11 мая 2012 г., 09:31
Точка занята, все изменения внесены. :)
 Drau11 мая 2012 г., 10:24
Мне нужен порядок в соответствии с выражением, которое я оцениваю. Мой ввод - это файл xml. Я не знаю структуру файла, я не могу изменить его на XSLT.

Ответы на вопрос(1)

Решение Вопроса

В 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)
 06 июн. 2013 г., 20:18
@yedidyak: Если у вас есть проблема, тогда начните новый вопрос, который объясняет проблему.
 11 мая 2012 г., 16:56
Есть несколько продуктов, которые реализуют XQuery 1.0 или XPath 2.0 для Java, одним из которых является Saxon. Как и Димитр, я предлагаю вам немного прочитать спецификацию, прежде чем задавать какие-либо подробные вопросы; он очень мощный
 Drau11 мая 2012 г., 10:46
Хорошо, а как я могу перейти на XPath 2.0 / XQuery 1.0? Где я могу найти банку? Искал уже. это будет также работать на сложные выражения? или только знает, как поменять порядок узлов? (1,2,3,4,5 в 5,4,3,2,1)
 11 мая 2012 г., 14:29
@Drau: Одна из возможностей - получить Saxon, единственным разработчиком которого является Майкл Кей. И, конечно же, получите хорошую книгу по XPath 2.0 и начните обучение.
 13 мая 2012 г., 20:20
Извини за это. Если кто-то попросит помощи в ремонте газового котла, то перед тем, как ответить на вопрос, я попытаюсь выяснить, стоит ли ему советовать выполнить эту задачу. Конечно, у меня не так много дел, поэтому я вполне могу ошибиться.

Ваш ответ на вопрос