【发布时间】:2019-03-13 10:20:33
【问题描述】:
我有一个如下所示的 XPath 表达式。
if(replace(//p[1]/text(),'H','h') = 'hello') then //p[1]/text() else if(//p[1]/text() = 'world') then //p[2]/text() else 'notFound'
我想显示哪个 'if' 表达式有效。
e.g //p[1]/text() if first 'if' expression worked.
'If' 表达式可以嵌套 if、for 循环和 xpath2.0 函数。
我找不到任何用于 python 的 xpath2.0 库。所以我尝试将这个 Js library 转换为 python 仍然可以将 xpath2.0 表达式拆分为词法分析器,但不能将其完全转换为 python。
如果有的话,给我推荐一些用于 python 的 Xpath2.0 库。 还有如何解释 XPath 表达式并显示表达式的哪一部分起作用?
【问题讨论】:
-
是的,我试过了。它仅支持 xpath1.0 表达式,我对其进行了扩展以支持 xpath 2.0 函数,例如替换、标记化,但无法评估 'if' 和 'for' 表达式。
-
Saxon 9.8 支持 XPath 3 和 2,并且可以在 saxonica.com/download/c.xml 获得 Saxon/C 版本,因此其他 Python 库是用 C 编写的,因此可以基于Saxon/C,至少对于 XPath 2/3 评估,不确定您将深入研究 XPath 实现。
标签: python xpath xslt-2.0 xpath-2.0