Sto utilizzando un XsltCompiledTransform
per trasformare alcuni XML in un frammento di HTML (non un documento HTML completo, solo un DIV che includerò nella pagina generata altrove).Escludi la direttiva XML da XslCompiledTransform.Transform output
che sto facendo la trasformazione come segue:
StringBuilder output = new StringBuilder();
XmlReader rawData = BusinessObject.GetXml();
XmlWriter transformedData = XmlWriter.Create(output);
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("stylesheet.xslt");
transform.Transform(rawData, transformedData);
Response.Write(output.ToString());
Il mio problema è che il risultato della trasformazione sempre inizia con questa direttiva XML:
<?xml version="1.0" encoding="utf-16"?>
Come posso evitare questo di apparire nei miei dati trasformati?
EDIT:
sto dicendo la XSLT che io non voglio che in uscita una dichiarazione XML con
<xsl:output method="html" version="4.0" omit-xml-declaration="yes"/>
ma questo sembra non avere alcun effetto sulla direttiva che appaiono nelle la mia uscita.
È interessante notare che sia la mia origine dati XML sia la mia trasformazione XSLT si specificano come UTF-8
non UTF-16
.
UPDATE: L'UTF-16 sembra essere apparire perché sto utilizzando una stringa (costruttore) come meccanismo di uscita. Quando cambio il codice per utilizzare un MemoryStream
anziché uno StringBuilder
, la codifica UTF-8 viene mantenuta. Immagino che questo abbia qualcosa a che fare con il funzionamento interno del tipo string
e come si occupa della codifica.
Sì, questa è la strada da percorrere. Non è un problema XSLT - la dichiarazione è scritta da 'XmlWriter' in primo luogo, non da' XslCompiledTransform'. –
Ma perché XmlWriter non prende le sue impostazioni dall'XSLT? – kristian
Perché una volta creato, non può modificare le sue impostazioni in base alla progettazione. Quindi, una volta che XSLT lo riceve, non può davvero fare nulla al riguardo. Se usi un overload 'Transform()' che accetta un 'TextWriter' o' Stream', creerà un 'XmlWriter' con le impostazioni corrette per te. –