带有HTML实体的XSLT字符串 - 如何将其呈现为HTML?

时间:2010-05-18 00:35:43

标签: html string xslt

我对使用XSL完全不熟悉,所以如果有任何我忽略的信息,请告诉我。

我的XSLT文件中有一个字符串,我可以这样显示:

<xsl:value-of select="@Description/>

并显示,在浏览器中呈现:

<div>I can't do anything about the html entities existing in the text.</div> <div>This includes quotes, like  &quot;Hello World&quot; and sometimes whitespaces.&nbsp;</div>

如何才能将此字符串呈现为html,以便<div></div>生成换行符,&quot;为我提供"&nbsp;为我提供空间?

我可以详细说明我已经尝试过但没有奏效的事情,但我不知道这是否相关。

3 个答案:

答案 0 :(得分:16)

我认为您要设置以下属性:

<xsl:value-of select="@Description" disable-output-escaping="yes"/>

答案 1 :(得分:3)

为什么需要实体输出?浏览器&nbsp;&#xA0;相同 - 在这两种情况下都会显示不间断的空间。

XSLT 2.0中有一个名为character-maps的功能,如果确实需要,它可以提供此功能。除非绝对必要,否则尝试不使用DOE是XSLT的最佳做法。

此外,DOE不是XSLT的强制功能,某些XSLT处理器可能无法实现它。这意味着使用DOE的XSLT应用程序通常不能跨不同的XSLT处理器移植。

答案 2 :(得分:0)

HTML中的div得到一个终点是完全不同的并且与CSS boxmodel有关。大多数浏览器都使用该样式:

div {display:block;}

代替标准显示:inline;。但是,它们只对XHTML命名空间中的div执行此操作。您需要将div输出到XHTML命名空间以便于实现。将XHTML命名空间绑定到文档顶部的前缀xhtml,如下所示:

<xsl:stylesheet xmnls:xhtml="http://www.w3.org/1999/xhtml" ... >

然后将div输出为<xhtml:div> ... </xhtml:div>大多数浏览器会将div识别为XHTML命名空间(http://www.w3.org/1999/xhtml)并应用块样式。