|
|||||||
| XSL/XSLT/XPATH XPath, XSLT, XSL-FO et tout ce qui permet de les mettre en oeuvre . Avant de poster -> FAQ XML, Sources XML |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: août 2002
Messages: 27
|
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 :
<xsl:copy-of select="@*"></xsl:copy-of> Merci |
|
|
|
|
|
#2 (permalink) |
![]() Date d'inscription: novembre 2003
Localisation: Paris 11 ème
Messages: 3 930
|
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 |
|
|
|
|
|
#4 (permalink) |
![]() Date d'inscription: novembre 2003
Localisation: Paris 11 ème
Messages: 3 930
|
en utilisant le cdata-section-elements du xsl:output pour cibler les element resultats ou tu souhaites le cdata
exemple xml d'entree Code :
<?xml version="1.0" encoding="UTF-8"?> <R> <a>test1</a> <b>test2</b> </R> Code :
<?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> Code :
<?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> |
|
|
|
|
|
#6 (permalink) |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: août 2002
Messages: 27
|
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 :
<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 (permalink) |
|
Expert Confirmé
![]() |
Magnifique ce truc depuis le temps que je me fait chier avec ces xsl:text et disable-escape... !!!! Merci Erwy! ++ Thierry
__________________
"Life is short don't forget to inhale" Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre." Microsoft Office InfoPath MVP - Mon blog |
|
|
|
|
![]() |
![]() |
||
[XSLT] copier un CDATA
|
||
| Outils de la discussion | |
|
|