IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT]Comment copier un document xml avec xslt.


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut [XSLT]Comment copier un document xml avec xslt.
    Bonjour,

    J'aimerais recopier un document xml à l'aide d'une feuille xslt en changeant juste le nom de certaines balises.
    Comme mon document xml d'origine est assez complexe, je ne souhaite pas ré écrire explicitement toutes les balises dans ma feuille xslt. J'ai donc écrit ce bout de code xslt qui permet de recopier n'importe quel document à l'identique :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <xsl:template match="/">
     
      <xsl:apply-templates select="Root" />
     
    </xsl:template>
     
     
     
      <xsl:template match="*">
     
        <xsl:element name="{name()}">
     
          <xsl:if test="count(./*)=0">
     
            <xsl:value-of select="."/>       
     
          </xsl:if>
     
          <xsl:apply-templates select="./*" />
     
        </xsl:element>
     
      </xsl:template>


    Le problème est que ce xslt ne recopiera pas les balises de contenu mixte (contenant balise + texte).

    Je ne souhaite pas utiliser les balise xslt copy et copy-of car je veux réellement parcourir chaque balise pour renommer certaines d'entre elles.

    Auriez-vous une idée pour modifier mon code ci dessus afin qu'il recopie aussi les balises de contenu mixte ?

    merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    exemple de code qui utilise xsl:copy et pourtant passe sur toute le balise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output 
      		encoding="ISO-8859-15"
      		method="xml"
      		indent="yes" />
     
    	<xsl:template match="node() | @*">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>
    imaginons que tu souhaite renommer les balise fred en maa, cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output 
      		encoding="ISO-8859-15"
      		method="xml"
      		indent="yes" />
     
    	<xsl:template match="node() | @*">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>
     
    	<xsl:template match="fred">
    		<maa>
    			<xsl:apply-templates select="@* | node()"/>
    		</maa>
    	</xsl:template>
    </xsl:stylesheet>

  3. #3
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Merci, c'est parfait.

  4. #4
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    de rien

  5. #5
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Encore un truc :
    Si maintenant je veux renommer toutes les balise qui commence par fred. Comment puis-je faire cela ? Je crois savoir que l'on ne peux utiliser les expression régulière qu'avec la norme 2.0 de xslt. Comment ferait-on cela en xslt 2.0 ? Ou peut être (et ça m'arrangerait) as-tu une astuce pour faire cela en xslt 1.0 ?
    Si tu pouvais me présenter un méthode pour chacune des normes, ça serait le top

    merci

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Salut,
    C'est possible en XSLT1.0 avec un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="*[starts-with(name(),'fred')]">

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment parser un document xml avec gwt?
    Par zemzoum89 dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 01/12/2010, 15h05
  2. [XSLT] Comment lier un fichier XML et XSLT
    Par bitou dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/08/2006, 15h35
  3. comment associer les couleur a un document xml avec xslt
    Par moh_yougo dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/01/2006, 16h08
  4. [DOM XML][XSLT] Création d'un document XML avec PHP
    Par ToxiZz dans le forum Bibliothèques et frameworks
    Réponses: 21
    Dernier message: 16/01/2006, 17h44
  5. [XSLT][XSD>XML]transformer xsd en xml avec xslt
    Par émile-henri dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 14/06/2005, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo