2009-08-02 3 views

ответ

5

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

<xsl:element name="li"> 
    <xsl:if test="@class = 'selected'"> 
     <xsl:attribute name="class"> 
      selected 
     </xsl:attribute> 
    </xsl:if> 
</xsl:element> 

Необязательно, xsl:if могут быть вложены в xsl:attribute, а не наоборот, если class="" желательно. Как уже упоминалось, неразумно писать это как буквальный текст.

+0

Для удобства чтения, то лучше, чтобы избежать ненужного XSL: элемент вызывает и встраивает элемент li напрямую. –

5

Вы не должны пытаться писать это как литеральный текст, вместо этого посмотрите на атрибут xsl: element и xsl:. Грубый пример:

<xsl:element name="li"> 
    <xsl:attribute name="class"> 
     <xsl:value-of select="$selected" /> 
    </xsl:attribute> 
</xsl:element> 

Full documentation here.

3

Обратите внимание, что если вы достаточно внимательны, чтобы сделать его первый ребенок, вы можете использовать <xsl:attribute> непосредственно внутри вашего <li> тега, вместо того, чтобы использовать <xsl:element>

<li> 
    <xsl:if test="$selected"> 
     <!-- Will refer to the last opened element, li --> 
     <xsl:attribute name="class">selected</xsl:attribute> 
    </xsl:if> 

    <!-- Anything else must come _after_ xsl:attribute --> 
</li> 
Смежные вопросы