準備が長くなったが,本節から XHTML の要素を詳説していこう。まずは,XHTML の全体的な骨格を担う構造モジュールから。
XML 宣言は,必ずファイルの 1 文字めから書き始める。その前にテキストがあってはもちろんいけないし,コメントも,空白・改行すらもあってはならない。XHTML 1.1 においては,
<?xml version="1.0" encoding="
文字エンコーディング"?>
という形になるのは,Let's begin XHTML の Section 3 で説明したとおりである。
詳しくは,この形式では“standalone 宣言”という,外部の依存関係に関わる指定が省略されている(値“no
”が指定されているとみなされている)。この省略については,今のところ気にする必要はない。
また,この形式で,文字エンコーディングが UTF-8 または UTF-16 であるか,文字エンコーディングがサーバ(たとえば WWW サーバ)から伝えられるときには XML 宣言を丸ごと省略できる。しかし,XHTML においては,いかなる場合も XML 宣言を省略しないことが強く勧められる。
DOCTYPE 宣言は,XML 宣言に続けて書く。XML 宣言との間に,空白・改行・コメント(<!--
...... -->
の形式)があってもよい。XHTML 1.1 では,DOCTYPE 宣言は必ず記述しなければならず,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
と書くことはご存じのとおりである。
DOCTYPE 宣言一般について触れておくと,“<!DOCTYPE
”に続くものは,その文書本体のルート要素(最外部要素)の名前を示している(XHTML の場合は“html
”)。文書本体は,1 個のルート要素である。
それに“PUBLIC
”が続くと,その次に文書型を識別するための“公開識別子”“システム識別子”と呼ばれるものを与える。“SYSTEM
”が続いてシステム識別子だけを与える形式もある。
また,DOCTYPE 宣言について,DTD(文書型定義)と呼ばれる,XML より作られる言語の要素や属性の定義が直接書かれることもある(XHTML では,DTD はファイルとして用意されている)。
上にあげた XHTML 1.1 の DOCTYPE 宣言は,“ルート要素が‘html
’であるような,公開識別子‘-//W3C//DTD XHTML 1.1//EN
’で識別される,システム識別子(URI)‘http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd
’で定義される文書型を使用する”ことを宣言する。
それで,XHTML 1.1 においては,そのルート要素が次項に説明する html
要素である。
html
要素 XHTML を含めた XML 文書では,文書の本体は 1 個の要素である。これを,ルート要素(最外部要素)と呼ぶ。XHTML 1.1 においては,ルート要素は html
要素である。
(head, body)
head
要素,body
要素が各 1 つずつ,この順で html
要素は,次の属性を持つ。
属性名 | 属性値 | 備考 |
---|---|---|
国際化に関する属性 | ||
version | 文字列 | “-//W3C//DTD XHTML 1.1//EN ”に固定される。明示的な指定は必要ない。 |
このほかに,XHTML 1.1 ではルート要素,すなわち html
要素で,xmlns
属性を使用して名前空間を指定する必要がある。名前空間とは,簡単には,同じ名前を区別するしかけである。XML は,複数の言語を混在させて記述できるように設計されているため,偶然異なる言語で同じ名前を使用してしまう可能性があるということである。逆にいえば,それを避けるための考え方が名前空間である。1 文書内で XHTML のみを使用するような状況では,名前空間は特に気にする必要はない。それで,XHTML 1.1 では,xmlns
属性を次のように記述する。
xmlns="http://www.w3.org/1999/xhtml"
属性値に URI が指定されているが,この URI の指す先には何もない。
まとめると,たとえば,全体として日本語で書かれている XHTML 文書の html
要素の開始タグは,xml:lang
属性と dir
属性を用いて次のように次のように書ける。
<html xml:lang="ja" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
head
要素 html
要素の内容は,ヘッダ部と本文から構成される。ヘッダ部分が先に現れ,これは head
要素である。
(%HeadOpts.mix;, ((title, %HeadOpts.mix;, (base, %HeadOpts.mix;)?) | (base, %HeadOpts.mix;, (title, %HeadOpts.mix;))))
title
要素が必ず 1 つだけ出現,base
要素が 1 つまで出現(=あってもなくてもよい),%HeadOpts.mix;
が任意に出現(順序は問わない)ここで,%HeadOpts.mix;
は,
%HeadOpts.mix;
(script | style | meta | link | object)*
と定義される。
head
要素は次の属性を持つ。
属性名 | 属性値 | 備考 |
---|---|---|
国際化に関する属性 | ||
profile | URI | メタ情報のプロファイルがある URI。 |
profile
属性はメタ情報(文書情報)の記述に関わりを持ってくる。詳しくは Section 20 で解説する。
Let's begin XHTML で解説したように,また,上記の内容モデルで示されるように,head
要素には最低限 title
要素が含まれていればよい。
これに加えて,文書情報,スタイル・スクリプトなどを記述する。head
要素の記述例として,次のようなものがあるだろう。
<head>
<link rel="next" href="hsxh07.htm" />
<link rel="prev" href="hsxh05.htm" />
<title>Hop step XHTML -- Section 6</title>
</head>
上記にはまだ解説していない記述も含まれているので了承されたい。head
要素の内容としての文書情報は,閲覧環境の向上や,サーチエンジンに適切にページをインデックスさせるのに重要である。