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] copier un CDATA [FAQ]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 27
    Points : 24
    Points
    24
    Par défaut [XSLT] copier un CDATA
    dans mon document source XML, j'ai un un element CDATA, j'aimerai le copier tel quel via XSLT. mais je ne sais pas comment le selectionner
    ex pour copier les attributs je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-of select="@*"></xsl:copy-of>
    comment puis-je faire pour un cdata

    Merci

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Un cdata n'est pas un type de noeud, il n'y a pas de moyen de le "cibler" en xpath.
    De plus la recopie de la balise le contenant recopiera le contenu du cdata mais sans lui

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 27
    Points : 24
    Points
    24
    Par défaut
    y'a t'il un moyen de créer un element CDATA en xslt?

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    en utilisant le cdata-section-elements du xsl:output pour cibler les element resultats ou tu souhaites le cdata

    exemple
    xml d'entree
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0" encoding="UTF-8"?>
    <R>
    	<a>test1</a>
    	<b>test2</b>
    </R>
    xslt

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" cdata-section-elements="a e"/>
    	<xsl:template match="/">
    		<R>
    			<xsl:for-each select="R/*">
    				<a>
    					<xsl:value-of select="."/>
    				</a>
    				<e>
    					<xsl:value-of select="."/>
    				</e>
    				<f>
    					<xsl:value-of select="."/>
    				</f>
    			</xsl:for-each>
    		</R>
    	</xsl:template>
    </xsl:stylesheet>
    xml resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <R>
    	<a><![CDATA[test1]]></a>
    	<e><![CDATA[test1]]></e>
    	<f>test1</f>
    	<a><![CDATA[test2]]></a>
    	<e><![CDATA[test2]]></e>
    	<f>test2</f>
    </R>

  5. #5
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    trop cool Erwy, on pourrait pas mettre ça dans la FAQ?

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 27
    Points : 24
    Points
    24
    Par défaut
    merci beaucoup
    voici le bout (pas très long mais qui m'a bien pris la tête) qui m'a permis de recopier un doc xml en changeant le nom des éléments et en recopiant les balise CDATA.

    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="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2004/07/xpath-functions" xmlns:xdt="http://www.w3.org/2004/07/xpath-datatypes" xmlns:svg="http://www.w3.org/2000/svg">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" cdata-section-elements="svg:style"/>
     
    <xsl:template match="*">
    		<xsl:variable name="NomElement"><xsl:value-of select="concat('svg:',name())"></xsl:value-of></xsl:variable>
    		<xsl:element exclude-result-prefixes="svg" name ="{$NomElement}">
    				<xsl:copy-of select="@*"></xsl:copy-of>
    				<xsl:copy-of select="text()"></xsl:copy-of>
    				<xsl:apply-templates select="*"></xsl:apply-templates>
    		</xsl:element>
     
    	</xsl:template>

  7. #7
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut




    Magnifique ce truc depuis le temps que je me fait chier avec ces xsl:text et disable-escape... !!!!

    Merci Erwy!

    ++

    Thierry

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    c'etait marqué la http://www.w3.org/TR/xslt

Discussions similaires

  1. Petit problème xslt, xpath, et cdata
    Par sauceaupistou dans le forum ASP.NET
    Réponses: 3
    Dernier message: 12/09/2008, 15h28
  2. Réponses: 4
    Dernier message: 27/04/2007, 21h54
  3. [XSLT] Copier un noeud avec ces éléments sauf un
    Par DelphLaga dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 12/10/2006, 13h55
  4. [XSLT]copier un noeud en changeant son nom
    Par damyrid dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/03/2006, 11h54
  5. [XML/XSLT] Affichage de CDATA
    Par chezjm dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 30/05/2005, 00h12

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