如何使用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
相关产品推荐
相关产品推荐

