代码之家  ›  专栏  ›  技术社区  ›  knipknap

将position()的结果赋给变量

  •  1
  • knipknap  · 技术社区  · 16 年前

    我试图分配这样一个元素的位置:

    <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 回复  |  直到 16 年前
        1
  •  3
  •   Kyle Butt    16 年前

    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>
    

    有点像上面。确保向需要偏移的模板添加参数。