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

C# Discussion :

Recuperer le resultat d'un transformée (XSL.Transform) dans une stream ?


Sujet :

C#

  1. #1
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut Recuperer le resultat d'un transformée (XSL.Transform) dans une stream ?
    bonjour ..
    SVP je cherche à recuperer le resulat d'un trasformée XSL dans une stream..
    mon programme est le suivant :
    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
    35
    36
    37
     // chargement de la feuille de style qui permet de convertir les balises HTML en Balises FO
                XslCompiledTransform xslt = new XslCompiledTransform();
                xslt.Load(Server.MapPath("\\xhtml-to-xslfo.xsl"));
    
                // chargement du fichier d'entrée XML DsActAction.xml
                XmlDocument doc = new XmlDocument();
                doc.Load(Server.MapPath("\\donnees.xml"));
    
                // Définition de l'espace de nommage
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
                nsmgr.AddNamespace("ab", "http://tempuri.org/donnees.xsd");
    
                // chargement du fichier qui contient le fragment HTML à convertir
                XmlReaderSettings settingsR = new XmlReaderSettings();
                settingsR.ProhibitDtd = false;
                XmlDocument tmpDoc = new XmlDocument();
                
                
    
    
                
                // Selection des Noeuds qui contienent les fragments HTML
                XmlNodeList fileNodes = doc.SelectNodes("/ab:DsActAction/ab:ACT_ACTION/ab:ACT_TEXTE", nsmgr);
    
    
    
                int i = 1;
    
    
                 foreach (XmlNode node in fileNodes)
                 {
                     tmpDoc.LoadXml("<root>" + node.InnerText + "</root>");
                     
                     xslt.Transform(tmpDoc,??????);
                     i = i + 1;
    
                 }
    comment je peux recuperer mon resultat et en meme temps l'afficher ?
    merci bien

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Ben tu mets le résultat dans un fichier, et ensuite tu crées un reader sur ce fichier non ?

  3. #3
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    mais je ne veux pas crée un fichier dans mon apli !
    si je crée un fichier donc ça va etre stoquée dans mon apli c ça ? !

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par tarekos Voir le message
    mais je ne veux pas crée un fichier dans mon apli !
    si je crée un fichier donc ça va etre stoquée dans mon apli c ça ? !
    Ben je sais pas ce que tu veux en faire de ta transformation.

    Sinon tu peux passer en paramètre un Stream à ta méthode Transform.

    Dis nous ce que tu veux faire avec.

  5. #5
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    merci bien.
    donc je vai vous expliquer mon programme :
    voila :
    1- j'ai un fichier XML qui contient des fragment html
    2- j'ai un fichiers XSL XSLtoFO qui permet de convertir un fichier xhtml en un fichier html

    avant tout je charge ma feuille de style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     // chargement de la feuille de style qui permet de convertir les balises HTML en Balises FO
    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load(Server.MapPath("\\xhtml-to-xslfo.xsl"));
    apres je charge mon fichier XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     // chargement du fichier d'entrée XML DsActAction.xml
    XmlDocument doc = new XmlDocument();
    doc.Load(Server.MapPath("\\Donnees.xml"));
    la j'extrait mes fragments dans un fichiers xml comme suit :
    XmlWriter tmpFoDoc = XmlWriter.Create(str,settingsW);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList fileNodes = doc.SelectNodes("/ab:DsActAction/ab:ACT_ACTION/ab:ACT_TEXTE[1]", nsmgr);
    et mon probleme c'est que la class transform de XSL:
    accepte plusieurs paramtere:
    l'ideal que je veux c'est , xsl.transform(string, strig)
    mais la ce string reference un fichier , y à pas un moyen de charger un fichier en memoire dans avoir à le créer .
    merci bien

  6. #6
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par tarekos Voir le message
    l'ideal que je veux c'est , xsl.transform(string, strig)
    mais la ce string reference un fichier , y à pas un moyen de charger un fichier en memoire dans avoir à le créer .
    merci bien
    Tu n'as qu'à utiliser une des surcharges qui prends en paramètre un TextWriter, et lui donner un StringWriter (oublie pas le StringBuilder).

    Comme ça tout sera stocké dans une string.

  7. #7
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    SVP pouriez vous me donner un Exemple ?
    please ?
    merci

  8. #8
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par tarekos Voir le message
    SVP pouriez vous me donner un Exemple ?
    please ?
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StringBuilder sb = new StringBuilder();
    StringWriter sw = new StringWriter(sb);
    xsl.Transform(..., sw);
    Par contre faut regarder dans la MSDN ce qu'il faut mettre dans les premiers arguments.

  9. #9
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    impécalble waweeeeee.
    ça marche bien...
    c ça ce que je cherchais ...
    bravo je vous remerci beaucoup...
    cette fois ci j'ai un 2eme pb:
    bon, on a reussi donc à récuperer le resultat de la stransformée dans une string
    mais j'ai tjrs un pb avec mon fichier d'entrée qui est un fichier XML qui contient des fragment resuperée comme suit :
    XmlDocument tmpDoc = new XmlDocument();
    XmlNodeList fileNodes = doc.SelectNodes("/ab:donnees/ab:frag_html/ab:grag_TEXTE", nsmgr);

    mais le probleme ce fichier ça passe pas à la classe transformée quand il contient des entité (&egrave;....etc) donc il lui faut la DTD je ne sais pas ou la mettre, je sais faire ça avec XMLReader je lui donne une fonction qui contient tout la definition de la DTD.
    mais la j'ai pas ou utiliser XMLreader.
    avant je travaillais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xslt.Transform(XmlReader.Create(Server.MapPath("\\d2.xml"), settingsR, CreateXhtmlContext()), XmlWriter.Create(Server.MapPath("\\html_fo.fo"), settingsW));
    mais la je sais pas ou mettre XmlReader puisque je travaille avec XmlDocument pour remplier mes données.
    merci bien

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/07/2006, 10h59
  2. Réponses: 1
    Dernier message: 08/05/2006, 15h33
  3. [XSL] Transformation xsl et jeu de caractères cyrillique
    Par Maximil ian dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/09/2005, 11h41
  4. Réponses: 2
    Dernier message: 19/05/2004, 10h13
  5. Transformation de date dans une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/10/2003, 11h31

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