4 votes

Utiliser C# pour faire une transformation xslt en ignorant xsl:output

Je fais une transformation xslt dans mon programme c#. Lorsque j'exécute le xslt seul, le résultat est parfait, mais lorsque je l'exécute à l'intérieur de mon programme c#, il laisse toujours de côté l'élément :

<?xml version="1.0" encoding="UTF-8"?>

En haut du document xml résultant. Mon fichier XSLT ressemble à :

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:hd="http://www.hotdocs.com/schemas/component_library/2009"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:xml="http://www.w3.org/XML/1998/namespace">

  <xsl:output method="xml" omit-xml-declaration="no" version="1.0" encoding="UTF-8"/>

  <xsl:template match="/xsd:schema">
     <hd:componentLibrary xmlns:hd="something" version="10">
     </hd:componentLibrary>
  </xsl:template>
  <xsl:template match="text()" />
</xsl:stylesheet>

J'exécute le xslt dans mon programme c# comme ceci :

XPathDocument myXPathDoc = new XPathDocument(PathToXMLDocument);
XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load(PathToXSLTDocument);
XmlTextWriter myWriter = new XmlTextWriter(PathToOutputLocation, null);
myXslTrans.Transform(myXPathDoc,null,myWriter);
myWriter.Close();

J'ai essayé le document xslt sans la ligne xsl:output, mais cela ne semble pas aider.

Comment puis-je obtenir la balise ?xml en haut de mon fichier xml de sortie ?

Gracias

1voto

dtb Points 104373

XmlTextWriter est un peu dépassé. Je vous recommande de passer à XmlWriter.Create .

Vous pouvez alors spécifier OmitXmlDeclaration \= faux dans le XmlWriterSettings .

0voto

matiash Points 14851

Si vous utilisez XmlWriter.Create() alors vous pouvez passer un XmlWriterSettings en tant que paramètre. Le site OmitXmlDeclaration de la classe de paramètres permet de contrôler si la balise est incluse ou non.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X