Экспресс XPath как дерево выражений

Если у меня есть запрос 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 недоступен, что будет лучшим подходом? Заранее спасибо.


person 47d_    schedule 18.05.2010    source источник
comment
Хороший вопрос (+1). Смотрите мой ответ для некоторых ведет.   -  person Dimitre Novatchev    schedule 19.05.2010


Ответы (1)


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

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

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

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

http://www.freeimagehosting.net/uploads/c85e730293.png

person Dimitre Novatchev    schedule 18.05.2010
comment
Спасибо. Я оцениваю инструмент. - person 47d_; 19.05.2010