【问题标题】:XSL disable-output-escaping not workingXSL 禁用输出转义不起作用
【发布时间】:2012-10-31 18:06:53
【问题描述】:

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

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

提前致谢。

【问题讨论】:

  • 请准确告诉我们您使用的是哪种 XSLT 处理器,如何运行转换,如何看待转换结果。并非所有用例中的所有处理器都支持禁用输出转义,例如 Mozilla 不支持它:developer.mozilla.org/en-US/docs/…
  • 我想通了,请看下面的答案。输出转义不是问题。感谢您的帮助!

标签: html xslt


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。为我工作。
【解决方案2】:

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

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

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

returnStr 等于:&lt;style type="text/css"&gt;#container {width:100%; margin-top:20px; text-align:center; font-family: Verdana, arial; font-size:100%; font-weight:normal; }&lt;/style&gt;&lt;div id="container"&gt;&lt;b&gt;Text here&lt;/b&gt;&lt;/div&gt;...加上更多的 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 中 - 作为输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多