0

我正在使用 Visual Studio 2008。我有一个 xsl 文档,其中包含我希望在 xslt 转换期间不处理的文本。为此,我使用 CDATA 标记。但是文本在 CDATA 中以某种方式处理。所有<>都转换为&lt;&gt;这是我的意思的一个例子:

<![CDATA[
<p>What is going on?</p>
]]>

&lt;p&gt;What is going on?&lt;/p&gt;

其实我的目标是让javascript像这样:

<script type="text/javascript">
//<![CDATA[
    for(i = 0; i < 3; i++)
    document.write("XSLT will you marry me?");
//]]>
</script>

在 XSL 转换中未经处理。任何人都可以帮忙吗?

4

2 回答 2

1
&lt;p&gt;What is going on?&lt;/p&gt; 

相当于

<![CDATA[
<p>What is going on?</p>
]]>

CDATA 部分不是一种使部分 XML 保持“未处理”的方法。它只是一种对 XML 文档的编辑器有用的便利(替代语法)。


要将 JavaScript 代码单独包装在 CDATA 中,您必须添加此行

<xsl:output method="html"/>

在您的样式表中。HTML 输出方法不应该对http://w3.org/TR/xslt#section-HTML-Output-Method中指定的scriptand元素的内容执行转义。style

于 2012-09-20T19:07:56.627 回答
1

输出方法对我不起作用(IE 打开 XML,它引用 XSLT),但在我的 xslt 文件中,在 <head> 中,这确实有效,例如:

<script type="text/javascript">
      <xsl:text disable-output-escaping ="yes">
        <![CDATA[
        var showLogs = function() {
          var logs = document.getElementsByClassName('log');
          for (var i=0; i < logs.length; i++) {
            logs[i].style.display='block' ;      
          }
        };
        ]]>
      </xsl:text>
</script>

现在,例如,< 出现在 xslt 中,最终的 html 和 showLogs() 可以被调用。

于 2015-12-14T21:06:37.057 回答