c# - 在没有对我的最终输出进行 HTML 编码的情况下使用 XSL 进行转换的属性方法是什么?

标签 c# asp.net xml xslt

所以,我正在使用 .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/

相关文章:

c# - 基于 MySQL 表创建 C# 类

c# - memcached 的序列化

asp.net - 来自 ASP.NET 网页 (WebMatrix) 的 jQuery 帖子

java - 如何在 java 中使用定界符从 xml 文件中读取键和值?

android - 如何在android中使用inflater将一个xml设计调用到另一个xml设计中

c# - MVC 5 + $Post() 函数在服务器上托管后无法正常工作

c# - 如何在我的 C# - NUNIT 项目中使用对象 ConnectionStringSettings 和 ConfigurationManager?

c# - 线程和 session 对 asp.net c# 中的 paypal 机制的影响应该是什么

c# - 如何在 .NET 中将外部类型/方法标记为已弃用/过时?

xml - 未找到元素 ' ' 的声明