Er *_*Ram 10 python xpath xslt-2.0 xpath-2.0
我有一个 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'
Run Code Online (Sandbox Code Playgroud)
我想显示哪个 'if ' 表达式有效。
e.g //p[1]/text() if first 'if' expression worked.
Run Code Online (Sandbox Code Playgroud)
'If' 表达式可以嵌套 if、for 循环和 xpath2.0 函数。
我找不到任何用于 python 的 xpath2.0 库。因此,我尝试将此 Js库转换为 python,但我仍然可以将 xpath2.0 表达式拆分为词法分析器,但无法将其完全转换为 python。
如果有的话,建议我一些用于 python 的 Xpath2.0 库。另外如何解释 XPath 表达式并显示表达式的哪一部分有效?
wp7*_*8de 12
如您所知,lxml是 Python 的 XML/XPath 支持的基石,仅具有
XPath 1.0、XSLT 1.0 和 EXSLT 扩展,通过 libxml2 和 libxslt
我们还有一些选择。
我最近研究了这个话题(特别是 Python 的 XQuery 支持)。
请参阅 W3C 以获取XML 查询实现的参考列表。
带有 XPath 2+ 和 EXSLT 扩展的 Python 模块(例如,用于正则表达式匹配的EXSLT)PiPy 上
有一些模块部分提供 XPath 2.0+ 功能。
有一些 OSS XML/NoSQL-DBMS 实现了 XPath/XQuery 2.0 功能,例如
我相信Saxon/C (by Michael Kay ) 和 Cython 是最有前途的道路。
在使用Boost.Python和pysaxon之前尝试过它。
更新:同时发布了 Python 3 的 Saxon/C 扩展。
您可以使用子进程来调用 CLI XML 处理器(如建议here),例如subprocess.call(["saxon", "-o:output.xml", "-s:file.xml", "file.xslt"])
另一种选择是将XSLT /XPath/XQuery 与Jython 中的saxon 和/或其他Java XML 类一起使用。
最后,您可以设置一个 Web 服务,用 Java、.NET 等语言为您完成繁重的工作,并提供适当的 XPath 3+ 支持(Kay在这里也建议)。
仍然有些令人失望,尤其是对于像 Python 这样的大语言。
| 归档时间: |
|
| 查看次数: |
3602 次 |
| 最近记录: |