我有一个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表达式并显示表达式的哪个部分有效?
正如您所知,lxml是Python XML / XPath支持的基石,仅具有特色
XPath 1.0,XSLT 1.0和通过libxml2和libxslt的EXSLT扩展
我们还有一些选择。
我最近研究了这个主题(特别是Python的XQuery支持)。 有关XML Query Implementations的参考列表,请参阅W3C。
subprocess.call(["saxon", "-o:output.xml", "-s:file.xml", "file.xslt"])
仍然有点令人失望,尤其是像Python这样的大语言。
正如马丁所提到的,我们有一个用于C / C ++ / PHP语言的Saxon产品,称为Saxon / C,已有几年了。我们一直看到用户对使用Saxon / C和Python感兴趣。
一个用户已成功使用Boost.Python与我们的C ++库进行交互。另一个用户以不同的方式完成了接口:https://github.com/ajelenak/pysaxon
我们希望为Python提供一个官方的Saxon / C接口。