質問

を使用している XsltCompiledTransform 変換するコンテンへのフラグメントのHTMLではない完全なHTMLドキュメント、部門を含めますページが発生する)とする.

いくつかの変換として

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 ない UTF-16.

更新: は、UTF-16のように現れるので使用してい文字列ビルダー)として出力。時に変更したいコードを使用 MemoryStream の代わりに StringBuilder, 私のUTF-8エンコーディングが保存されている。私はこの推測は、あなたの内部構造 string 型どのようなエンコーディングです。

役に立ちましたか?

解決

ご使用する必要があり XmlWriterSettings オブジェクトです。設定を省略はXML宣言でのコンストラクタの XmlWriter.

StringBuilder output = new StringBuilder();
XmlReader rawData = BusinessObject.GetXml();

XmlWriterSettings writerSettings = new XmlWriterSettings();
writerSettings.OmitXmlDeclaration = true;

using (XmlWriter transformedData = XmlWriter.Create(output, writerSettings))
{
  XslCompiledTransform transform = new XslCompiledTransform();
  transform.Load("stylesheet.xslt");
  transform.Transform(data, transformedData);
  Response.Write(output.ToString());
}

他のヒント

最も簡単な方法ろこのノードにおXSLT:

<xsl:output 
    method="html" 
    omit-xml-declaration="yes"/>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top