1

我正在从数据库中提取参数

<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 等?

提前致谢。

4

2 回答 2

2

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

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

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

于 2012-10-31T18:51:13.020 回答
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 参数是相同的:

<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 中 - 作为输出。

于 2012-11-01T17:36:36.637 回答