Je transformais mon fichier XML à un autre fichier XML en utilisant les classes de XslCompiledTransform disponibles dans le .NET Framework 3.5XSL Transformation par le code ne donne pas lieu à la même sortie que la transformation XSL fait à travers un outil
Voici mon code.
private static void transformUtil(string sXmlPath, string sXslPath, string outputFileName)
{
try
{
XPathDocument myXPathDoc = new XPathDocument(sXmlPath);
XslCompiledTransform myXslTrans = new XslCompiledTransform();
//load the Xsl
myXslTrans.Load(sXslPath);
//create the output stream
XmlTextWriter myWriter = new XmlTextWriter(outputFileName, null);
//do the actual transform of Xml
myXslTrans.Transform(myXPathDoc, null, myWriter);
myWriter.Close();
}
catch (Exception e)
{
EventLogger eventLog;
eventLog = new EventLogger("transformUtil", e.ToString());
}
}
}
Le code fonctionne, mais le fichier de sortie n'a pas la déclaration XML dans l'en-tête.
**<?xml version="1.0" encoding="utf-8"?>**
Je n'arrive pas à comprendre cela. Lorsque j'utilise le même fichier XSL pour transformer le XML, à l'aide d'un outil comme notepad ++ ou Visual Studio, la transformation contient la déclaration XML dans l'en-tête. XslCompiledTransform est-il responsable de tronquer cette déclaration? Je suis perplexe.
Toute personne autre face des problèmes similaires?
Mon-tête du fichier XSL ressemble à ceci.
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
Pour une raison quelconque le fichier XSL est tronqué se. Xml version = "1.0" encoding = "iso-8859-1"?> –
abhi