XSLT - Добавление класса к чему-то с классом?

При использовании 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>

Спасибо.

Ответы

Ответ 1

Другой способ:

<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-процессор самостоятельно обрезает конечное пространство из значения атрибута, поэтому нет необходимости выполнять сложную обработку пространства.

Ответ 2

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

<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>