所以,我正在使用 .NET。我有一个 XSL 文件,C# 中的 XslTransform 对象,它读取 XSL 文件并将一段 XML 数据(内部制造)转换为 HTML。
我注意到我的最终输出已将 < 和 > 自动编码为 < 和 >。有什么方法可以防止这种情况发生吗?有时我需要将我的文本加粗或斜体化,但它被无意中清理了。
最佳答案
你的 xsl 文件应该有:
- html 输出
- 省略所有在 xslt 中使用的命名空间
即
<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
的重载或 Stream
(不是 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>
但是,一般来说,对字符进行转义是正确的。
关于c# - 在没有对我的最终输出进行 HTML 编码的情况下使用 XSL 进行转换的属性方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/529374/