我在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);
}发布于 2011-11-19 01:09:43
如果希望XslCompiledTransform将纯文本文件作为XSLT转换的结果输出,则不应转换为您创建的XmlTextWriter,而应转换为FileStream或TextWriter。
发布于 2011-11-18 23:27:28
您的输出部分是using (XmlTextWriter writer = ...) { ... }
这表明您的输出是 XML。您可以使用XSLT来生成纯文本,这将是不同的。
对于可扩展标记语言和超文本标记语言输出,&编码是必需的。
在某些阶段,将使用Xml元素的值,这是&再次成为&的地方(以及何时)。
发布于 2011-11-18 23:30:50
在源文档中有一个字符&在结果中显示为
&。
不要惊慌,因为没有问题:这与任何格式良好的文档中应该出现的字符&完全相同。
您可以看到这是完全相同的字符,获取节点的字符串值并输出它--您将看到只有&是输出的。
确定这只是文本字符的另一种方法是在XSLT中,当输出方法设置为“&”时输出它。下面是一个完整的小示例:
XML文档
<t>M & M</t>Transformation
<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 & Mhttps://stackoverflow.com/questions/8184111
复制相似问题