我正在尝试分配这样一个元素的位置:
<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'.
有办法做到这一点吗?
答案 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>
像上面这样的东西。确保为需要偏移的模板添加一个参数。