Hop step XHTML―ホップ ステップ XHTML

Section 6:構造モジュール(1)

 準備が長くなったが,本節から XHTML の要素を詳説していこう。まずは,XHTML の全体的な骨格を担う構造モジュールから。

XML の構成

 Let's begin XHTML で,XHTML 文書は XML 文書であり,XML の書き方に従う必要があると述べた。XML 文書は,

  • XML 宣言
  • DOCTYPE 宣言
  • 本体

からなる。

XML 宣言

 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 宣言

 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 要素は,次の属性を持つ。

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 要素は次の属性を持つ。

head 要素の属性
属性名属性値備考
国際化に関する属性
profileURIメタ情報のプロファイルがある 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 要素の内容としての文書情報は,閲覧環境の向上や,サーチエンジンに適切にページをインデックスさせるのに重要である。