Проблема с переменной xslt1.0 - PullRequest
0 голосов
/ 14 октября 2009

У меня есть следующий шаблон:

<xsl:template name="theday">
    <xsl:param name="thisday" />

    <xsl:variable name='holiday' select='foo'/><!-- made this static for testing -->

    <td class="{$holiday}"> <!-- no value is inserted in class -->

        <a>
            <xsl:attribute name='href'><xsl:value-of
                select="concat('?date=',$thisday)" /></xsl:attribute>
            <xsl:value-of select="date:day-in-month($thisday)" />
        </a>
    </td>
</xsl:template>

Я ожидаю получить HTML примерно так:

<td class="foo">
  <a href="?date=2009-11-02">2</a>
</td>

К сожалению, я получаю:

<td class="">
  <a href="?date=2009-11-02">2</a>
</td>

Чего мне не хватает?

Ответы [ 2 ]

3 голосов
/ 14 октября 2009

Попробуйте это:

<xsl:variable name='holiday'>foo</xsl:variable>

или

<xsl:variable name='holiday' select="'foo'"/>

Как это работает: атрибут select ожидает, что выражение будет оценено; поскольку у вас, вероятно, нет элемента foo в контексте, он разрешается как пустая строка.

1 голос
/ 14 октября 2009

Проблема в том, что <xsl:variable name='holiday' select='foo'/> выбирает список узлов 'foo' (который пуст), а не строку foo. Если у вас был xml

<a>
  <foo>B</foo>
</a>

затем (при текущем значении a) <xsl:variable name='holiday' select='foo'/> даст 'B'.

Чтобы исправить это, укажите константу:

<xsl:variable name='holiday' select="'foo'"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...