Как получить значение атрибутов в параметре шаблона 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 и выполнить вычисление.

Другие вопросы по тегам