Как проверить четность позиций элементов в XML-документе, используя XSLT?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Как проверить четность позиций элементов в... Expand / Collapse
Автор
Сообщение
24.02.2004 14:38
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 04.03.2004 11:52
Сообщ.: 4, Visits: 45
Привет всем.

У меня есть такой вопрос:
Есть XML-документ вида:
<list>
<item1>content</item1>
<item2>content</item2>
....
<itemn>content</itemn>
</list>

Как в стилевой таблице XSLT разделить обработку элементов, дочерних по отношению к <list>, по критерию четности номера их позиции в контексте?
То есть, фактически, проблема заключается в определении четности и нечетности позиций элементов.
Сообщ. #811020
02.03.2004 16:17
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Можно использовать функцию position() и проверять ее значение на четность - 0 = (position() mod 2). Этот способ подходит при одноворменной обработке все дочерних элементов и не будет работать если выбирать не все узлы. Причина в том что position() возвращает позицию текущего элемента (начиная с единицы) в текущем списке элементов.

Если бы будете использовать узлы с его порядковым номером, то используйте функцию substring-after. Вот небольшой пример:
<xsl:choose>
<xsl:when test="0 = (substring-after(name(), 'item') mod 2)">Четный</xsl:when>
<xsl:otherwise>Нечетный</xsl:otherwise>
</xsl:choose>
Сообщ. #811779
03.03.2004 11:56
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 04.03.2004 11:52
Сообщ.: 4, Visits: 45
Спасибо! Первый вариант мне как раз очень даже подходит.
Сообщ. #811863
04.03.2004 8:56
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 17.04.2008 14:50
Сообщ.: 640, Visits: 7 047
Достаточно написать

test="position() mod 2 = 0"

Необходимость использовать пронумерованные имена отпадает...
Сообщ. #811981
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 11:58