1

xslt ファイル変換の結果、特殊文字が変換されます。
誰もこれを経験したことがありますか?

ソース ドキュメントに&は、結果で として表示される文字があり&ます。結果的にもオリジナル&キャラが必要です。

XmlDataDocument dd = new XmlDataDocument(ds);

XsltSettings settings = new XsltSettings();
settings.EnableDocumentFunction = true;
settings.EnableScript = true;

XslCompiledTransform transform = new XslCompiledTransform();

transform.Load(XmlReader.Create(new StringReader(transformSource.Transform)), settings, new XmlUrlResolver());

XsltArgumentList a = new XsltArgumentList();

a.AddExtensionObject("http://www.4plusmedia.tv", new TransformationHelper());

using (XmlTextWriter writer = new XmlTextWriter(path, System.Text.Encoding.UTF8))
{
    writer.Formatting = Formatting.Indented;
    transform.Transform(dd, a, writer);
}
4

3 に答える 3

1

ソースドキュメントには文字があり、結果では。として表示され&ます。

問題がないので慌てる必要はありません&。これは、整形式のXMLドキュメントで表示されるため、まったく同じ文字です。

これがまったく同じ文字であることがわかります。ノードの文字列値を取得して出力します。出力されただけであることがわかり&ます。

これが単なる文字であることを確認する別の方法&は、出力メソッドが「テキスト」に設定されている場合に出力するXSLTです。小さくて完全な例を次に示します。

XMLドキュメント

<t>M &amp; M</t>

変換

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:template match="/*">
  <xsl:value-of select="."/>
 </xsl:template>
</xsl:stylesheet>

結果

M & M
于 2011-11-18T15:30:50.280 に答える
1

出力部分はusing (XmlTextWriter writer = ...) { ... }

これは、出力XMLであることを示しています。XSLTを使用してプレーンテキストを生成することもできますが、それは異なります。

XMLおよびHTML出力の場合、&amp;エンコードは必要かつ不可欠です。

ある段階で、Xml要素の値が使用され、そこで(そしていつ)再び&amp;なり&ます。

于 2011-11-18T15:27:27.647 に答える
1

XslCompiledTransform で XSLT 変換の結果としてプレーン テキスト ファイルを出力する場合は、作成した XmlTextWriter に変換するのではなく、代わりにFileStreamまたはTextWriterに変換してください。

于 2011-11-18T17:09:42.623 に答える