XSL:将position()的结果赋给变量

时间:2010-02-13 03:58:59

标签: xslt variables position xquery

我正在尝试分配这样一个元素的位置:

<xsl:variable name="offset" select="ancestor::myparent/position() * 8"/>

我试图在输出中显示计算结果,因此使用选择器是不够的。 xsltproc生成以下错误:

XPath error : Invalid expression
ancestor::myparent/position() * 8
                            ^
compilation error: file foo.xsl line 10 element variable
XSLT-variable: Failed to compile the XPath expression 'ancestor::myparent/position() * 8'.

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

position()仅在引用特定上下文时可用。

处理myparent元素时,应设置变量。

<xsl:template match="myparent">
  <xsl:variable name="offset" select="position() * 8"/>
  <xsl:apply-templates>
    <xsl:with-param name="offset" select="$offset"/>
  </xsl:apply-templates>
</xsl:template>

像上面这样的东西。确保为需要偏移的模板添加一个参数。