Есть преобразование
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" extension-element-prefixes="msxsl">
<xsl:output method="text" indent="no" encoding="UTF-8"/>
<xsl:key name="srcKeys" match="item[@src]" use="@src"/>
<xsl:template match="/top">
<xsl:for-each select="//items">
<xsl:variable name="itemsName" select="@name"/>
<xsl:value-of select="$itemsName"/>:<xsl:call-template name="ComplexTemplate"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:template name="ComplexTemplate">
<xsl:for-each select=".//item[@src and generate-id()= generate-id(key('srcKeys', @src))]">
<xsl:value-of select="@src"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
и входной xml:
<?xml version="1.0" encoding="utf-8"?>
<top>
<items name="item1">
<item src="1" value="1"/>
<item value="zzz"/>
<item src="1" value="2"/>
<item src="2" value="3"/>
<item src="3" value="4"/>
<item value="aaaa"/>
<item src="3" value="5"/>
<group>
<item src="1" value="6"/>
<item src="1" value="7"/>
<item value="uuuu"/>
<item src="2" value="8"/>
<item src="3" value="9"/>
<item src="3" value="10"/>
</group>
</items>
<items name="item2">
<item value="ignore"/>
<item src="3" value="14"/>
<item src="3" value="15"/>
<group>
<item value="ignore2"/>
<item src="2" value="18"/>
<group>
<item src="3" value="19"/>
<item value="ignore3"/>
<item src="3" value="20"/>
</group>
</group>
</items>
</top>
Хочу на выходе получить: item1:123 item2:32 (уникальные значения src в каждом items)
а получаю: item1:123 item2:
что не так?