XSLT - Добавление класса к чему-либо с классом? - PullRequest
14 голосов
/ 26 мая 2010

При использовании XSLT как применить класс к элементу, который уже имеет класс? То, как я это делаю, заменяет уже существующий класс? Как бы я добавил класс в дополнение к существующему классу? Мой код выглядит следующим образом:

<xsl:if test="data[@alias = 'off'] = 1">
    <xsl:attribute name="class">off</xsl:attribute>
</xsl:if>
<xsl:if test="$currentPage/ancestor-or-self::node/@id = current()/@id">
    <xsl:attribute name="class">active</xsl:attribute>
</xsl:if>

Спасибо.

Ответы [ 2 ]

17 голосов
/ 26 мая 2010

наоборот:

<xsl:attribute name="class">
  <xsl:if test="data[@alias = 'off'] = 1">off </xsl:if>
  <xsl:if test="$currentPage/ancestor-or-self::node/@id = current()/@id">active </xsl:if>
</xsl:attribute>

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

6 голосов
/ 26 мая 2010

вы можете объединить текущее значение атрибута класса с новым:

<xsl:if test="$currentPage/ancestor-or-self::node/@id = current()/@id">
    <xsl:attribute name="class">
      <xsl:value-of select="concat(@class,' active')"/>
    </xsl:attribute>
</xsl:if>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...