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 :

Double Transformation XSLT en C#


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Points : 198
    Points
    198
    Par défaut Double Transformation XSLT en C#
    Salut,

    Mon problème se tient entre le forum XML/XSL et le forum C#. Comme je pense que la solution a peu de chance de provenir du forum XML (ceci n'est pas une question de qualité).

    J'ai un programme console en C# qui doit faire 2 transformations XSLT. Je ne peux pas concaténer les 2.
    La seconde transformation est une mise en forme des données dans les balises de la 1ère transformation.

    Mon problème vient qu'après la 1ère transformation, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns="http://www.w3.org/1999/XSL/Transform"
    qui se rajoute dans ma 1ère balise. A cause de ça, ma seconde transformation ne marche pas.

    Je voudrais soit à la 1ère transformation, que l'application n'ajoute pas ce lien, soit que ceci ne perturbe pas la seconde.

    Voici le code de la seconde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8" ?>
    <stylesheet version="2.0" xmlns="http://www.w3.org/1999/XSL/Transform">
      <output method="text" omit-xml-declaration="yes"/>
     
      <template match="DATA">
        <for-each select="*">
          <value-of select="text()"/>
          <text>;</text>
        </for-each>
      </template>
    </stylesheet>
    Une légende amérindienne raconte qu'il y eut un immense incendie de forêt. Tous les animaux terrifiés et atterrés observaient, impuissants, le désastre. Seul, un colibri s'activait et allait chercher quelques gouttes d'eau dans son bec pour éteindre le feu.
    Au bout d'un moment, le tatou, agacé par ses agissements dérisoires, lui dit :
    'Colibri ! N'es-tu pas fou ? Tu crois que c'est avec ces gouttes d'eau que tu vas éteindre le feu ?
    'Je le sais, répond le colibri, mais je fais ma part...

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Avec XmlDocument on doit pouvoir supprimer un attribut, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    XmlDocument doc = ...;
    ...
    doc.DocumentElement.RemoveAttribute("xmlns");
    (ou quelque chose dans ce gout là...)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Points : 198
    Points
    198
    Par défaut
    Bonne idée, mais ça ne marche pas.

    J'ai approfondi un peu. Lors de la 1ère transformation, le fichier créé a le NamespaceURI à "http://www.w3.org/1999/XSL/Transform". Je pense que le problème vient plutôt de là.

    Je cherche pour savoir comment contourner le problème, car cette propriété du XmlDocument ne peut pas être modifié.
    Pour l'instant, je n'ai pas vu de classe ou propriété permettant de spécifier l'espace de la transformation ou du fichier XML.
    Une légende amérindienne raconte qu'il y eut un immense incendie de forêt. Tous les animaux terrifiés et atterrés observaient, impuissants, le désastre. Seul, un colibri s'activait et allait chercher quelques gouttes d'eau dans son bec pour éteindre le feu.
    Au bout d'un moment, le tatou, agacé par ses agissements dérisoires, lui dit :
    'Colibri ! N'es-tu pas fou ? Tu crois que c'est avec ces gouttes d'eau que tu vas éteindre le feu ?
    'Je le sais, répond le colibri, mais je fais ma part...

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    En quoi cela fait planter ta deuxième transformation ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Points : 198
    Points
    198
    Par défaut
    La 2ème transformation ne plante pas, mais ne fonctionne pas.

    La balise <text> n'est pas prise en compte. Toutes mes données sont mises les unes après les autres sans être séparé par le ;.

    J'ai trouvé une solution qui ne me plait pas, mais qui au moins à le mérite de marcher.
    On ne peut pas charger le fichier par un XmlDocument, parce que l'information xmlns est prise en compte à la création de la classe. En supprimant l'attribut, ceci n'a rien changé, ma transformation n'était pas totalement pris en compte.

    La solution est d'ouvrir le fichier avec un Streamreader, de chercher ma chaîne xmlns... avec le lien derrière et de la supprimer. Le fichier créé peut être transformé et j'ai bien ma séparation entre mes données.

    Si qqun a une autre solution à me proposer. Je trouve celle-ci assez moyenne, vu qu'il faut ouvrir le fichier, écrire le résultat dans un autre, supprimer le premier, puis renommer le second.
    Complexe?
    Une légende amérindienne raconte qu'il y eut un immense incendie de forêt. Tous les animaux terrifiés et atterrés observaient, impuissants, le désastre. Seul, un colibri s'activait et allait chercher quelques gouttes d'eau dans son bec pour éteindre le feu.
    Au bout d'un moment, le tatou, agacé par ses agissements dérisoires, lui dit :
    'Colibri ! N'es-tu pas fou ? Tu crois que c'est avec ces gouttes d'eau que tu vas éteindre le feu ?
    'Je le sais, répond le colibri, mais je fais ma part...

Discussions similaires

  1. transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/06/2005, 16h46
  2. xhtml-->xml transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 15/06/2005, 15h23
  3. xhtml->xml transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 14/06/2005, 11h17
  4. [XSLT] Récupération de la transformation Xslt
    Par Pignoufy dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 06/04/2005, 15h11

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