我遇到了 <
的问题Xpath 1.0 中的字符串运算符。
这个简单的 Xpath 表达式
'A' < 'B' (or the equivalent 'A' < '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/