如何在 XSLT 模板参数中获取属性值?
How to get an attributes value within a XSLT template parameter?
我调用应用模板如下:
<xsl:apply-templates>
<xsl:with-param name="pWeight" select="@layoutWeight * $pContentWidth" />
</xsl:apply-templates>
我正在尝试访问 apply-templates 作用于的子元素的 layoutWeight
属性值。但是,即使子项具有 layoutWeight
的数值并且 pContentWidth
也是一个数值,计算始终评估为空。
如何访问 apply-templates 作用于的子元素的 layoutWeight
属性?
with-param
上的 select
属性是相对于周围上下文进行评估的,而不是相对于应用模板的每个节点进行评估的。完成您想要做的事情的一种方法是将 apply-templates
包装在 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
并执行计算。
我调用应用模板如下:
<xsl:apply-templates>
<xsl:with-param name="pWeight" select="@layoutWeight * $pContentWidth" />
</xsl:apply-templates>
我正在尝试访问 apply-templates 作用于的子元素的 layoutWeight
属性值。但是,即使子项具有 layoutWeight
的数值并且 pContentWidth
也是一个数值,计算始终评估为空。
如何访问 apply-templates 作用于的子元素的 layoutWeight
属性?
with-param
上的 select
属性是相对于周围上下文进行评估的,而不是相对于应用模板的每个节点进行评估的。完成您想要做的事情的一种方法是将 apply-templates
包装在 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
并执行计算。