Bonjour,
Je cherche à
remplacer les caracteres 
 par <br> (template doReplaceCR)
et
remplacer les espaces par des (template doReplaceSPACE)
Ceci afin de transformer un XML en HTML comprenant des retours chariots et
des espaces non secables.
Je "sais" faire les 2 remplacements mais je ne sais pas les combiner afin
d'avoir un resultat correct.
J'obtiens un resultat correct si j'appele doReplaceCR seul ou doReplaceSPACE
seul, mais comment faire pour avoir le traitement doReplaceCR puis
doReplaceSPACE ?
Sachant qu'il m'est impoosible de stocker le resultat intermediaire (normal
puisque c'est du HTML).
Le fichier essai.xml
<?xml version="1.0" encoding="Windows-1252"?>
<?xml-stylesheet type="text/xsl" href="essai.xsl"?>
<infos>
<essaid val="ligne1
ligne2 suite ligne
2
ligne3"/>
</infos>
Le fichier essai.xsl
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE xsl:stylesheet [<!ENTITY nbsp " ">]>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable
name="gReplaceCR"><xsl:text>
</xsl:text></xsl:variable>
<xsl:variable name="gReplaceSPACE"> <xsl:text> </xsl:text></xsl:variable>
<xsl:template match="/">
<html>
<HEAD><title>Infos</title></HEAD>
<body >
infos/essaid :<br/>
<xsl:call-template name="doReplaceCR">
<xsl:with-param name="text" select="infos/essaid/@val"/>
</xsl:call-template>
</body>
</html>
</xsl:template>
<xsl:template name="doReplaceCR">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains( $text, $gReplaceCR)">
<xsl:value-of select="substring-before( $text, $gReplaceCR)"/>
<xsl:element name="br"/>
<xsl:call-template name="doReplaceCR"><!-- recurse -->
<xsl:with-param name="text" select="substring-after( $text,
$gReplaceCR)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="doReplaceSPACE">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains( $text, $gReplaceSPACE)">
<xsl:value-of select="substring-before( $text, $gReplaceSPACE)"/>
<xsl:text> </xsl:text>
<xsl:call-template name="doReplaceSPACE"><!-- recurse -->
<xsl:with-param name="text" select="substring-after( $text,
$gReplaceSPACE)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Xavier
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Thu Apr 21 16:15:39 2005