1

SQL データから XMLDocument オブジェクトを作成し、XPathNavigator と XslCompiledTransform を含む XSLT ファイルを使用して別の XML ドキュメント (RSS フィード) に変換する ASPX ページがあります。場合によっては、データにスマート クォート (\u2019) が含まれ、エラーが発生します (インデックス 947 の Unicode 文字 \u2019 を指定されたコード ページに変換できません)。すべてのエンコーディング設定がどのように機能するかはわかりませんが、XML 属性を作成しているときにすべてのデータでこれらのタイプの文字をチェックすることなく、これを防ぐ方法はありますか?

私のXSLTファイルは次のようになります...

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" version="1.0" encoding="iso-8859-1"/>

xsl:output エンコーディングを utf-8 および utf-16 に変更しようとしましたが、それでも同じ問題が発生します。何か案は?

それが役立つ場合、これが私のコードです...

XmlDocument xdoc = new XmlDocument();
XmlNode xnode = requests.XMLNode(xdoc, imageType, Request, promotionPageId, eventPageId);
xdoc.AppendChild(xnode);

Response.Clear();
Response.ContentType = "text/xml";
Response.AddHeader("Content-Type", "text/xml");

if (xsltFile != string.Empty)
{
    XPathNavigator xnav = xdoc.CreateNavigator();
    XslCompiledTransform xslTransform = new XslCompiledTransform();
    xslTransform.Load(Server.MapPath(string.Format("~/xslt/{0}.xslt", xsltFile)));
    xslTransform.OutputSettings.Encoding.
    xslTransform.Transform(xnav, null, Response.OutputStream);
}
else
{
    xdoc.Save(Response.OutputStream);
}

Response.End();
4

2 に答える 2

1

あなたの変換は正常に機能しています。問題は、変換が、出力ストリームのコンテンツ エンコーディングでサポートされていない文字を出力していることです。ContentEncodingをオンに設定するHttpResponseEncoding.UTF16、この問題は解消されます。

于 2008-10-11T19:52:33.817 に答える
0

XSL が処理している入力 XML のドキュメント エンコーディングは何ですか? それを設定できるはずです。そうすれば、XSL は何を期待するかを知ることができます。

于 2008-10-11T09:22:32.637 に答える