IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT ]remplacement d un caractere par son code


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut [XSLT ]remplacement d un caractere par son code
    Pour transformer un fichier avec des caracteres suédois j utilise le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <xsl:stylesheet 
    	version="1.0" 
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    	xmlns:fo="http://www.w3.org/1999/XSL/Format">
    	<xsl:output encoding="ISO-8859-1" omit-xml-declaration="no"/>
     
    	<xsl:template match="/">
    		<xsl:apply-templates/>
    	</xsl:template>
     
    	<xsl:template match="*">
    		<xsl:copy>
    			<xsl:copy-of select="@*"/>
    			<xsl:apply-templates/><!--récursivité-->
    		</xsl:copy>
    	</xsl:template>
     
    	<xsl:template match="text()">
    		<!--åÅäÄöÖüÜ-->
    		<xsl:call-template name="replaceText">
    			<xsl:with-param name="vString" select="."/>
    			<xsl:with-param name="vChar" select="string('å')"/>
    			<xsl:with-param name="vCharCode" select="'å'"/>
    		</xsl:call-template>		
    	</xsl:template>
     
    	<xsl:template name="replaceText">
    		<xsl:param name="vString"/>
    		<xsl:param name="vChar"/>
    		<xsl:param name="vCharCode"/>
    		<xsl:choose>		
    			<xsl:when test="contains($vString, $vChar)">
    				<xsl:value-of select="substring-before($vString, $vChar)" />
    				<xsl:text></xsl:text>
    				<xsl:value-of select="$vCharCode"/>
    				<xsl:call-template name="replaceText">
    					<xsl:with-param name="vString" select="substring-after($vString, $vChar)"/>
    					<xsl:with-param name="vChar" select="$vChar"/>
    					<xsl:with-param name="vCharCode" select="$vCharCode"/>
    				</xsl:call-template>
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:copy-of select="$vString"/>
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
     
    </xsl:stylesheet>
    Mon probleme vient du fait que je passe des paramètres à mon template qui sont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:with-param name="vChar" select="string('å')"/>
    <!-- qui sera remplacer par-->
    <xsl:with-param name="vCharCode" select="'å'"/>
    la transformation se passe bien mais au lieu d avoir le code en texte, il me remet le même caractère... 'å' (j ai essayé en mettant un autre caractere et le template s execute en remplacant le caractere donc il y a bien transformation)
    Je pense que ces caractèresme posent problème par la suite ds d autres xsl donc il faut absoluement que je trouve une solution

    Merci bcp


    exemlle de xhtml parsé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<body lang="EN-GB" xml:lang="EN-GB">
    		<div class="titre">
    			<table border="0" cellspacing="0" cellpadding="0" style="margin-left:3.95pt; border-collapse:collapse;">
    				<tr>
    					<td width="346" valign="top" style="width:259.4pt;padding:0cm 7.35pt 0cm 7.35pt">
    						<p class="titre">
    							<span lang="SV" xml:lang="SV">3.1<span style='font:7.0pt "Times New Roman"'>             </span>
    							</span>
    							<span lang="SV" xml:lang="SV">åÅExemple de texte</span>
    						</p>
    					</td>
    				</tr>
    			</table>
    		</div>
    	</body>
    </html>

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    quelques pistes possibles :

    - Vérifie que l'encodage déclaré dans le prologue xml de ta feuille de ta feuille de style correspond bien à celui utilisé pour la créer
    - Utilise prioritairement l'encodage UTF-8
    - Utilise plutôt les entités (&#xNNNN que des caractères litéraux pour écrire tes caractères suédois
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    bonjur Grandfather,
    j utilise le jeu de caractere ISO-8859-1 car UTF-8 trop pauvre.

    qt à l utilisation des caratères du type &#xNNNN;
    je prefere eviter car j ai des problemes avec les &nbsp; (le probleme avait été énnoncé d'ailleurs) et n y connaissant rien aux DTD ... je veux vraiment trouver le plus simple

    Ce que je ne comprend pas c pourquoi le output écrit le caractère plutot que la chaîne correspondant au code

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    apparement il faut spécifier le disable-output-escaping="yes"

    j aurai regle mon probleme en spécifiant un jeu de caractère Latin0 en input à tidy...
    donc résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer le & commercial par son code
    Par The Molo dans le forum Langage
    Réponses: 7
    Dernier message: 28/07/2009, 17h07
  2. Réponses: 3
    Dernier message: 18/02/2008, 14h05
  3. Insérer caractère par son code ASCII
    Par Ange44 dans le forum Mise en forme
    Réponses: 2
    Dernier message: 10/04/2007, 12h04
  4. Réponses: 2
    Dernier message: 15/09/2006, 12h07
  5. Comment remplacer un resultat numérique par son libellé ?
    Par bds2006 dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2006, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo