как использовать значение xsl: param в xsl: attribute name = "width" - PullRequest
5 голосов
/ 19 апреля 2010

Звучит просто, но мой "легкий" синтаксис не сработал:

<xsl:param name="length"/>
<xsl:attribute name="width">$length</xsl:attribute>
not
<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute>

есть предложения?

спасибо

Ответы [ 3 ]

8 голосов
/ 19 апреля 2010

<xsl:attribute name="width">$length</xsl:attribute>

Это создаст атрибут со значением строка $length. Но вам нужно значение параметра xsl: param $length.

<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute>

Здесь элемент <xsl:value-of> не закрыт - это делает код XSLT неправильно сформированным xml.

Решение

Используйте одно из следующего:

  1. <xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute>

или

  1. <someElement width="{$length}"/>

Для удобочитаемости и компактности предпочитайте использовать 2. выше , когда это возможно.

1 голос
/ 19 апреля 2010

Ваша первая альтернатива терпит неудачу, потому что переменные не раскрываются в текстовых узлах. Ваш второй вариант терпит неудачу, потому что вы пытаетесь вызвать <xsl:value-of-select="...">, а правильный синтаксис - <xsl:value-of select="..."/>, как описано в разделе Генерация текста с помощью xsl: value-of в стандарте. Вы можете исправить свой код, используя

<xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute>

или, как уже отмечалось, вы можете использовать шаблоны значений атрибутов :

<someElement width="{$length}" ... >...</someElement>
1 голос
/ 19 апреля 2010

Вам, вероятно, даже не нужно xsl:attribute здесь; самый простой способ сделать это что-то вроде:

<someElement width="{$length}" ... >...</someElement>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...