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 :


<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.
Modifié par mathmax (01 Sep 2007 - 23:42)
Slt, Tu as essayé avec <copy-of>?? , tu remplace juste value-of par copy-of et normalement ça doit marché Smiley smile
Oui mais je veux pouvoir modifier le nom de certaines d'entre elles.

J'ai trouvé ça qui me conviens bien :



<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="baliseARenomer">
		<NouveauNom>
			<xsl:apply-templates select="@* | node()"/>
		</NouveauNom>
	</xsl:template>
</xsl:stylesheet>


Modifié par mathmax (28 Sep 2007 - 15:15)