将XPath表达为表达式树

时间:2010-05-18 21:18:13

标签: xpath tree expression

如果我有像

这样的XPath查询
NodeA/NodeB[@WIDTH and not(@WIDTH="20")] | NodeC[@WIDTH and not(@WIDTH="20")]/NodeD

是否有任何API可用于将此XPath查询可视化为一堆原子表达式,类似于(以下是通用的)

  1. 获取NodeA的结果,称之为“第一套”
  2. 从“第一套”
  3. 获取NodeB的结果
  4. 过滤[@WIDTH而不是(@ WIDTH =“20”)]
  5. 过滤节点D,将此节点称为“节点d代表B”
  6. 从“第一套”
  7. 获取NodeC的结果
  8. 过滤[@WIDTH而不是(@ WIDTH =“20”)]
  9. 过滤NodeD,将其称为“节点d代表C”
  10. 将“节点d代表B”和“节点d代表C”
  11. 组合

    我试图看看我们是否可以将XPath表达式转换为接近英语的自定义表达式,反之亦然。

    如果没有可用的API,那么最好的方法是什么? 提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用任何开源XPath解析器并根据您的需要对其进行自定义,但这可能非常具有挑战性。

XQuery具有基于XML的表示 XQueryX ),这完全涵盖了XPath 2.0。然而,人们必须用这种XML表示来写,而不是相反。我不知道XQuery和XQueryX之间的翻译器。如果存在,它将接近满足您的需求。

更新:有这样的翻译工具:W3C XPath/XQuery Applets。请特别注意 Grammar Test Page for XPath 2.0

以下是该工具的工作原理:

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