XSL внутри для каждого использования другого класса CSS - PullRequest
1 голос
/ 10 ноября 2011

как я могу отобразить текст внутри цикла for-each, в xslt, используя каждый раз другой класс css? я могу сгенерировать как-нибудь имя класса css на основе какой-то переменной или чего-то такого ?? Является ли это возможным? например, в следующем коде внутри цикла foreach я могу каждый раз отображать li с другим классом css ... например, в первой итерации li class = "1" ... second iteartion li class = "2" .. .и очевидно в css существует li.1 {..}, li.2 {...}

    <xsl:output method="text" indent="no"/>
<xsl:variable name="newline">
    <xsl:text>
    </xsl:text>
</xsl:variable>

<xsl:template match="/">
    <xsl:text>Collections of books</xsl:text>
    <xsl:value-of select="$newline"/>
    <xsl:variable name="index" select="0"/>
    <xsl:for-each select="collection/book"> 
        <xsl:sort select="category"/>
        <xsl:variable name="lastCat" select="category"/>
        <xsl:if test="not(preceding-sibling::book[category=$lastCat])">
            <xsl:value-of select="$newline"/>       
            <xsl:value-of select="category"/>
            <xsl:value-of select="$newline"/>
            <xsl:value-of select="$newline"/>
        </xsl:if>
        <ul>
            <li>
                <xsl:value-of select="title"/>
                <xsl:text>    </xsl:text>
                <xsl:value-of select="author"/>
                <xsl:text>    </xsl:text>
                <xsl:value-of select="year"/>
                <xsl:text>    </xsl:text>
                <xsl:value-of select="isbn"/>
            </li>
        </ul>
        <xsl:value-of select="$newline"/>

    </xsl:for-each>
</xsl:template>

1 Ответ

0 голосов
/ 10 ноября 2011

Вы XSLT немного сбивает с толку то, выводите ли вы текст или HTML.Однако, отвечая на ваш ближайший вопрос, вы можете легко добавить атрибуты к существующим li элементам, которые вы выводите одним из двух способов.

Во-первых, вы можете использовать xsl: attribute оператор, который должен быть добавлен сразу после тега li .

<li>
   <xsl:attribute name="class">
      <xsl:value-of select="position()" />
   </xsl:attribute>
   ...

Однако лучший способ - использовать «шаблоны значений атрибутов» для указания атрибутов.(В фигурных скобках указана AVT, которая должна быть оценена в этом случае, в отличие от того, чтобы быть фрагментом текста для буквального вывода)

<li class="{position()}">
    ...

В обоих случаях вывод будет аналогичен следующему

<li class="1">...
<li class="2">...

В этом примере я просто использую position () , чтобы продемонстрировать, как вы можете устанавливать атрибуты, но вы можете легко использовать переменные при необходимости.

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