Экспресс XPath как дерево выражений - PullRequest
1 голос
/ 19 мая 2010

Если у меня есть запрос XPath, такой как

NodeA/NodeB[@WIDTH and not(@WIDTH="20")] | NodeC[@WIDTH and not(@WIDTH="20")]/NodeD

Имеется ли какой-либо API для визуализации этого запроса XPath в виде стека атомарных выражений, что-то вроде (следующее является универсальным)

  1. Получите результаты NodeA, назовите его «первый набор»
  2. Получить результаты NodeB из "первого набора"
  3. Фильтр, где [@WIDTH, а не (@ WIDTH = "20")]
  4. Фильтр NodeD, назовите этот «узел d для B»
  5. Получить результаты NodeC из "первого набора"
  6. Фильтр, где [@WIDTH, а не (@ WIDTH = "20")]
  7. Фильтр NodeD, назовите этот «узел d для C»
  8. Объедините «узел d для B» и «узел d для C»

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

Если API недоступен, что будет лучшим подходом? Заранее спасибо.

1 Ответ

1 голос
/ 19 мая 2010

Вы можете использовать любой анализатор XPath с открытым исходным кодом и настроить его под свои нужды , но это может быть довольно сложно.

XQuery имеет представление на основе XML ( XQueryX ), и это полностью охватывает XPath 2.0. Однако люди должны писать в этом представлении XML, а не наоборот. Я не знаю о переводчике между XQuery и XQueryX. Если бы такие существовали, это было бы близко к удовлетворению ваших потребностей.

Обновление : Существует такой инструмент перевода: Апплеты XP3 / XQuery * W3C . Особенно см. Страницу тестирования грамматики для XPath 2.0 .

Вот как работает инструмент:

альтернативный текст http://www.freeimagehosting.net/uploads/c85e730293.png

...