Dies ist ein Fall von grouping
(wie zu Recht von @ Martin Honnen out) und da Sie XSLT 1.0 verwenden, wäre ein <xsl:key>
erfordert definiert werden und dann für die Gruppierung verwendet.
Da die Gruppierung auf <titre>
getan werden soll, wird der Schlüssel als
<xsl:key name="keyTitre" match="livre" use="titre" />
Als nächstes werden wir eine Schleife durch alle <livre>
Elemente definiert werden, die den Schlüssel gruppiert verwenden.
<xsl:for-each select="livre[generate-id() = generate-id(key('keyTitre', titre)[1])]">
Schließlich eine verschachtelte Schleife für die gruppierten Schlüssel.
<xsl:for-each select="key('keyTitre', titre)">
Unten ist die vollständige XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:strip-space elements="*" />
<xsl:key name="keyTitre" match="livre" use="titre" />
<xsl:template match="bibliotheque">
<html>
<body>
<xsl:for-each select="livre[generate-id() = generate-id(key('keyTitre', titre)[1])]">
<ul>
<xsl:value-of select="titre" />
<xsl:for-each select="key('keyTitre', titre)">
<li>
<xsl:value-of select="concat(auteur/nom, ' ', auteur/prenom)" />
</li>
</xsl:for-each>
</ul>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Die obige XSLT, wenn sie auf der XML-Eingabe laufen erzeugt das unten Ergebnis. Da die Eingabe-XML drei verschiedene Werte für <titre>
hat, gibt es 3 <ul>
Elemente in der Ausgabe.
<html>
<body>
<ul>
t1
<li>n1 p1</li>
</ul>
<ul>
t2
<li>n2 p2</li>
</ul>
<ul>
t3
<li>n3 p3</li>
</ul>
</body>
</html>
Bitte teilen Sie die Eingabe-XML und den XSLT-Code, die Sie bisher versucht haben. –
Es klingt wie ein Gruppierungsproblem. –