1

我按如下方式调用应用模板:

<xsl:apply-templates>
    <xsl:with-param name="pWeight" select="@layoutWeight * $pContentWidth" />
</xsl:apply-templates>

我正在尝试访问layoutWeightapply-templates 所作用的子元素的属性值。然而,计算总是评估为空,即使子项有一个数字值layoutWeight并且pContentWidth也是一个数字值。

如何访问layoutWeight子元素 apply-templates 的属性?

4

1 回答 1

2

a 上的select属性with-param是相对于周围的上下文进行评估的,而不是相对于应用模板的每个节点。完成您尝试做的事情的一种方法是将其包装apply-templates在 a 中for-each

<xsl:for-each select="node()">
  <xsl:apply-templates select=".">
    <xsl:with-param name="pWeight" select="@layoutWeight * $pContentWidth" />
  </xsl:apply-templates>
</xsl:for-each>

另一种选择是将$pContentWidth参数传递给apply-templates并让模板自己访问@layoutWidth并执行计算。

于 2016-08-29T15:57:24.907 回答