XSLT : remplacer parent par valeur enfant
merlone
Messages postés
221
Statut
Membre
-
merlone Messages postés 221 Statut Membre -
merlone Messages postés 221 Statut Membre -
Bonjour à tous,
Voilà, je débute en XSLT et j'ai un problème, sûrement très bête à résoudre : je veux remplacer le nom d'une balise par la valeur d'un de ses enfants. Plus concrètement le fichier XML source est :
<PERIODE>
<ANNEE>1986</ANNEE>
<EXPOSITION>blablabla</EXPOSITION>
</PERIODE>
Je voudrais que 1986 remplace <PERIODE> et que année disparaisse pour obtenir :
<1986>
<EXPOSITION>blablabla</EXPOSITION>
</1986>
Si quelqu'un à idée, je m'embrouille un peu les pinceaux de mon côté...Au passage si quelqu'un à une bonne suggestion de lecture en français sur le parsage du XML. Merci d'avance pour vos réponses et le temps que vous passerez sur mon problème,
Bonne journée
Voilà, je débute en XSLT et j'ai un problème, sûrement très bête à résoudre : je veux remplacer le nom d'une balise par la valeur d'un de ses enfants. Plus concrètement le fichier XML source est :
<PERIODE>
<ANNEE>1986</ANNEE>
<EXPOSITION>blablabla</EXPOSITION>
</PERIODE>
Je voudrais que 1986 remplace <PERIODE> et que année disparaisse pour obtenir :
<1986>
<EXPOSITION>blablabla</EXPOSITION>
</1986>
Si quelqu'un à idée, je m'embrouille un peu les pinceaux de mon côté...Au passage si quelqu'un à une bonne suggestion de lecture en français sur le parsage du XML. Merci d'avance pour vos réponses et le temps que vous passerez sur mon problème,
Bonne journée
3 réponses
Ok je m'autorépond en parti mais je ne suis pas satisfait par ce que j'ai trouvé jusqu'ici :
<!--Début du fichier, jusqu'ici tout va bien :)-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output
method="xml"
encoding="utf-8"
indent="yes" />
<!--Copie de tout l'arbre-->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!--Créer un attribut ANNEE à la balise PERIODE et lui donner la valeur d'ANNEE-->
<xsl:template match="PERIODE">
<PERIODE ANNEE="{ANNEE/.}">
<xsl:apply-templates/>
</PERIODE>
</xsl:template>
<!--virer la balise Annee-->
<xsl:template match="ANNEE" />
</xsl:stylesheet>
Je voudrait vraiment remplacer PERIODE par la valeur d'ANNEE, si quelqu'un a une idée...merci d'avance :)
<!--Début du fichier, jusqu'ici tout va bien :)-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output
method="xml"
encoding="utf-8"
indent="yes" />
<!--Copie de tout l'arbre-->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!--Créer un attribut ANNEE à la balise PERIODE et lui donner la valeur d'ANNEE-->
<xsl:template match="PERIODE">
<PERIODE ANNEE="{ANNEE/.}">
<xsl:apply-templates/>
</PERIODE>
</xsl:template>
<!--virer la balise Annee-->
<xsl:template match="ANNEE" />
</xsl:stylesheet>
Je voudrait vraiment remplacer PERIODE par la valeur d'ANNEE, si quelqu'un a une idée...merci d'avance :)