コメントと CDATA セクション

since: 30th/Aug./2000; last modified: 28th/Sep./2001

コメント

XML ではコメントは次のように記述します:

<!--ここはコメント部です。
ハイフンを二つ繋げてはいけません。
<p>タグを直接記述しても構いません。</p>
-->

XML ではコメント内部は完全に無視され得ます。したがって、内容が CDATA から PCDATA に変更された style 要素script 要素の内容をコメントアウトすると、全く働かない可能性があります。因みに、 CDATA は Character DATA(文字データ)であり、 PCDATA は Procecced CDATA (解析処理される文字データ)のことです。

<style type="text/css">
<!--
/* コメントアウトはとても危険です
完全に無視されて、働かない場合が考えられます。*/
body { background: black; color: white }
/* 基本的には外部スタイルシートを使いましょう。 */ --> </style>

もっと詳しく言うと、 style 要素のように、内容が PCDATA に定義されているところで "<!--" を記述すると、コメント開始区切りと解釈されます。 内容が CDATA ならばコメント区切り文字も解釈されることは無く、ユーザエージェントに無視されないですみます。 PCDATA を強制的に CDATA に変更するためには、 CDATA セクションを利用します。

CDATA セクション

PCDATA とは、パーサに解釈される文字列を指します。したがって、 PCDATA として処理されるように定義されている文字列では、 "&lt;" は "<" に解釈されてから実行アプリケーションに受け渡されます。これを避ける為に、内容を強制的に CDATA (それ以上解釈されない文字データ)として実行アプリケーションに受け渡す仕組みが用意されており、 CDATA セクションと呼ばれます:

<p><![CDATA[
ここは CDATA セクション内部。<p> のように
タグを直接記述しても、文字実体参照 &lt; 
を記述しても、解釈されないので、屁の河童です。
]]></p>

これで、内容が PCDATA に変更された script 要素や style 要素中でも、マークアップ区切り文字が直接利用できます:

<script type="text/javascript">
//<![CDATA[
document.write('これはバナ-です:
    <img src="../../nextindexb.jpg" alt="NEXTindex バナ-" />');
//]]>
</script>
表示概念図 表示例
これはバナ-です:NEXTindex バナ-

この実装はアプリケーションソフトごとに処理方法にばらつきがあります。例えば、 Netscape 6 では、 XML ファイルとして開いた場合は CDATA セクションとして解釈されますが、 HTML 文書として開いた場合は無視されます。 MS I.E. 6 では、 PCDATA として処理するか、無視します。

このように処理が不安定なので、現状では CDATA セクションはウェブページでは利用しないようにしましょう。

解決策

CDATA セクションは現実のブラウザにおいては動作が確実ではなく、コメントの利用は規格上の誤りを含みます。これらを解決する為には、外部スタイルシート、外部スクリプトを利用するように推奨されます。

外部スタイルシート

<head>
...省略...
<link rel="stylesheet" madia="screen" type="text/css"
      href="./core.css" title="Core Style Sheet" />
</head>

外部スクリプトファイル

<body>
<script type="text/javascript" src="./script.js"></script>
<noscript><p>ご利用の環境はスクリプトをサポートしていません。
<a href="./data.html">ファイル</a>を直接アクセスしてください。
</p></noscript>
</body>

Copyright © 2000-2001, SUGAI, Manabu . All rights reserved. 著作権は放棄していません。
SEO [PR] !uO z[y[WJ Cu