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# :
c'est une reprise d'un exemple d'utilisation de la transformation saxon trouvé sur le net.
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);
Je pense qu'il doit manquer du paramétrage ... mais là je ne vois pas ...
pour info un extrait de mon xsl,
un extrait de mon character-maps
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 .... >
... j'ai 250 défintions de caractères spéciaux ou accentués
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="&fnof;"/> <xsl:output-character character="Α" string="&Alpha;"/> <xsl:output-character character="Β" string="&Beta;"/> <xsl:output-character character="Γ" string="&Gamma;"/> <xsl:output-character character="Δ" string="&Delta;"/> <xsl:output-character character="Ε" string="&Epsilon;"/> <xsl:output-character character="Ζ" string="&Zeta;"/> <xsl:output-character character="Η" string="&Eta;"/> ...
Si quelqu'un pouvait me donner un coup de main ... ?
Partager