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

XML Discussion :

[MSXML] Utilisation de XSLT dans programme C++


Sujet :

XML

  1. #1
    Membre régulier Avatar de sly078
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 116
    Points
    116
    Par défaut [MSXML] Utilisation de XSLT dans programme C++
    Bonjour,

    Je débute avec les feuilles de style de transformation XSLT. Mais je pense que mon problème est plus un problème de C++. J'ai un fichier XSLT qui applique une transformation à partir de deux fichiers XML. J'utilise MSXML (je suis sous Visual) pour charger des fichiers XML. Je peux donc charger des fichiers dans des instances de documents XML de MSXML. Mais je ne sais pas comment leur appliquer la transformation à partir de mon programme C++.

    Je sais simplement afficher la sortie XSLT à partir de Visual. Dois-je charger la feuille de style comme je charge un fichier XML et l'appliquer je ne sais comment ? Dois-je charger mes fichiers XML et trouver une commande qui leur applique la transformation ?

    Merci de votre aide,

    Sly

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Une petite recherche rapide sur internet de "msxml xslt" donne notamment Doing XSLT with MSXML in C++.
    Est-ce que c'est ce que tu cherches ?

    MAT.

  3. #3
    Membre régulier Avatar de sly078
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 116
    Points
    116
    Par défaut
    Arf, je suis tombé sur pas mal de choses sur MSDN qui explique comment utiliser les transformations en C# et VB mais pas en C++. Donc on dirait bien que ton lien est exactement ce que je recherchais. Je vais voir si je m'en sors, et sinon je reviendrai poser quelques questions...

    Merci beaucoup

  4. #4
    Membre régulier Avatar de sly078
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 116
    Points
    116
    Par défaut
    Le code du lien fonctionne bien. Par contre il est beaucoup plus compliqué que ce que montre MSDN :
    http://msdn.microsoft.com/en-us/libr...transform.aspx

    D'après MSDN, en C++, on peut utiliser les méthodes Load et Transform de la classe XslCompiledTransform. En C# ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Load the style sheet.
    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load("output.xsl");
     
    // Execute the transform and output the results to a file.
    xslt.Transform("books.xml", "books.html");
    Le problème est que je ne sais pas accéder aux méthodes de la classe XslCompiledTransform qui appartient au namespace System.Xml.Xsl.

  5. #5
    Membre régulier Avatar de sly078
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 116
    Points
    116
    Par défaut
    Bon, j'ai réussi à faire plus simple que le code du premier lien en utilisant la méthode transformNodeToObject de IXMLDOMDocument (et en utilisant l'exemple de MSDN) :
    http://msdn.microsoft.com/en-us/libr...61(VS.85).aspx

    Ca donne quelque chose comme ça :
    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
    MSXML2::IXMLDOMDocumentPtr pXml(MSXML2::CLSID_DOMDocument);
    MSXML2::IXMLDOMDocumentPtr pXmlOutput(MSXML2::CLSID_DOMDocument);
    MSXML2::IXMLDOMDocumentPtr pXslt(CLSID_FreeThreadedDOMDocument);
     
    pXml->load(_bstr_t("param.xml"));
    pXslt->load(_bstr_t("XSLTFile1.xslt"));
     
    IDispatch *pDisp;
    VARIANT vObj;
    CoCreateInstance(MSXML2::CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, MSXML2::IID_IXMLDOMDocument, (void**)&pXmlOutput); 
    pXmlOutput->QueryInterface(IID_IDispatch, (void **)&pDisp);
    vObj.vt = VT_DISPATCH;
    vObj.pdispVal = pDisp; 
    pXml->transformNodeToObject(pXslt, vObj); 
    pXmlOutput->save("resultat.xml");
    où param.xml est le fichier que je veux transformer, XSLTFile1.xslt ma feuille de style de transformation et resultat.xml le fichier XML transformé.

    Si personne n'a mieux à me proposer je crois que je vais en rester là...

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

Discussions similaires

  1. Utilisation de REPLACE() dans un programme PL/SQL
    Par Djene dans le forum PL/SQL
    Réponses: 8
    Dernier message: 10/12/2009, 11h30
  2. Utiliser fonctionnalité ImageJ dans programme Java
    Par diophantes dans le forum ImageJ
    Réponses: 2
    Dernier message: 16/09/2008, 11h40
  3. Utilisation commande SSH dans programme C
    Par lestat02 dans le forum C
    Réponses: 2
    Dernier message: 24/04/2008, 10h56
  4. utiliser fichier XML dans un programme C++
    Par ilimo dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 13/04/2006, 11h42
  5. utilisation de zlib dans un programme c/c++
    Par romzaide dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 27/05/2005, 14h57

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