2011-11-18 93 views
1

我得到在xslt文件轉換結果中轉換的特殊字符。
有沒有人遇到過這個?xmltextwriter轉換特殊字符

在源文檔中有一個字符&,其結果顯示爲&。即使在結果中,我也需要原始的&字符。

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); 
} 
+0

請更具體。 「我轉化爲特殊字符」並不能真正解釋發生了什麼。請顯示輸入和輸出,以及您希望發生的事情。 –

+0

你的問題是什麼? –

+0

問題是在輸入中存在一個[&]字符,並在輸出中將其轉換爲[&a m p;] – Florjon

回答

1

如果希望XslCompiledTransform作爲XSLT轉換的結果輸出純文本文件,則不應轉換爲您創建的XmlTextWriter,而應轉換爲FileStreamTextWriter

1

你的輸出部分是using (XmlTextWriter writer = ...) { ... }

這表示您的輸出 XML。您可以使用XSLT生成純文本,這可能會有所不同。

對於XML和HTML輸出,&編碼是必需的和必要的。

在某個階段,您的Xml元素的值將被使用,並且這是&再次變爲&的地方(以及何時)。

1

在源文件有呈現爲&字符&這在結果是 。

不要恐慌,因爲沒有問題:這是完全一樣的性格&,理所應當的任何格式良好的XML文檔中呈現。

您可以看到,這是完全相同的字符,獲取節點的字符串值並輸出它 - 您會看到僅輸出&

確定這只是&字符的另一種方法是在XSLT中將輸出方法設置爲「text」時輸出它。這裏是一個小的,完整的例子:

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