我可以在函数中调用xsl函数吗?我只想比较一下以前的值和现在的值。例如:
<xsl:value-of select="//row[(position()-1)]/MONTH_ID" />
但是,下面的代码是可以的:
<xsl:value-of select="number(position())-1" />
你的问题的答案是肯定的,但我认为你问的问题不对。您还没有说明要做什么,但是您的代码示例没有做任何有用的事情。
//row[(position()-1)]/MONTH_ID
当在谓词中使用数字N时,它表示[position()=N]
,因此谓词表示[position() = position() - 1]
,这将始终为false。
我想你忘记了position()
的结果对上下文是敏感的,谓词内部的上下文与外部的上下文不同。答案是绑定一个变量:
<xsl:variable name="p" select="position()"/>
<xsl:value-of select="//row[$p - 1]/MONTH_ID"/>
是的,您可以嵌套XPath函数。下面你可以找到一个例子:
substring(child::randlist/item[position()=1], 1, 10)
函数位置在子字符串函数内部调用。
你能更具体地提出比较请求吗?