2008-03-01

Visual Web Developerのちょっとした疑問点

XHTMLの中に、スタイルシートやJavaScriptを埋め込みたい場合、style要素やscript要素を使う。不等号記号やアンパサンドを使いたい場合は、CDATAを使う。

<style type="text/css" >
<![[CDATA
/* ここにスタイルシートを記述する */
]]>
</style>

<script type="text/javascript" >
<![[CDATA
/* ここにJavaScriptを記述する */
]]>
</script>

ところが、どうしたことか、Visual Web Developerは、XHTML1.1でValidateできるにもかかわらず、このCDATAの使い方に文句をつける。不思議だ。まあしかし、ファイルを作成するダイアログでは、HTMLとなっている。よろしい、それではXMLで作成すればどうか。
XMLファイルをひとつ作成し、編集中のXHTMLのコードを貼り付けてみた。しばらく応答が止まった。ややあって操作できるようになると、はたしてXMLとして扱う際には、CDATAの使用に関して文句は言わなかった。
しかし、XMLファイルの編集は、XHTMLファイルの編集とは異なる。XHTMLの規格については何も知らないのだから、インテリセンスも働かない、と思っていた。これがどうしたことか、XHTMLの要素は補完できるし、規格で包括できない要素は、インテリセンスに現れない。これはどうしたことかと思ったが、すぐに理解した。XHTMLで記述していたので、当然document type declarationを含んでいる。内容は、もちろんHTML1.1の、例の奴だ。どうやらVisual Web DeveloperのXMLエディタは、糞真面目にXHTML1.1のbackup system identifierを読み込んで、細かく分かれているモジュールまですべて読み、XMLファイルのvalidationを行っているらしい。しかも、インテリセンスで、DTDによって定義された要素まで補完する。恐ろしく富豪的だ。

まあともかく、XMLファイルとして編集するのも面倒だ。例えばtype属性の中身の補完機能は働かないし、style要素やscript要素の中をCSSやJavaScriptとしてインテリセンスが働くこともない。とりあえずのworkaroundとして、次のようにした。

<style type="text/css" >
/* <![[CDATA */
/* ここにスタイルシートを記述する */
/* ]]> */
</style>

<script type="text/javascript" >
//<![[CDATA
/* ここにJavaScriptを記述する */
//]]>
</script>

一応問題は無いようだが。

No comments: