我可以在另一个函数中调用xslt函数

时间:2013-07-17 07:36:09

标签: xml xslt xslt-2.0

我可以在函数内调用xsl函数吗?我只想比较之前的值和当前值。例如:

<xsl:value-of select="//row[(position()-1)]/MONTH_ID" />

但是,下面的代码还可以:

<xsl:value-of select="number(position())-1" />

2 个答案:

答案 0 :(得分:5)

你的问题的答案是肯定的,但我不认为你问的是正确的问题。你还没有说你想要做什么,但你的代码示例没有做任何有用的事情。

//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"/>

答案 1 :(得分:1)

是的,你可以嵌套XPath功能。您可以在下面找到一个示例:

substring(child::randlist/item[position()=1], 1, 10)

在子字符串函数内调用函数位置。

您可以更具体地了解比较请求吗?