Translate n'est pas fait pour ça, il te faut un stylesheet recursif.
L'exemple ci-joint remplace des CR par des <br /> dans le contenu d'un element code d'un xml donné:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- gReplaces text in xml code with markup -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- general settings -->
<xsl:output method="xml" omit-xml-declaration="no" encoding="ISO-8859-1"/>
<!-- global variables -->
<xsl:variable name="gReplace"><!-- replace target here is CR -->
<xsl:text>
</xsl:text></xsl:variable>
<!-- transformations -->
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="//code/text()"><!-- replace only in code elements -->
<xsl:call-template name="doReplace">
<xsl:with-param name="text" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template name="doReplace">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains( $text, $gReplace)">
<xsl:value-of select="substring-before( $text, $gReplace)"/>
<!-- substitue gReplace occurence with <BR /> string -->
<xsl:element name="br"/>
<xsl:call-template name="doReplace"><!-- recurse -->
<xsl:with-param name="text" select="substring-after( $text, $gReplace)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<!-- eof -->
|
T'as de la chance que c'est bientôt la St-Nicolas...
Message édité par avander le 01-12-2006 à 15:46:28