contents
それでは、具体的な XHTML 1.0 文書の例を見てみましょう。
XML 文書例;
<?xml version="1.0" encoding="Shift_JIS" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>XHTMLとは何だろうか</title> <meta http-equiv="Content-type" content='text/html; charset="Shift_JIS"' /> </head> <body> <p><a href="http://www.w3.org/TR/xhtml1">W3C</a> で定義されています。</p> </body> </html>
上のソースをコピーして、メモ帳(テキストエディタ)に貼付けて下さい。ファイル名を、 sample.html (拡張子 *.html )と sample.xml (拡張子 *.xml )で保存して、それぞれ「InternetExplorer5.0以上」で開いて見て下さい。 XML と解釈されれれば、ソースがそのまま表示され、 HTML として解釈されれば、既存の HTML 文書と同様に表示されるはずです。
このサンプルコードをXMLファイルで開いてみましょう;
一行目が XML 宣言で、 XML のヴァージョンを指定します。一般に XML 文書では、 XML 宣言は必須では有りませんが、今後ヴァージョンが増えることによる混乱を避ける為に、記述するようにしましょう。 XHTML 文書としても、 XML 宣言は記述するように強く推奨されています。
XML 宣言; version 属性は必須;
<?xml version="1.0"?>
他に、 XML 宣言では、 encoding 属性と、 standalone 属性がオプショナルに指定できます。
encoding
属性では、この文書で使う文字コードを指定します(例; <?xml version="1.0" encoding="ISO-2022-JP"?>
)。 XML 文書では、これを指定しないと UNICODE (UTF-8, UTF-16) であると認識され、別の文字コードで保存された文書の場合はエラーになります。
特に XHTML 文書では、 head
要素内の meta http-equive 宣言(例; <meta http-equiv="Content-type" content='text/html; charset="ISO-2022-JP"'/>
)でも指定する必要が有ります。
XML 宣言; version 属性は必須;
<?xml version="1.0" encoding="Shift_JIS"?>
因みに、文字コードの大文字・小文字は区別されません。
standalone
属性では、外部 DTD を参照する必要の有無を指定します。 XHTML 文書には、外部 DTD が存在するので standalone="no"
としますが、必須では有りません。
XML 宣言; version 属性は必須;
<?xml version="1.0" encoding="Shift_JIS" standalone="no"?>
因みに、 XML 文書で外部 DTD を参照しなくても良い場合は、 standalone="yes"
とすれば、解読装置の無駄な処理が省けます。
XML 宣言に続くのが、 XML 文書型宣言です。 XML 文書型宣言は、文書で用いられるマークアップの定義を指し示すのです。 XHTML 文書では必須です。上に挙げた例では、 XHTML 1.0 Strict が選択されています。
XHMTL 1.0 DTD には、 Strict, Transitional, Frameset の三つがあり、其々 SGML ベースの HTML 4 の DTD を、 XML ベースで再定義したものです。
因みに、 XML 文書では DTD は必須では有りません。 DTD が存在し、それに参照して正しい XML 文書を、 valid XML Document (妥当・適正な XML 文書)と呼びます。
XML 文書型宣言;
<!DOCTYPE ルート要素 識別子 "URI">
「識別子」は、XHTML の様に、 ISO や W3C などの標準化団体が定義した標準の DTD を用いる場合は、PUBLIC
を指定し、それ以外の外部 DTD を参照する場合は、 SYSTEM
を指定します。
くどいようですが、 XML では大文字と小文字を区別しますので、注意して下さい。要素名や属性名は小文字であり、SGML から引き継いだ DTD 宣言などは大文字で記述します。
SGML では、ケース(大文字と小文字)の区別を付けない場合、同じものとして扱うのではなく、大文字に変換してから扱います。従って、ケースを区別する規格で定義されている言語では、SGML 規格で定義されているものは全て大文字であり、自分で定義しているものは小文字であったり大文字であったりするわけです。一般に、XML 文書の要素名、属性名は小文字主体で定義されています。
次にルート(唯一にして最大の親要素)である html
要素の開始タグが来ます。このように、文書が唯一の最大親要素(ルート要素)を持つ樹形図構造(ツリー)の XML 文書を、 well-formed XML Document と呼びます。 XHTML 文書は、 well-formed で且つ valid な XML 文書の一例です。
この html
要素には、言語属性と xmlns
属性が設定されています。
XHTML 1.0 のルート要素 html の開始タグ;
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
xmlns
属性は、 XML 名前空間を指定する為の属性です。今は、 XHTML 文書だけを念頭に置いていますが、同一文書内で、異なる XML ベースの構造化言語(異なる DTD )を利用する場合に、その重要性が理解されるでしょう。
XHTML 1.0 に与えられた name space は、 http://www.w3.org/1999/xhtml
です。XHTML 文書である為には、 ルートである html 開始タグ中に必ず記述しなければなりません。
XML 文書一般に、 xmlns
属性は要素の開始タグ中に記述します。その要素の範囲内の要素(子孫要素)全てに対して、 xmlns
属性値である URI が同定する DTD が採用されます。 XHTML 文書の場合、ルート要素である html
要素に「 XHTML 名前空間」が指定されていますので、 全ての要素が XHTML DTD に参照された要素であると解釈されます。
言語は、 lang
属性と、 xml:lang
属性の二つの属性で重ねて設定します。要素の言語属性は、後方互換の為に、両方同時に設定します。