Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Technologies / Divers > XML/XSL et SOAP > XSL/XSLT/XPATH

XSL/XSLT/XPATH XPath, XSLT, XSL-FO et tout ce qui permet de les mettre en oeuvre . Avant de poster -> FAQ XML, Sources XML

Réponse
 
Outils de la discussion
Vieux 29/03/2006, 11h48   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: août 2002
Messages: 27
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 :
<xsl:copy-of select="@*"></xsl:copy-of>
comment puis-je faire pour un cdata

Merci
damyrid est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/03/2006, 13h23   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de Erwy
 
Date d'inscription: novembre 2003
Localisation: Paris
Messages: 3 880
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
Erwy est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/03/2006, 13h58   #3 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: août 2002
Messages: 27
Par défaut

y'a t'il un moyen de créer un element CDATA en xslt?
damyrid est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/03/2006, 14h31   #4 (permalink)
Rédacteur/Modérateur
 
Avatar de Erwy
 
Date d'inscription: novembre 2003
Localisation: Paris
Messages: 3 880
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 :
 
<?xml version="1.0" encoding="UTF-8"?>
<R>
	<a>test1</a>
	<b>test2</b>
</R>
xslt

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>
 
xml resultat
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>
Erwy est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/03/2006, 15h07   #5 (permalink)
Membre Expert
 
Avatar de luta
 
Date d'inscription: novembre 2003
Localisation: near Versailles
Messages: 1 059
Envoyer un message via MSN à luta
Par défaut

trop cool Erwy, on pourrait pas mettre ça dans la FAQ?
luta est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/03/2006, 15h09   #6 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: août 2002
Messages: 27
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 :
 
<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>
damyrid est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/03/2006, 16h26   #7 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut





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
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/03/2006, 16h48   #8 (permalink)
Rédacteur/Modérateur
 
Avatar de Erwy
 
Date d'inscription: novembre 2003
Localisation: Paris
Messages: 3 880
Par défaut

c'etait marqué la http://www.w3.org/TR/xslt
Erwy est déconnecté   Envoyer un message privé Réponse avec citation
NEWS XMLFAQ XMLTUTORIELS XMLSOURCES XMLLIVRES XML

Réponse

Précédent   Forum des développeurs > Technologies / Divers > XML/XSL et SOAP > XSL/XSLT/XPATH



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide