0

Visual Studio 2008 を使用しています。xslt 変換中に未処理のままにしたいテキストを含む xsl ドキュメントがあります。この目的のために、CDATA タグを使用します。しかし、テキストは何らかの方法で CDATA 内で処理されます。all <and>は and に変換され&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-Methodscriptで指定されているように、 andstyle要素のコンテンツのエスケープを実行しないでください。

于 2012-09-20T19:07:56.627 に答える
1

出力方法は私にとっては機能しませんでした (XSLT を参照する XML を開く IE)、これは私の 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 に答える