[XSLT] Parcours récursif d'une liste
Bonjour
j'ai un graphe xml du style :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<map>
<node text="a1">
<node text="a1_1">
<node text="a1_2">
<node text="a1_2_1">
<node text="a1_2_2">
<node text="a1_2_2_1">
<node text="a1_2_2_2">
<node text="a1_3">
<node text="a1_4">
<node text="b1">
</map> |
Je souhaite récupérer un texte :
Code:
1 2 3 4 5 6 7 8 9 10
|
=a1=
*a1_1
*a1_2
:*a1_2_1
:*a1_2_2
::*a1_2_2_1
::*a1_2_2_2
*a1_3
*a1_4 |
J'ai fait une xsl :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="text" indent="no" omit-xml-declaration="yes" encoding="ISO-8859-1"/>
<xsl:template match="/"><xsl:variable name="mapversion" select="map/@version"/>'''Date''' : <xsl:value-of select="map/node/@TEXT"/><xsl:text>
</xsl:text><xsl:apply-templates/><xsl:text>
</xsl:text>----<xsl:text>
</xsl:text>Back to [[List]]</xsl:template>
<xsl:template match="map/node/node">=<xsl:value-of select="@TEXT"/>=<xsl:text>
</xsl:text><xsl:apply-templates/></xsl:template>
<xsl:template match="map/node/node/node">*<xsl:value-of select="@TEXT"/><xsl:text>
</xsl:text><xsl:apply-templates/></xsl:template>
<xsl:template match="map/node/node/node/node">:*<xsl:value-of select="@TEXT"/><xsl:text>
</xsl:text><xsl:apply-templates/></xsl:template>
<xsl:template match="map/node/node/node/node/node">::*<xsl:value-of select="@TEXT"/><xsl:text>
</xsl:text><xsl:apply-templates/></xsl:template>
<xsl:template match="map/node/node/node/node/node/node">:::*<xsl:value-of select="@TEXT"/><xsl:text>
</xsl:text><xsl:apply-templates/></xsl:template>
</xsl:stylesheet> |
Question Optimisation, c'est pas top (je ne gère pas les niveaux > 5) et je peux difficilement gérer des cas plus tordu à chaque niveau.
Je souhaiterais avoir un template dédié au "node" pur pour pouvoir faire des tests du style "node/qq chose"
Avez-vous une idée ?