2009-12-21 5 views
0

Учитывая следующий пример;XSLT: установка атрибута предыдущего узла

<ul id="s-nav"> 
    <xsl:for-each select="$currentPage/ancestor-or-self::node [@level=2]/node"> 
    <li> 
     <xsl:if test="$currentPage/ancestor-or-self::node/@id = current()/@id"> 
     <xsl:attribute name="class">current</xsl:attribute> 
     </xsl:if> 
    </li> 
    </xsl:for-each> 
</ul> 

Когда текущий узел является таким же, как текущий <Li>, класс атрибут имеет значение «текущий».

Теперь я хочу установить второй атрибут в блоке if, но для предыдущего <li>, а не для текущего. Любая идея, как это сделать?

Большое спасибо.

+0

Вы хотите добавить class = "previous"? Если это применимо только к 'li' до того, который соответствует текущему или ко всему' li', который предшествует тому, который соответствует текущему? Когда вы спрашиваете о XSLT, часто полезно предоставить как XSLT, так и некоторый образец XML, чтобы помочь людям визуализировать структуру. –

+0

Вы правы. Класс применяется только к одному до матча. – Jeroen

+0

Как определяется текущая страница? Как выглядит ваш XML? Какой движок XSLT вы используете? –

ответ

0

Я не думаю, что XSLT позволит вам изменять атрибуты узлов, которые уже были выведены. Лучше всего подумать о каждом узле как о его выходе и разработать условия, при которых он должен иметь различные атрибуты.

Смежные вопросы