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] XML+XSL=HTML avec charset UTF-16


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut [XSLT] XML+XSL=HTML avec charset UTF-16
    Bonjour,

    J'ai une application qui produit un affichage HTML via 1 fichier XML + 1 feuille de style XSL. (via l'objet Microsoft shell.explorer)

    Mon problème est le suivant:
    Lors de la visu HTML, tous les caractères accentués ainsi que les espaces sont dans les choux.
    En effet, lorsque je visualise le code HTML produit, je me rends compte qu'une balise META a été rajouté dans le <HEAD> avec comme encoding UTF-16..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-16" />
    Alors que je voudrais de l'iso-8859-1...
    Voici le début de mon code XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="iso-8859-1" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
       <xsl:template match="/">
          <html>
             <head>
                <link rel="stylesheet" type="text/css" href="F:/web/style.css" />
             </head>
             <body>
    ....
    Même si je rajoute l'option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="html" indent="yes" encoding="ISO-8859-1"/>
    cela ne change rien...
    De même si je rajoute dans la partie <HEAD> de mon XSL l'appel de la bonne META, je me retrouve avec en 1er la META avec UTF-16 et ensuite ma META mais c'est UTF-16 qui est prise en compte...
    Quelqu'un connait-il une parade pour eviter que la conversion ne génère cette META avec le charset UTF-16 ?
    Merci !
    Steph

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Il y un "bug" de msxml connu et jamais corrigé qui fait qu'il ne produit que du UTF-16 (en tout cas avec du xml en sortie)
    Comment contourne-t-on ce pb : moi je ne connais qu'un seul moyen.
    lire comme un fichier texte ou une chaine avec des fonctions du langages et remplacé la chaine UTF-16 par celle qui convient .
    un pied....
    Par contre pas eu de pb avec html

  3. #3
    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
    Bonsoir,

    c'est un problème classique avec MSXML : quand on utilise TransformNode(), le résultat est renvoyé dans une chaîne automatiquement converti en UTF-16, sans que le processeur XSLT fasse la sérialisation dans l'encodage qu'on lui a spécifié. La seule solution est d'utiliser TransformNodeToObject() à la place.
    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

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Erwy
    Il y un "bug" de msxml connu et jamais corrigé qui fait qu'il ne produit que du UTF-16 (en tout cas avec du xml en sortie)
    Comment contourne-t-on ce pb : moi je ne connais qu'un seul moyen.
    lire comme un fichier texte ou une chaine avec des fonctions du langages et remplacé la chaine UTF-16 par celle qui convient .
    un pied....
    Merci pour cette réponse rapide... mais Mince alors !!
    Et si on prends le pb dans l'autre sens, cad comment écrire les caractères accentués dans mon XSL afin qu'ils soient correctement affichés en UTF-16 ?
    J'ai essayé des trucs du style &amp;#233; etc.. mais c'est pas bon..
    Merci !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par GrandFather
    Bonsoir,

    c'est un problème classique avec MSXML : quand on utilise TransformNode(), le résultat est renvoyé dans une chaîne automatiquement converti en UTF-16, sans que le processeur XSLT fasse la sérialisation dans l'encodage qu'on lui a spécifié. La seule solution est d'utiliser TransformNodeToObject() à la place.
    Oui j'ai bien utilisé TransformNode().
    Finalement, pour contourner ce pb, j'ai écrit les caractères accentués dans le fichier XSL de manière à ce qu'ils soient correctement interprétés en UTF-16.
    Par ex. pour écrire Réseau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    R<xsl:text disable-output-escaping="yes">&#x26;&#x23;xE9;</xsl:text>seau
    Sinon si ça peut aider quelqu'un avec l'espace de nommage uri-xsl, le problème ne se produit pas, mais on accède uniquement aux fonctions de base XSL avec cet espace là...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:stylesheet xmlns:xsl="uri:xsl">
    Merci

Discussions similaires

  1. [XSLT] XML/XSL > XML parser error 3
    Par camyo dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 08/06/2006, 14h42
  2. xml---(xsl)----->html
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 31/05/2005, 14h40
  3. [XSLT] Générer un HTML avec du FO
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/04/2005, 10h19
  4. [xml-xsl] Probleme avec position()
    Par seb30 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/04/2005, 11h10
  5. Transformation xml + xsl -> HTML via PHP
    Par petit-ourson dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2003, 22h42

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