XSLT : remplacer parent par valeur enfant

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
Configuration: Windows 7, Ubuntu 9.10, Windows XP (les joies de VirtualBox)

3 réponses

  1. merlone Messages postés 221 Statut Membre 53
     
    Un petit up...
    0
  2. merlone Messages postés 221 Statut Membre 53
     
    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 :)
    0
  3. merlone Messages postés 221 Statut Membre 53
     
    Up, quelqu'un ce soir a un début de réponse, ???
    Merci d'avance :)
    0