我正在体验<的问题. Xpath 1.0中字符串的运算符. 这个简单的Xpath表达式
'A' < 'B' (or the equivalent 'A' < 'B')
我在libxslt(这是一个XSLT 1.0引擎)的xslt运行中没有评估为true.
我检查了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的限制. (我不认为将你不喜欢的限制称为“错误”是合理的,尽管很明显XPath 2.0的设计者同意你这是一个不受欢迎的限制).
您已经标记了问题“xslt”,因此您可以在XSLT级别解决问题,至少在您的处理器具有节点集扩展时:
<xsl:variable name="nodes"> <node><xsl:value-of select="$A"/></node> <node><xsl:value-of select="$B"/></node> </xsl:variable> <xsl:for-each select="exslt:node-set($nodes)/*"> <xsl:sort select="."/> <xsl:if test="position()=1 and .=$A">A comes first!</xsl:if> </xsl:for-each>
但也许是时候转向2.0了.什么阻碍了你?