【问题标题】:XSLT, CDATA, javascriptXSLT、CDATA、javascript
【发布时间】:2012-09-20 18:46:34
【问题描述】:

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

<![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 转换中不进行处理。有人可以帮忙吗?

【问题讨论】:

    标签: xml xslt cdata


    【解决方案1】:
    &lt;p&gt;What is going on?&lt;/p&gt; 
    

    等价于

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

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


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

    <xsl:output method="html"/>
    

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

    【讨论】:

    • :) 真的吗?那么,如果我想在 XSL 转换期间不处理 javascript,我应该使用什么?
    • “未处理”是指&amp;lt; 字符保持原样(而不是更改为&amp;lt;)吗?如果样式表的输出方法是“html”,那么就会发生这种情况。 html 输出方法不应对 scriptstyle 元素的内容执行转义。见w3.org/TR/xslt#section-HTML-Output-Method
    • 是的,这正是我所说的 'uprocessed' 的意思。我确实已经阅读了这个 w3.org 表。这就是我发布这个问题的原因。尽管那里写着“html 输出方法不应该对脚本和样式元素的内容执行转义”,但我的 Visual Studio 仍然转义了
    【解决方案2】:

    输出方法对我不起作用(IE 打开 XML,引用 XSLT),但在我的 xslt 文件中,

    中,例如:
    <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>
    

    现在,例如,

    【讨论】:

      猜你喜欢
      • 2012-08-20
      • 2016-06-05
      • 2016-08-22
      • 2013-03-19
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多