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 セクションを利用します。
PCDATA とは、パーサに解釈される文字列を指します。したがって、 PCDATA として処理されるように定義されている文字列では、 "<" は "<" に解釈されてから実行アプリケーションに受け渡されます。これを避ける為に、内容を強制的に CDATA (それ以上解釈されない文字データ)として実行アプリケーションに受け渡す仕組みが用意されており、 CDATA セクションと呼ばれます:
<p><![CDATA[ ここは CDATA セクション内部。<p> のように タグを直接記述しても、文字実体参照 < を記述しても、解釈されないので、屁の河童です。 ]]></p>
これで、内容が PCDATA に変更された script 要素や style 要素中でも、マークアップ区切り文字が直接利用できます:
<script type="text/javascript">
//<![CDATA[
document.write('これはバナ-です:
<img src="../../nextindexb.jpg" alt="NEXTindex バナ-" />');
//]]>
</script>
| 表示概念図 | 表示例 |
|---|---|
これはバナ-です:
|
この実装はアプリケーションソフトごとに処理方法にばらつきがあります。例えば、 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>