気の向くままに辿るIT/ICT/IoT
XHTML

XHTML DOCTYPE宣言

ホーム前へ次へ
XHTMLのdoctype宣言の書き方は?

XHTMLのDOCTYPE

XHTMLのDOCTYPE宣言

 現在確定している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はHTMLXMLアプリケーションに組み込む為に「便宜的に」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


XHTML 1.1のdoctype宣言
<!doctype html 
     public "-//w3c//dtd xhtml 1.1//en"
    	"http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">


XHTML 1.0/Second Edition


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">


XHTML 1.0


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">


XHTMLの<html>タグ

 更に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">


XHTML1.0/Second Edition[ xhtml1-strict.dtd ]と<html>タグ

 つまり、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">


となります。

XHTMLの厳密な書式

 更に厳密さを期すにはXML文法規則上、DOCTYPEの前(最上段)にXMLバージョンとエンコード方式として文字コードを指定し下記の記述をした方がよいような気がしますが、W3C仕様書上にはそのような話はないようです。

<?xml version="1.0" encoding="utf-8"?>

XHTMLタグと記述方法

過去記事

 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ファイルを作る状況も出てくるでしょう。

ホーム前へ次へ