Вывод уникальных значений (xslt) — различия между версиями
Материал из Umicms
Stexe (обсуждение | вклад) |
Stexe (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
[[category:Верстка в XSLT]] | [[category:Верстка в XSLT]] | ||
− | + | Статья актуальна для версии 2.9.21905 <br/> | |
Имеем несколько узлов, у которых повторяются значения атрибута (например, '''id''').<br/> | Имеем несколько узлов, у которых повторяются значения атрибута (например, '''id''').<br/> | ||
Задача: Вернуть только уникальные '''id'''. | Задача: Вернуть только уникальные '''id'''. | ||
Строка 47: | Строка 47: | ||
3<br/> | 3<br/> | ||
− | |||
[[Категория:Верстка в XSLT]] | [[Категория:Верстка в XSLT]] |
Версия 08:15, 5 июня 2013
Статья актуальна для версии 2.9.21905
Имеем несколько узлов, у которых повторяются значения атрибута (например, id).
Задача: Вернуть только уникальные id.
Имеем следующие данные в формате xml:
<items>
<item id="1"></item>
<item id="2"></item>
<item id="6"></item>
<item id="4"></item>
<item id="5"></item>
<item id="2"></item>
<item id="3"></item>
<item id="6"></item>
</items>
Далее, представлен вариант решения поставленной задачи.
<xsl:key name="key_id" match="item" use="@id"/>
<xsl:template match="items">
<html>
<body>
<xsl:apply-templates select="item"/>
</body>
</html>
</xsl:template>
<xsl:template match="item">
<xsl:if test="generate-id(.)=generate-id(key('key_id',@id))">
<xsl:value-of select="@id"/><br/>
</xsl:if>
</xsl:template>
В результате обработки получаем следующее:
1
2
6
4
5
3