XHTMLファイルでのスクリプトの記述

(文と宣言)

XHTMLの場合、<script>と</script>の間に記述されたJavaScriptのスクリプトもXHTMLファイル内の他のコンテンツと同じようにXMLとして解釈を行う。その結果、スクリプトの中に「<」や「&」が現れた場合はXMLマークアップ用のタグであるかのように扱われる。

<script type="text/javascript">
document.write("<p>JavaScript テスト</p>");
</script>

上記の例ではJavaScriptを使って「<p>JavaScript テスト</p>」を一連の文字列として出力したいが、XHTMLの場合は<p>などの「<」が特別な記号として解釈されてしまう。
スクリプト内の「<」や「&」を解釈されないようにするため1番目の方法として「<」などをエスケープして「&lt;」として記述する方法がある。

<script type="text/javascript">
document.write("<p>JavaScript テスト</p>");
</script>

ただし数が多い場合は煩雑になり、エスケープを忘れる可能性がある。また可読性も悪くなってしまう。
そこで2番目の方法としてJavaScriptのスクリプト全体をCDATAセクションに記述する方法がある。

<script type="text/javascript">
<![CDATA[
document.write("<p>JavaScript テスト</p>");
]]>
</script>

CDATAセクション内に記述された内容は文字列データであってXMLマークアップ用のデータは含まれていないことを表す。そのため、「<」や「&」が含まれていてもマークアップ用の記号とは解釈されない。
ただ一部のブラウザでは <![CDATA[ が現れるとエラーとなるブラウザが存在する。その場合は次のように記述する。

<script type="text/javascript">
//<![CDATA[
document.write("<p>JavaScript テスト</p>");
//]]>
</script>
inserted by FC2 system