Как получить значение атрибутов в параметре шаблона XSLT?
Я называю apply-templates следующим образом:
<xsl:apply-templates>
<xsl:with-param name="pWeight" select="@layoutWeight * $pContentWidth" />
</xsl:apply-templates>
Я пытаюсь получить доступ к layoutWeight
значение атрибута дочернего элемента, к которому применяется apply-templates. Однако вычисление всегда оценивается как пустое, даже если дочерние элементы имеют числовое значение для layoutWeight
а также pContentWidth
также является числовым значением.
Как мне получить доступ к layoutWeight
Атрибут дочернего элемента apply-templates действует на?
1 ответ
select
атрибут на with-param
оценивается относительно окружающего контекста, а не относительно каждого узла, к которому применяются шаблоны. Один из способов сделать то, что вы пытаетесь сделать, это обернуть 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
и выполнить вычисление.