Ваша таблица стилей XSLT 2.0 группирует элементы peli
по их атрибуту ordre
.Если вы возьмете пример XML, где некоторые peli
имеют одинаковые ordre
:
XML
<cataleg>
<peli ordre="X">
<titol>X-Men</titol>
<caratula>XMen.jpg</caratula>
</peli>
<peli ordre="A">
<titol>X-Men 2</titol>
<caratula>XMen2.jpg</caratula>
</peli>
<peli ordre="X">
<titol>X-Men: La Decisió Final</titol>
<caratula>XMenFD.jpg</caratula>
</peli>
<peli ordre="A">
<titol>X-Men Origins: Wolverine</titol>
<caratula>XMenOW.jpg</caratula>
</peli>
</cataleg>
и примените следующую таблицу стилей:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="pelis-by-ordre" match="peli" use="@ordre" />
<xsl:template match="/cataleg">
<html>
<xsl:for-each select="peli[count(. | key('pelis-by-ordre', @ordre)[1]) = 1]">
<h1>
<xsl:value-of select="@ordre" />
</h1>
<xsl:for-each select="key('pelis-by-ordre', @ordre)">
<div>
<xsl:value-of select="titol" />
</div>
</xsl:for-each>
</xsl:for-each>
</html>
</xsl:template>
</xsl:stylesheet>
вы получите:
Результат
<html>
<h1>X</h1>
<div>X-Men</div>
<div>X-Men: La Decisió Final</div>
<h1>A</h1>
<div>X-Men 2</div>
<div>X-Men Origins: Wolverine</div>
</html>
предоставлено: