You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Nokogiri独立评估XSLT表达式?

如何用Nokogiri正确评估EXSLT日期相关表达式?

我们使用第三方提供的XSLT转换验证XML文档,该转换会将文档转为错误节点集合,若XML有效则集合为空,当前采用Nokogiri执行转换。

但其中一条XSLT规则意外触发,出错部分的表达式简化为:

date:year(normalize-space(date:add(normalize-space('2023-06-01'),normalize-space('-P3M'))))
=
date:year(normalize-space(date:add(normalize-space('2024-05-31'),normalize-space('-P3M'))))    

我认为该表达式应比较2023年3月1日与2024年2月29日的年份,结果应为不同,但实际判定为相同。

我想独立测试该表达式以确认问题,尝试评估其中一部分的代码如下:

doc = Nokogiri::XML('')
doc.xpath(
  "date:year(normalize-space(date:add(normalize-space('2023-06-01'),normalize-space('-P3M'))))"
)

但抛出错误:xmlXPathCompOpEval: function add bound to undefined prefix date。

若添加EXSLT命名空间,代码如下:

doc.xpath(
  "date:year(normalize-space(date:add(normalize-space('2023-06-01'),normalize-space('-P3M'))))", 
  { "date" => "http://exslt.org/dates-and-times" }
)

则抛出错误:xmlXPathCompOpEval: function add not found。

请问需如何操作才能用Nokogiri评估上述表达式?


内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:28:19