[XSLT] noeud à plat >> arborescence
Bonjour à tous !
J'ai un problème sur une transformation XSL. Pourriez-vous m'aider à terminer ma feuille de style XSL afin d'avoir le résultat attendu çi-dessous, je sèche.
Merci !
XML de départ, les noeuds sont tous au même niveau :
Code:
1 2 3 4 5 6 7 8 9 10
| <root>
<Data type="Home" position="1">Valeur<Data>
<Data type="Archive" position="1">Valeur1<Data>
<Data type="Archive" position="1">Valeur2<Data>
<Data type="Archive" position="1">Valeur3<Data>
<Data type="Home" position="2">Valeur<Data>
<Data type="Archive" position="2">Valeur1<Data>
<Data type="Archive" position="2">Valeur2<Data>
<Data type="Archive" position="2">Valeur3<Data>
</root> |
Résultat attendu : les noeuds de type = "Archive" doivent être créées à l'intérieur des noeuds de type = "Home".
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <home type="Home" position="1">
<archives>
<archive>Valeur1</archive>
<archive>Valeur2</archive>
<archive>Valeur3</archive>
</archives>
</home >
<home type="Home" position="2">
<archives>
<archive>Valeur1</archive>
<archive>Valeur2</archive>
<archive>Valeur3</archive>
</archives>
</home> |
Début du XSL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="root">
<xsl:apply-templates select="Data"/>
</xsl:template>
<xsl:template match="Data">
<xsl:if test="@type='Home'">
...
<archives>
Que faire ici pour intégrer les noeuds Data de type archive ?
</archives>
</xsl:if>
</xsl:template>
</xsl:stylesheet> |
J'ai essayé pas mal de chose avec les template mode et les copy-of mais rien n'y fait, je m'y prends mal !