【问题标题】:HTML rendered incorrectly in .NETHTML 在 .NET 中呈现不正确
【发布时间】:2009-01-13 14:57:20
【问题描述】:

我正在尝试在 VB.NET 中获取字符串“<BR>”并通过 XSLT 将其转换为 HTML。但是,当 HTML 出来时,它看起来像这样:

<BR>

我只能假设它会继续并尝试渲染它。有什么方法可以将这些 </> 转换回括号中,以便获得我正在尝试的换行符?

【问题讨论】:

  • 一个小代码示例会很有帮助,因为它很难看出你在做什么。

标签: html vb.net xslt line-breaks


【解决方案1】:

检查 XSLT 是否有:

<xsl:output method="html"/>

编辑:来自 cmets 的解释

默认情况下,XSLT 输出为 XML(1),这意味着它将转义任何重要字符。您可以在特定情况下使用属性 disable-output-escaping="yes"(intro here)覆盖它,但更强大的是将输出更改为 HTML 的显式值,这在全局范围内提供相同的好处,如下所示:

  • 对于脚本和样式元素,替换所有转义字符(例如 作为 & 和 >) 及其实际值 (分别是 & 和 >)。
  • 对于属性,将所有出现的 > 替换为 >。
  • 写入空元素,例如&lt;br&gt;&lt;img&gt;&lt;input&gt;,不带 结束标记或斜线。
  • 将通过其存在传达信息的属性编写为 与它们的价值相反,例如 选中并选中,最小化 形式。

来自可靠的 IBM article 涵盖该主题,最近来自 stylusstudio here

如果 HTML 输出是您想要的 HTML 输出是您应该指定的。

(1) 实际上存在输出默认为 HTML 的极端情况,但我认为它不是通用的,依赖它有点迟钝。

【讨论】:

  • 这行需要放在xsl文档的什么地方?
  • joe:这应该是您在 中的第一个标签
【解决方案2】:

尝试用&lt;xsl:text disable-output-escaping="yes"&gt;&amp;lt;br&amp;gt;&lt;/xsl:text&gt; 包装它

【讨论】:

  • 我已经尝试过了,但它仍然会将其转换为 HTML 本身。 (类似于
【解决方案3】:

不知道 XSLT 但是..

一种解决方法可能是使用 System.Web 命名空间中的HttpUtility.HtmlDecode

using System;
using System.Web;

class Program
{
    static void Main()
    {
        Console.WriteLine(HttpUtility.HtmlDecode("&lt;br&gt;"));
        Console.ReadKey();
    }
}

...

【讨论】:

    【解决方案4】:

    知道了!除了选定的答案之外,我还在我的字符串上做了类似的事情:

    htmlString = htmlString.Replace("&lt;","<")
    htmlString = htmlString.Replace("&gt;",">")
    

    但我认为,最终,我可能只是使用&lt;pre&gt; 标签来保留所有内容。

    【讨论】:

      【解决方案5】:

      字符串“&lt;br&gt;”已经是 HTML,所以你可以只使用Response.Write("&lt;br&gt;")

      但是您的意思是 XSLT,所以我想有一些转换正在进行。在这种情况下,转换肯定应该将其作为节点插入到正确的位置。更好的问题可能会得到更好的答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-05
        • 2011-09-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多