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 :

[MSXML] Comment empécher la conversion des entités ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [MSXML] Comment empécher la conversion des entités ?
    Bonjour,
    Je suis désolé, je fais un post un peu long, mais je me dis qu'il vaut mieux que vous ayez tous les éléments pour comprendre mon probleme, ça ira plus vite.
    Donc j'utilise ASP (Jscript) avec Microsoft XML Core Services (MSXML) 4.0 pour générer du xml à partir d'informations récupérées dans une base de donnée SQL Server 2000.
    Tout fonctionne bien sauf, comme d'ahbitude, les caractères spéciaux.
    Je récupère donc les informations suivantes dans ma base de donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ID_Q_ET_R QUESTION                   REPONSE                        TITRE               
    --------- -------------------------- ------------------------------ ---------------------
    57        comment ca va ?            tres bien merci.               essais
    63        éssai de question     éessai de réponse    A propos de mon texte
     
    (2 ligne(s) affectée(s))
    je récupère ces infos via une requette SQL qui les stock dans un tableau de résultat (RecordSet)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sqlquery = "SELECT Q.ID_Q_ET_R,Q.QUESTION,Q.REPONSE,T.TITRE FROM Q_ET_R Q,THEME T WHERE T.ID_THEME = Q.ID_THEME";
    rs = objConn.Execute(sqlquery);
    ensuite je crée un objet XML avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       objXML = new ActiveXObject("Msxml2.DOMDocument.4.0");
       objXML.async = false;
       objXML.validateOnParse = true;
       objXML.resolveExternals = true;
       objXML.load(mapFilePath(modelxml.xml));
       objRoot = objXML.documentElement;
    le fichier "modelxml.xml" contenant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="iso-8859-1" ?>
    <root/>
    puis je peuple mon xml avec les infos récupérées de la base :

    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
    if(!rs.EOF)
    {
        rs.MoveFirst();
        //crée le noeud xml
        faqlistroot = objXML.createElement("faqlist");
        objRoot.appendChild(faqlistroot);   
        while (!rs.EOF)
        {
            onode = objXML.createElement("faq");
            faqlistroot.appendChild(onode);
            onode.setAttribute("id_q_et_r", String(rs.Fields("ID_Q_ET_R")));
            onode.setAttribute("titre_theme", String(rs.Fields("TITRE")));
     
     
            child = objXML.createElement("question");
            MyText = objXML.createTextNode(rs.Fields("QUESTION"));
            child.appendChild(MyText);
            onode.appendChild(child);
     
            child = objXML.createElement("reponse");
            MyText = objXML.createTextNode(rs.Fields("REPONSE"));
            child.appendChild(MyText);       
            onode.appendChild(child);               
            rs.MoveNext();
        }
    }
    ceci me génère alors le XML suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0"?>
    <root>
        <faqlist>
            <faq id_q_et_r="57" titre_theme="essais">
                <question>comment ca va ?</question>
                <reponse>tres bien merci.</reponse>
            </faq>
            <faq id_q_et_r="63" titre_theme="A propos de WebMods">
                <question>&amp;#233;ssai de question</question>
                <reponse>&amp;#233;essai de r&amp;#233;ponse</reponse>
            </faq>
        </faqlist>
    </root>
    Ma question est donc la suivante : Comment empécher MSXML de transformer &#233; en &amp;#233; ?
    En effet, ensuite j'utitilise une feuille XSL pour mettre en forme mon contenu et celui ci affiche "&#233;" au lieu de "é" sur ma page HTML...

    Question subsidiaire : pourquoi, alors que dans mon fichier "modelxml.xml" j'ai la définition suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="iso-8859-1" ?>
    me génère t'il du XML avec une définition :
    ??? tant de question me trottent dans la tête...merci de m'aider.
    Merci, à bientôt.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    dites moi au moins si c'est possible...

  3. #3
    Membre régulier Avatar de agueffier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 93
    Points : 114
    Points
    114
    Par défaut
    je suis pas (encore ) spécialiste de MSXML (3.0 dans mon cas) mais pour couper court à tout mes problèmes, j'encode en UTF-16 (Unicode)... plus de pb d'accent et autre dans mon XML... ok ça déporte le problème pour plus tard mais mon XML est UNICODE et chouette.
    Par ailleurs, dans MS XML 3.0, j'utilise le code suivant pour passer créer (le début) du document XML :

    Set mXMLWriter = New MSXML2.MXXMLWriter
    Set mIVBSAXContentHandler = mXMLWriter
    Set mIVBSAXDTDHandler = mXMLWriter
    Set mIVBSAXDeclHandler = mXMLWriter
    Set mIVBSAXLexicalHandler = mXMLWriter

    ' -------------------------------------------------
    Set mXMLDocument = New MSXML2.DOMDocument
    mXMLWriter.output = mXMLDocument

    ' -------------------------------------------------
    ' <?xml ... ?>
    mXMLWriter.version = "1.0"
    mXMLWriter.encoding = "UTF-16"
    mXMLWriter.omitXMLDeclaration = False
    mXMLWriter.standalone = False
    mIVBSAXContentHandler.startDocument

    La ligne "mXMLWriter.encoding = "UTF-16"" est celle qui te sauve de tous tes problèmes d'accentuation...



    Cordialement

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup, je vais éssayer ça, si j'y arrive en JSCRIPT...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/11/2009, 10h24
  2. [AC-2003] Comment empêcher l'utilisation des touches F1 à F16 dans un état
    Par electrosat03 dans le forum IHM
    Réponses: 10
    Dernier message: 07/07/2009, 17h37
  3. Réponses: 2
    Dernier message: 27/11/2008, 17h28
  4. Comment empécher l'enregistrement des images par le navigateur ?
    Par zouetchou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 15/08/2006, 23h14
  5. [VB.Net]Conversion des entités XML
    Par azerty25 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/07/2006, 07h06

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