を使用して、XsltCompiledTransform
一部のXMLをHTMLのフラグメントに変換しています(完全なHTMLドキュメントではなく、他の場所で生成されたページに含めるDIVのみ)。
私は次のように変換を行っています:
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());
私の問題は、変換の結果が常にこのXMLディレクティブで始まることです。
<?xml version="1.0" encoding="utf-16"?>
変換されたデータにこれが表示されないようにするにはどうすればよいですか?
編集:
XSLTにxml宣言を出力したくないと言っています
<xsl:output method="html" version="4.0" omit-xml-declaration="yes"/>
しかし、これは私の出力に表示されるディレクティブには影響しないようです。
興味深いことに、私のXMLデータソースとXSLTトランスフォームの両方が自分自身をUTF-8
notとして指定していUTF-16
ます。
更新:
出力メカニズムとしてstring(builder)を使用しているため、UTF-16が表示されているようです。MemoryStream
の代わりにを使用するようにコードを変更するStringBuilder
と、UTF-8エンコーディングが保持されます。string
これは、このタイプの内部動作と、エンコーディングの処理方法に関係していると思います。