XML宣言のstandalone属性

SGMLを元としたHTMLを、XMLベースで再定義したしたモノがXHTMLです。XML文書なので、XML宣言の記述はデフォルト文字コードのUTF-8とUTF-16以外は必須とされています。XML宣言は<?xmlで始まり?>で終わる記述で、属性としては以下の3点があります。

version 属性についてはその文書のxmlバージョン、encoding 属性についてはその文書の文字コードを記述をすれば良いのは分かるのですが、standalone 属性については、自分的に曖昧だったので調べたメモとして記しておきます。

standalone 属性とは

XMLはXMLプロセッサ(パーサ)と言われる解析装置によって、内部・外部DTDを参照することで、その文書の妥当性の検証を行うことができます。standalone 属性にはyesnoの指定があり、その文書にとって外部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"?>

この記事についての情報

似た内容の記事

この記事に対するトラックバック

トラックバックURL: http://www.lucky-bag.com/mt/mt-tb.cgi/269

鳥さんの独り言 - WinIEでXHTML文書を保存する (2005年1月 7日 22:57)

ふと思い出したので、メモ。 続きを読む

Comments