所以,我正在使用 .NET。我有一个 XSL 文件,C# 中的 XslTransform 对象,它读取 XSL 文件并将一段 XML 数据(内部制造)转换为 HTML。
我注意到我的最终输出是< and >自动编码成< and >。有什么方法可以防止这种情况发生吗?有时我需要将文本加粗或斜体,但它已被无意中清理。
你的 xsl 文件应该有:
- html 的输出
- 省略 xslt 中使用的所有名称空间
i.e.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="xsl msxsl">
<xsl:output method="html" indent="no" omit-xml-declaration="yes"/>
<!-- lots -->
</xsl:stylesheet>
理想情况下,您应该使用接受以下任意一个的重载:TextWriter
or a Stream
(not XmlWriter
) - 即类似:
StringBuilder sb = new StringBuilder();
using (XmlReader reader = XmlReader.Create(source)
using (TextWriter writer = new StringWriter(sb))
{
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("Foo.xslt"); // in reality, you'd want to cache this
xslt.Transform(reader, options.XsltOptions, writer);
}
string html = sb.ToString();
在 xslt 中,如果您确实想要独立的<
/ >
(即您希望它由于某种原因而格式错误),那么您需要禁用输出转义:
<xsl:text disable-output-escaping="yes">
Your malformed text here
</xsl:text>
不过,一般来说是correct来逃避角色。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)