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 :

[C# Xlst2 Saxon] : transformation des entities en caractère


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut [C# Xlst2 Saxon] : transformation des entities en caractère
    Bonjour à tous

    tout d'abord le contexte :

    - Je développe en C# une appli qui manipule du XML. Pour cela j'utilise l'Api saxon.
    - Mon fichier Xml source est en UTF-8 avec des entities .
    - J'ai préparé une XLST 2.0 qui normalement devrait conserver ces entities car j'utilise un character-maps
    - Pour les tests , j'utilise XmlSpy configuré pour utiliser le moteur XSLT saxon (pas celui du produit)

    Quand je lance une transformation dans XmlSpy avec cette Xslt j'ai mon fichier résultat qui contient des entities. (nickel ! )

    Dans mon appli ,avec le même fichier Xml source et le même fichier xsl , mon fichier résultat contient les caractères accentués à la place des entities.

    Mon Code C# :
    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
               var pathXslt = new FileInfo(@"D:\RepriseDataFM\XSLT\PROD-DAM2Unified.xslt");
                var input = new FileInfo(outFileTemp);
                var output = new FileInfo(fileXml);
     
                var processor = new Processor();
                var compiler = processor.NewXsltCompiler();
                var executable = compiler.Compile(new Uri(pathXslt.FullName));
     
                // transformation 
                var destination = new DomDestination();
     
                using (var inputStream =input.OpenRead())
                {
                    var transformer = executable.Load();
                    transformer.SetInputStream(inputStream, new Uri(input.DirectoryName));
                    transformer.Run(destination);
                }
     
                // sauvegarde 
                destination.XmlDocument.Save(output.FullName);
    c'est une reprise d'un exemple d'utilisation de la transformation saxon trouvé sur le net.


    Je pense qu'il doit manquer du paramétrage ... mais là je ne vois pas ...




    pour info un extrait de mon xsl,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" method="xhtml" omit-xml-declaration="yes" use-character-maps="map_all" encoding="UTF-8"/> 
    <xsl:strip-space elements="*"/>
    <xsl:include href="HTMLAll_map.xsl"/> 
    <template match .... >
    un extrait de mon character-maps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:character-map name="map_all">
    	<xsl:output-character character="ƒ" string="&amp;fnof;"/>
    	<xsl:output-character character="Α" string="&amp;Alpha;"/>
    	<xsl:output-character character="Β" string="&amp;Beta;"/>
    	<xsl:output-character character="Γ" string="&amp;Gamma;"/>
    	<xsl:output-character character="Δ" string="&amp;Delta;"/>
    	<xsl:output-character character="Ε" string="&amp;Epsilon;"/>
    	<xsl:output-character character="Ζ" string="&amp;Zeta;"/>
    	<xsl:output-character character="Η" string="&amp;Eta;"/>
    ...
    ... j'ai 250 défintions de caractères spéciaux ou accentués

    Si quelqu'un pouvait me donner un coup de main ... ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    je ré-up ce post ...

    je n'ai a ce jour toujours pas trouvé de solution ...

    Si qlq 1 pouvais m'aider ... j'imagine ne pas être le seul à transformer du xml avec entities ? !

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    as tu comparé les 2 fichiers (celui généré par XmlSpy et celui généré par code) ?

    J'aurais tendance à dire que l'encodage peut jouer dans ce genre de situation.

    Après, n'utilisant pas cette librairie, difficile d'en dire beaucoup plus !
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    as tu comparé les 2 fichiers (celui généré par XmlSpy et celui généré par code) ?
    oui et j'ai la différence citée ci-dessus.
    Avec XmlSpy configuré avec saxon j'ai bien mes entités
    Avec mon appli je me retrouve avec les caractères accentués UTF-8.

    Citation Envoyé par theMonz31 Voir le message
    J'aurais tendance à dire que l'encodage peut jouer dans ce genre de situation.
    Dans les deux cas nous sommes en UTF-8.

    Citation Envoyé par theMonz31 Voir le message
    Après, n'utilisant pas cette librairie, difficile d'en dire beaucoup plus !
    merci quand même pour ton aide

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    celà dit, il y a quoi dans le fichier : " HTMLAll_map.xsl" qui est référencé dans le xml généré par saxon ?

    Si celà se trouve, le HTMLall_map est identique à ton code avec le remplacement de caractère !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

Discussions similaires

  1. Transformer des chaînes de caractère
    Par phyfab dans le forum MATLAB
    Réponses: 1
    Dernier message: 06/09/2013, 18h52
  2. Réponses: 3
    Dernier message: 26/03/2013, 17h36
  3. Transformation des caractères accentués
    Par stounouslous dans le forum NetBeans
    Réponses: 9
    Dernier message: 29/09/2010, 17h14
  4. Réponses: 2
    Dernier message: 09/07/2008, 15h20
  5. Réponses: 11
    Dernier message: 10/03/2008, 12h49

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