XSL disable-output-escaping无法正常工作

时间:2012-10-31 18:06:53

标签: html xslt

我从数据库中提取参数

<xsl:param name="theMessage"></xsl:param>

如下所示拉取html的数据:

<style type="text/css">#container {width:100%; margin-top:20px; text-align:center; font-family: Verdana, arial; font-size:100%; font-weight:normal; }</style><div id="container"><b>Text here</b></div>

XSL:

<xsl:value-of select="$theMessage" disable-output-escaping="yes" />

它显示为代码而不是所需的输出。关于我哪里出错的任何想法?它是在xsl方面还是在数据库中需要CDATA等?

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果您传递元素作为参数,则需要使用 xsl:copy-of 而不是 xsl:value-of

<xsl:copy-of select="$theMessage" />

所有 xsl:value-of 将输出元素的文本,而不是元素本身。

答案 1 :(得分:0)

虽然输出转义在过去对我有用,但它并没有对这个数据字符串这样做,因为数据包含'需要转义的标记。

所以字符串是这样的(在java中)。

returnStr = returnStr.replace("'","\\'"); - this escaped those pesky tic marks, or single quotes

并且returnStr等于:<style type="text/css">#container {width:100%; margin-top:20px; text-align:center; font-family: Verdana, arial; font-size:100%; font-weight:normal; }</style><div id="container"><b>Text here</b></div> ...加上更多的HTML代码和文本

xsl param是相同的:

<xsl:param name="theMessage"></xsl:param>

在样式表上,新代码看起来像这样:

<div id="bilbo"></div>
    <script type="text/javascript">
    var outputString = '<xsl:value-of select="$theMessage" />'
    document.getElementById('bilbo').innerHTML = outputString;
    </script>  

从数据库中提取数据,删除单引号,将字符串设置为xsl参数,将参数设置为js变量,然后将其作为输出所需的html放入div中。