web-dev-qa-db-ja.com

別のCDATA内でのCDATAの使用

別のCDATAタグ内でCDATAタグを使用する必要があるというこの困難な状況があります。しかし、状況は簡単に説明できます。

私は次のものを持っています:

<edit>
<![CDATA[
<script type="text/javascript">
<![CDATA[
    window.onload = function() 
    {
        document.getElementById('block').onclick = function() 
        {
            this.onclick = '';
            this.value = '{LA_SEND_CONFIRM}';
            this.className = this.className.replace('button1','');
            document.getElementById('replacement').value = '{LA_BLOCK_CODE}';
        }
    }
]]>
</script>
]]>
</edit>

表示のためにJavascriptもCDATA内にラップする必要があるため、そのXMLファイルを開くと、正しく表示され、JavascriptコードはそれらのCDATAタグ内にあります。 XMLファイル自体の内部では実際の意味はありません。

すでにご存知のように、上記のコードでは、CDATAのネストが機能しないため、XML解析エラーが発生します。 ]]>をエスケープして、それらのブラケットをユーザーに表示できるようにする方法はありますか?

私は十分に明確だったと思います。

21
aborted

CDATAセクションの]]>部分文字列は、次のように置き換えることでエスケープできます。

]]]]><![CDATA[>

...行。これにより、]]を1つのCDATAセクションの一部にし、>-を別のセクションの一部にします。これは、前のセクションが終了したときに開始します。

41
raina77ow