php - 如何将字符串与 Xpath 1.0 进行比较?

标签 php xslt xpath xslt-1.0

我遇到了 < 的问题Xpath 1.0 中的字符串运算符。

这个简单的 Xpath 表达式

'A' < 'B' (or the equivalent 'A' &lt; 'B')

在我在 libxslt(它是一个 XSLT 1.0 引擎)中运行的 xslt 中没有评估为真。

我检查了 XML Spy,它允许在 1.0 和 2.0 中测试 Xpath 表达式,果然,在 Xpath 2.0 中它的计算结果为 true , 但在 Xpath 1.0 中它的计算结果为 false !

这是 Xpath 1.0 中的错误吗?

我应该使用什么其他表达式来比较两个字符串/字符的字母顺序?请注意,compare() 函数不会执行此操作,因为这是一个 XSLT 2.0 函数。

最佳答案

在 XPath 1.0 中,字符串比较仅针对 =!= 定义,不能进行顺序比较。规范说

When neither object to be compared is a node-set and the operator is <=, <, >= or >, then the objects are compared by converting both objects to numbers and comparing the numbers according to IEEE 754.

因此你的两个操作数都被转换为 float ,使它们都是 NaN。

我相信 Microsoft 的 XML 添加了扩展函数来处理这个问题,但是当然这只有在您使用 MSXML 时才有帮助。

关于php - 如何将字符串与 Xpath 1.0 进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125944/

相关文章:

xml - 如何通过分层节点与 XSLT 循环?

xpath - Selenium :如何断言选中的所有复选框?

javascript - 如果纬度和经度在 XML 中可用,则获取所有值

php - symfony 验证另一个字段是否为特定值

php - 在 Centos 7 上为 Facebook php sdk 安装 php-mbstring

php - 如何回应查询

.net - 使用 XSLT 生成 PDF 文档

xml - 使用 xslt2 将结构化文本转换为 XML

php - 当 PHP 失败时 Apache 回退

java - 如何通过xpath查找包含元素的元素