我对使用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 "Hello World" and sometimes whitespaces. </div>
如何才能将此字符串呈现为html,以便<div></div>
生成换行符,"
为我提供"
,
为我提供空间?
我可以详细说明我已经尝试过但没有奏效的事情,但我不知道这是否相关。
答案 0 :(得分:16)
我认为您要设置以下属性:
<xsl:value-of select="@Description" disable-output-escaping="yes"/>
答案 1 :(得分:3)
为什么需要实体输出?浏览器
与 
相同 - 在这两种情况下都会显示不间断的空间。
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)并应用块样式。