現在確定しているXHTMLのDOCTYPE宣言は、XHTML1.0とXHTML1.0/Second Editionです。
結果的にXHTMLもXHTML1.1やXHTML1.1/SecondEditionもW3Cで勧告はされていますし、XHTML2.0も策定中ですが、現時点では、XHTML1.0またはXHTML1.0/Second Editionを利用する事になります。
XHTMLのバージョンは、XHTML1.0の後、基本仕様をベースにモジュールによって拡張する仕組みの
XHTML1.1 - Module-based XHTML - Second Edition(2010/11/23)
が勧告となっており、それを待たずして2009年併行して策定中だったXHTML 2.0の策定中止が発表されました。
よって現時点では、XHTMLは、
XHTML 1.0 Second Edition
XHTML 1.1 - Module-based XHTML - Second Edition
を利用する事ができますが、この2つの仕様には、若干違いがあります。
XHTML 1.0はHTMLをXMLアプリケーションに組み込む為に「便宜的に」HTML4をベースにXML 1.0仕様(XMLバージョン)に再定義した(だけの)ものでdoctypeにしても基本的にHTML4(HTMLのdoctype宣言)同様、DTD/Data Type DefinitionはStrict/Transitional/Framesetから成り、一方、XHTML 1.1は、その基本として実質Strict DTDをベースとしてモジュール拡張するのでdoctype宣言としては1種類です。
また、XMLとの連携を図る為、より厳密には<:html>タグの書き方も若干追記が必要です。
◆XHTML 1.1のdoctype宣言 <!doctype html public "-//w3c//dtd xhtml 1.1//en" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"> |
◆XHTML1.0/Second Editionのdoctype宣言 <!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.0のdoctype宣言 <!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "dtd/xhtml1-strict.dtd"> <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "dtd/xhtml1-transitional.dtd"> <!doctype html public "-//w3c//dtd xhtml 1.0 frameset//en" "dtd/xhtml1-frameset.dtd"> |
更にXMLとの融合により、<html>の記述方法も変更・追記する必要があります。
◆XHTMLの<html>タグ 言語が英語の場合 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 言語が日本語の場合 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> |
つまり、XHTML 1.0 Second Editionの[ xhtml1-strict.dtd ]を例にとれば、
<!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"> |
XHTML 1.1 を例にとれば、
<!doctype html public "-//w3c//dtd xhtml 1.1//en" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> |
となります。
更に厳密さを期すにはXML文法規則上、DOCTYPEの前(最上段)にXMLバージョンとエンコード方式として文字コードを指定し下記の記述をした方がよいような気がしますが、W3C仕様書上にはそのような話はないようです。
<?xml version="1.0" encoding="utf-8"?>
XHTMLは、HTML4をベースとした初期バージョンXHTML1.0とXHTML1.0/Second Editionと非推奨モジュールを含んだXHTML1.1、非推奨モジュールを除外し、正規モジュール化しルビモジュールをサポートしたXHTML1.1/Second EditionといったXMLの登場と普及に伴い、ウェブの標準化団体W3CがXMLを前提にHTMLを再定義した新たな仕様です。
XHTML自体ののバージョンは、最新がXHTML1.1ですが、XHTML1.0ではなかったモジュールの概念を取り入れる事で、XHTML1.1ではモジュールの取り込み方と専用のDTDの必要性からNameSpace(名前空間)も専用にする必要が出てきました。
DOCTYPE宣言は、実はこの名前空間が記述されているのでこの点はDOCTYPE宣言にも影響してくるところです。
SGMLとそのサブセットであるHTMLとXMLそして更にこのサブセットであるXHTML1.0では、DTD/Document Type Definitionの名前空間を利用していました。
"dtd/xhtml1-xxx.dtd" |
XHTML 1.0 Second Editionからは、XHTML専用の名前空間とDTDを確保しています。
"http://www.w3.org/tr/xhtml1/dtd/xhtml1-xxx.dtd" |
XHTML 2.0に向けXHTML 1.1を含む以降のDOCTYPE宣言は、モジュール参照が必要になりそうですので、これまでのHTMLのようにホームページの作り方を覚えている最中の初心者の方がコピー&ペーストでDOCTYPE宣言を張り付けるという時代ではなくなるかもしれません。
たぶん、[strict.dtd][transitional.dtd][frameset.dtd]という枠はなくなり、[strict.dtd]という現行の厳密バージョンを基本としたDOCTYPE宣言になるかもしれません。
多少プログラム言語に近づくというか、「こういうドキュメントを作るからこのモジュールを参照」するというような選択を要する状況が出てくると考えられます。
また、XMLの概念を取り入れる目的は、XMLとの完全互換性によるあらゆるデータの融合の一貫と考えられる事とXMLが「拡張可能なマークアップ言語」であり、任意のタグを作る事ができる点から、更に「XMLのあのDBに格納するとするとこういうデータ型のああいうデータで格納しておいた方が。。。」という発想でXHTMLファイルを作る状況も出てくるでしょう。