Похоже, вы пытаетесь создать отдельный список всех "жанров" в вашем списке.
Предполагая структуру данных, которая выглядит примерно так:
<root>
<nodes>
<node>
<data>
<genres>
<value>One</value>
<value>Two</value>
<value>Two</value>
<value>Three</value>
<value>Two</value>
</genres>
</data>
</node>
</nodes>
</root>
И таблица стилей, которая выглядит примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="genres" match="value" use="."/>
<xsl:template match="/">
<div>
<xsl:for-each select="/root/nodes/node/data/genres/value">
<xsl:if test="generate-id(.) = generate-id(key('genres', .)[1])">
<a href="#"><xsl:value-of select="."/></a>
</xsl:if>
</xsl:for-each>
</div>
</xsl:template>
</xsl:stylesheet>
Тогда вы получите что-то вроде этого:
<div>
<a href="#">One</a>
<a href="#">Two</a>
<a href="#">Three</a>
</div>
Это довольно стандартная техника XSLT 1.0. Он использует ключи (описано здесь: http://www.xml.com/pub/a/2002/02/06/key-lookups.html) для создания своего рода индекса всех записей / root / node / node / data / genres / value. Затем он просматривает все записи, но печатает только первые записи каждого типа. Конечным результатом является то, что каждое значение будет выводиться только один раз.