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 :

[PHP][XSLT] problème caractères accentués


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut [PHP][XSLT] problème caractères accentués
    J'ai une fonction qui extrait des données d'une base encodé en latin1
    elle transforme ces données en objet DOM (iso-8859-1)
    cet objet DOM est transformé à l'aide d'une feuille de style xsl (encoding='iso-8859-1') résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning: output conversion failed due to conv error in H:\webdata\dev\free\albums\index.php on line 83
     
    Warning: Bytes: 0xE9 0x32 0x3C 0x2F in H:\webdata\dev\free\albums\index.php on line 83
    ce qui devrais être affiché c'est "zoé" et le truc plante à "zo"...
    Je sait plus quoi faire...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 39
    Points
    39
    Par défaut
    Tu es sur de ton 'objet DOM' ?
    If it can go wrong, it will.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Voici la fonction qui crée l'objet DOM :
    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
    function getFluxXml($req, $nomElem)
    {
       global $LINK;
       connect_to_db();
       $result = mysql_query($req);
     
       if (!$result) 
       {
          echo "Impossible d'exécuter la requête ($req) dans la base : " . mysql_error();
          exit;
       }
     
       /* Création de l'objet DOM */
       $doc=new DOMDocument('1.0', 'iso-8859-1');
       $doc->formatOutput = true;
       $root=$doc->createElement('root');
       $doc->appendChild($root);
     
       while ($row = mysql_fetch_assoc($result)) 
       {
          //Création du xml selon la reqête
          $keys=array_keys($row);
          $elem=$doc->createElement($nomElem);
          $root->appendChild($elem);
          for($i=0; $i<count($keys); $i++)
          {
             $elem->setAttribute($keys[$i],  $row[$keys[$i]]);
             //echo $row[$keys[$i]]." - ";
          }
       }
       mysql_free_result($result);
       mysql_close($LINK);
       return $doc;
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    En gros ma fonction elle crée un objet DOM à la norme iso-8859-1
    et pour chaque ligne de la reqête el crée un element xml avec pour attribut les champs de la ligne résultat

    ex :
    une table client avec un champ nom et un champs prénom.
    dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    nom    prenom
    ----------------
    toto    bob
    truc    alfred
    Si je fait un select * from client
    cela va générer un objet DOM
    du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version='1.0' encoding='ISO-8859-1' ?>
    <root>
    <element nom='toto' prenom='bob' />
    <element nom='truc' prenom='alfred' />
    </root>
    ensuite c'est analysé par un feuille de style
    Quelq'un à une idée de où vient mon problème



  5. #5
    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
    A quoi correspond cette ligne 83 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

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /*77*/$req_sql_get_lst_catalogue="select f.nom, f.nom_html, p.nom as nom_parent from catalogue f, catalogue p where f.parent_catalogue=".$id_catalogue." and p.id_catalogue=f.parent_catalogue";
    /*78*/$xml_get_lst_catalogue=getFluxXml($req_sql_get_lst_catalogue, "catalogue");
     
    /*79*/$xslt = new XSLTProcessor();
    /*80*/$xsl = new domDocument('1.0', 'iso-8859-1');
    /*81*/$xsl -> load($path.'include/transform_body.xsl');
    /*82*/$xslt -> importStylesheet($xsl);
    /*83*/echo $xslt -> transformToXml($xml_get_lst_catalogue);

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    pas d'idée?

  8. #8
    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
    Il est possible que ton problème ne vienne pas de ta source DOM, mais de l'encodage de ton XSL. Quelle est la valeur de l'attribut encoding de ta feuille de style ? Est-elle cohérente avec la valeur d'encoding déclarée dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xsl = new domDocument('1.0', 'iso-8859-1');
    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

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Oui d'ailleur voici le contenu de "transform_body.xsl"
    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
     
    <?xml version='1.0' encoding='iso-8859-1'?>
    <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
    <xsl:output indent='yes' method='xml' omit-xml-declaration='no' encoding='iso-8859-1'/>
    <xsl:output method='html'/>
    <xsl:template match='/root'>
       <body>
          <center>
          <h1>
             <xsl:value-of select='catalogue/@nom_parent'/>
          </h1>
             <table>
                <xsl:for-each select='catalogue'>
                   <tr>
                      <td>
                         <a>
                            <xsl:attribute name='href'>
                               <xsl:value-of select='@nom_html'></xsl:value-of>
                            </xsl:attribute>
                             <xsl:value-of select='@nom' />
                         </a>
                      </td>
                   </tr>
                </xsl:for-each>
             </table>
          </center>
       </body>
    </xsl:template>
    </xsl:stylesheet>

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    personne n'a de solution à mon problème

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Si je comprend bien c'est un bug qui n'a pas de réponse!!!

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    J'ai enfin trouvé une solution
    pour un caractère accentué (exemple ê) il faut mettre &amp;ecirc;

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

Discussions similaires

  1. Problème caractères accentués TextInput
    Par GrosBibi dans le forum Intégration
    Réponses: 1
    Dernier message: 27/03/2009, 10h48
  2. Problème caractères accentués flash CS3
    Par Orinfor dans le forum Flash
    Réponses: 1
    Dernier message: 02/09/2008, 15h45
  3. [MySQL] [XML] problème caractères accentués
    Par Mathcoz dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 31/01/2007, 18h53
  4. [Oracle] [php] insert de caractères accentués
    Par badcur dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/06/2006, 16h42
  5. [Struts] problème caractères accentués
    Par n00noors dans le forum Struts 1
    Réponses: 6
    Dernier message: 10/03/2006, 12h34

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