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 :

[XSL] problème avec le symbole €


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club Avatar de fumesec
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut [XSL] problème avec le symbole €
    Bonjour à tous!

    Eh oui encore moi et mes problèmes de traitement de fichiers XML.
    Je vous expose le souci :

    J'ai un fichier XML classique et qui contient un élément qui se présente sous la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <?xml version="1.0" encoding="ISO-8859-15" ?> 
    ...
    <texte>le prix de ce produit est de 25 €.</texte>
    ...
    Je souhaite le transformer en HTML et pour ce faire j'utilise la fonction suivante :
    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
     
    <?php
     
     
     // Nouvelle instance du processeur
     
         $xslt = new XSLTProcessor();
     
         // Chargement du fichier XML
     
         $xml = new DOMDocument('1.0','ISO-8859-1');
         $url = "";
         $url = 'http://mon.adresse.qui.va.bien';
         $xml->load($url);
     
     
         // Chargement du fichier XSL
     
         $xsl = new domDocument();
         $xsl -> load('fichier.xsl');
     
         // Import de la feuille XSL
     
         $xslt -> importStylesheet($xsl);
     
         // Transformation et affichage du résultat
     
         echo utf8_decode($xslt -> transformToXml($xml));
     
    ?>
    et j'obtiens le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    le prix de ce produit est de 25 ?.
    Comment faire pour éviter que mon symbole € ne soit remplacé dans ma page html pour un simple point d'interrogation?

    Je vous remercie par avance de votre aide.

  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,
    Citation Envoyé par fumesec Voir le message
    Comment faire pour éviter que mon symbole € ne soit remplacé dans ma page html pour un simple point d'interrogation?
    En étant logique jusqu'au bout.

    Tu spécifies dans ta source XML un encodage iso-8859-15, qui comprend le caractère Euro, et tu spécifies un encodage iso-8859-1, qui ne comprend pas le caractère Euro, pour le charger dans ton code PHP.
    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 éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    sinon tu utilise l'unicode du signe euro

  4. #4
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    voila le site officiel, bien et complet :

    tous_les_unicode
    ... un flash ... et ça repart

    700R ... catch me if u can

    Best regards,
    .

  5. #5
    Membre du Club Avatar de fumesec
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Bonjour à tous et merci pour vos réponses,

    Pour répondre à GrandFather, j'ai rectifié cette incohérence d'encodage mais malheureusement cela ne change rien j'ai toujours mes points d'interrogation à la place de mon symbole €...

    Fraoustin et Laurentibus, pourriez vous me donner quelques exemples avec les caractères unicode. En effet, j'ai effectué quelques recherches et les seuls exemples que je trouve sont du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <!DOCTYPE author [
        <!ENTITY email "josmith@theworldaccordingtojosmith.com">
    ]>
    si j'ai bien compris cela remplacera &email dans le document XML par l'adresse définie précédemment (mais peut être n'ai je rien compris du tout ).
    Or dans mon document XML j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     <?xml version="1.0" encoding="ISO-8859-15" ?> 
    ...
    <texte>le prix de ce produit est de 25 .</texte>
    ...
    et non pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="ISO-8859-15" ?> 
    ...
    <texte>le prix de ce produit est de 25 &€.</texte>
    ...
    Une idée sur la question?

    Merci d'avance

  6. #6
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    &email;

    et sinon tu confonds encoding et entity ils n'interviennent pas au même niveau pour moi
    pour moi encoding intervient au niveau du fichier, à lors que entity au niveau xml (juste une simplification d'écriture)

  7. #7
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Il faut être cohérent, et même complètement !
    car si y a du ISO-8859-1, du ISO-8859-15, et du utf-8 (ici: " echo utf8_decode($xslt -> transformToXml($xml));
    ")... ca va pas le faire...
    Le top à mon avis, c'est de tout faire en utf-8...
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  8. #8
    Membre du Club Avatar de fumesec
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par neilbgr Voir le message
    Il faut être cohérent, et même complètement !
    car si y a du ISO-8859-1, du ISO-8859-15, et du utf-8 (ici: " echo utf8_decode($xslt -> transformToXml($xml));
    ")... ca va pas le faire...
    Le top à mon avis, c'est de tout faire en utf-8...
    Je suis d'accord avec vous mais le fichier XML que je reçois est en ISO-8859-15 et si je n'utilise pas utf8_decode, les accents ne s'affichent pas correctement (mais absolument pas en plus!!). Par contre j'ai rectifié ISO-8859-1 par ISO-8859-15

    Alors que dois je faire pour mon symbole €? Je vous avouerai que je suis tout fait perdue

  9. #9
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Désolé de paraitre un peu lourd, mais utf8_decode sert à, selon le manuel :
    utf8_decode: décode la chaîne data , en supposant qu'elle est au format UTF-8 , et la convertit au format ISO-8859-1 .
    Ce n'est pas le cas où il faut l'utiliser. C'est meme l'inverse me semble-t-il ? utf8_encode()
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  10. #10
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    moi aussi j encode tout en utf8 pour garder les accents ...
    ... un flash ... et ça repart

    700R ... catch me if u can

    Best regards,
    .

  11. #11
    Membre du Club Avatar de fumesec
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Non pas que je remette en cause tout ce que vous me dites mais lorsque j'encode en utf8 plus rien ne focntionne au niveau des accents. que faire?

    Je reprends donc tout depuis le début. J'ai un fichier xml que je récupère par l'intermédiaire d'une adresse Web.. Ce fichier est obtenu après l'interrogtaion d'un service Web de l'un de nos fournisseurs. La structure de ce fichier est la suivante :

    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
     
    <?xml version="1.0" encoding="ISO-8859-15" ?> 
    - <resultat>
      <nb_annonces>28</nb_annonces> 
      <nb_pages>2</nb_pages> 
    - <pages>
      <page en_cours="true">1</page> 
      <page>2</page> 
      </pages>
    - <annonce id="12345">
      <reference>ABCDEFG</reference> 
      <titre>Mon titre</titre> 
      <texte>Charmant petit studio.... Prov/ch. 35.00€. Hono 123€</texte> 
      </annonce>
    ...
    </resultat>
    Comment dois-je faire pour traiter ce fichier et le transformer en html, en sachant que j'ai créé mon fichier xsl? Quel encodage dois-je utiliser dans le fichier xsl?

    Merci d'avance pour votre aide car là je ne sais plus comment faire et comment afficher correctement le symbole € ainsi que les accents par la même occasion?

  12. #12
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    quel est le format du fichier xml que tu récuperes ??
    ... un flash ... et ça repart

    700R ... catch me if u can

    Best regards,
    .

  13. #13
    Membre du Club Avatar de fumesec
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par laurentibus Voir le message
    quel est le format du fichier xml que tu récuperes ??
    Comment ça quel format? je récupère mon fichier de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
          $xslt = new XSLTProcessor();
     
         // Chargement du fichier XML
     
         $xml = new DOMDocument('1.0','ISO-8859-15');
         $url = "";
         $url = 'http://mon.adresse.qui.va.bien';
         $xml->load($url);
     
    ?>
    Je ne sais pas si cela répond à votre question...

  14. #14
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    alors la je pense que le pb viens de la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $xml = new DOMDocument('1.0','ISO-8859-15');
    tu peux pas mettre un truc du style
    $xml = new DOMDocument('1.0','UTF-8');

    ?
    ... un flash ... et ça repart

    700R ... catch me if u can

    Best regards,
    .

  15. #15
    Membre du Club Avatar de fumesec
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Si je mets ce que vous m'indiquez voilà le résultat dans ma page Web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Charmant petit studio...Prov/ch. 35.00€. Hono 123€

  16. #16
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    ton fichier xsl est enregistrer au format UTF-8 ???
    si ce n'est pas le cas il faut changer et modifier tout les signes bizarres qu il y aura apres la modif ( ex : é deviendra E9 et il faudrat remettre é apres avoir changer le format )


    sous ton éditeur: format --> UTF-8

    sinon sous bloc notes : ouvrir le xsl --> enregistrer sous puis modifier la liste codage.

    dans ton xsl mets aussi :
    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>


    tente comme ca ...
    ps : peut etre quil faudrat aussi mettre tes xml source en UTF8
    ... un flash ... et ça repart

    700R ... catch me if u can

    Best regards,
    .

  17. #17
    Membre du Club Avatar de fumesec
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    bonjour à tous et désolée pour ma réponse un peu tardive,

    Je tenais à vous remercier tous pour vos différents conseils.
    J'ai enfin réussi à résoudre mon problème de symbole €, en fouillant sur internet et en appliquant vos conseils. Il s'agissait bien d'un problème d'encodage et surtout d'une mauvaise syntaxe dans mon fichier .xsl (eh oui je suis une débutante ).

    Tout fonctionne désormais à merveille. Cool.

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

Discussions similaires

  1. [XML/XSL]problème avec for-each
    Par mavina dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/06/2006, 15h28
  2. [xsl] Problème avec for-each
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/03/2006, 11h28
  3. [xsl] problème avec xml:space
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/12/2005, 16h22
  4. [XSL] problème avec copy espace de nom
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/10/2005, 15h18
  5. [XSL]problème avec <xsl:when>
    Par Devil666 dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 27/05/2005, 16h54

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