SGMLを元としたHTMLを、XMLベースで再定義したしたモノがXHTMLです。XML文書なので、XML宣言の記述はデフォルト文字コードのUTF-8とUTF-16以外は必須とされています。XML宣言は<?xml
で始まり?>
で終わる記述で、属性としては以下の3点があります。
- version 属性
- encoding 属性
- standalone 属性
version 属性についてはその文書のxmlバージョン、encoding 属性についてはその文書の文字コードを記述をすれば良いのは分かるのですが、standalone 属性については、自分的に曖昧だったので調べたメモとして記しておきます。
standalone 属性とは
XMLはXMLプロセッサ(パーサ)と言われる解析装置によって、内部・外部DTDを参照することで、その文書の妥当性の検証を行うことができます。standalone 属性にはyes
かno
の指定があり、その文書にとって外部DTDの参照が必要か不要かを明示するためのものです。つまり、standalone="yes"
とすれば、外部DTDを参照する必要がないので、余計な処理をしなくて良い事になります。
XHTMLの場合standalone 属性は必要か
XHTML1.0には3種類、XHTML1.1には1種類のW3Cが定義したDTDが存在し、通常はこの標準DTDを文書型宣言DOCTYPEのPUBLICで指定します。
- XHTML1.0
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
- XHTML1.1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
これは外部DTDなので、standalone 属性はno
となります。そしてstandalone 属性を省略した場合、文書型宣言が存在していればstandalone="no"
とみなされます。つまり、一般的にXHTMLで作成し文書型宣言を記述した場合は、standalone 属性を省略しても構わないという事になります。なので、XHTML文書でstandalone 属性が記述されているのを見かける事は少ない筈です。当サイトのxml宣言にstandalone 属性を付加して記述するとなると以下のようになります。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Comments