XHTML Primary 規格書 第3版
注意
目次
- はじめに
- 本規格の仕様
- 使用出来る要素型・属性
- 文書型定義
- その他
- XHTML Primary を策定した理由 (新たに加筆)
- 変更履歴
- 参考文献
はじめに
理念
- 本規格 XHTML Primary (根本的な/第一次的なXHTML) は、 XHTML Basic 1.0 をベースに、 ISO/IEC 15445:2000 の理念を加味し、さらに「基本的なマーク附けと文書構造」に徹したものとなっております。ただし、最低限必要な機能は備わっていますので、このマーク附けに基づいてサイトを作成することは可能です。
- べたテキストを、見出し/段落/リスト/引用と「普通に、かつ簡素に」マーク附けすることで、フラットでありながら、見出し順序を厳格にすることで論理的な階層構造を意識させることを目的としております。
- div 要素の扱いが限定されているため、見栄えや高度な文書構造を欲する目的としては全く使えません。既に規格化されている (X) HTML Living Standards などの御使用をお奨め致します。
本規格の妥当性
- 本規格に妥当(valid)な文書は、 XHTML1.0 / 1.1 / Basic 各規格にも準拠する文書となります。
- XMLに特化した記述を取り除けば(空要素タグや
lang
など)、HTML4.01, ISO/IEC 15445:2000 準拠にもなります。
本規格の仕様
基本構造
- head要素には、title要素が必須。meta, link各要素は任意。object要素はhead内には挿入出来ない。
- body要素の中身は、常にh1要素が先頭に存在していなければならない。
- div要素は、フッター記述にのみ使用可能。通常、ナビゲーションや著作権情報などを入れるために用いられる(DTD的には、div要素が来た時点で、本文の文書構造の終了と見倣される)。
見出しの記述
- 見出しを記述するhn要素は、文書の論理的構造に基づき、正しく記述されていなければならない。例えば、h3要素は、h2要素出現後のみ使用可能。h4要素はh3要素出現後のみ使用可能、など。
- 見出し要素は、body直下のみに使用可能。
ISO/IEC 15445:2000 との整合性より
- table 要素の summary 属性は必須。
- table 関聯要素における配置関係属性(halign, valign各属性)を禁止。
- img, object各要素から、width, height各属性を廃止。
- address, pre各要素中には、img, object各要素は記述出来ない。
- object 要素において、 archive 属性は使用できない。
- input 要素において、 src 属性は使用できない。
- textarea, select 要素において、 name 属性が必須。
その他
- dl要素中においては、dt要素が最初に存在していなければならない。DTD上では、dt/ddが一対のものとして定義されている。
- br要素とspan要素は、通常のインライン要素として記述出来る。ただし、あくまでも XHTML Family のための必須条件として入れているだけなので、原則として非推奨。
- form要素直下に書けるものは、p, ul, dl, ol, tableのみ。フォーム内に引用や見出しを入れる必要性はあまりないであろう、という見解のため。
- XHTML Basicがベースなので、fontやフレームなどはもちろん、スクリプトやstyle要素/属性、高度なテーブルやフォームの記述、ins, delなどの編輯用要素、b, i, sub, sup, hrなどのプレゼンテーション用要素などは、全て使用出来ない。
補遺
以上の仕様に違反した記述(見出しの出現順序も含め)がある場合、DTD的には全てinvalidとなります。
XHTML Primary の Media 型
- W3C 提供の XHTML Media Types に倣い、
application/xhtml+xml
, application/xml
, text/xml
の三つを推奨の media 型と致します。ただし、旧来の User Agent との互換性を最優先したい場合は、 text/html
を用いても構いません。
- 出来るだけ本来の XHTML と認識させるため、
.htaccess
などを用いたコンテントネゴシエーションや、サーバーサイドスクリプトや CGI を用いた media 型の振り分けが望まれます。
使用出来る要素型・属性
要素型
- 基本構造
- html
- (head , body)
- xmlns, lang
- head
- (link | meta)* , title , (link | meta)*
- lang, profile
- body
- h1 , %block* , (h2, %block* , ...)* , (div)?
- Common attributes
- ヘッダ内要素
- title
- #PCDATA
- lang
- meta
- EMPTY
- lang, name, http-equiv, content(REQUIRED), scheme
- link
- EMPTY
- lang, rel, rev, title, href, media
- 見出し要素
- h1, h2, h3, h4, h5, h6
- #PCDATA
- Common attributes
- リスト要素
- ul, ol
- li+
- Common attributes
- dl
- (dt , dd*)+
- Common attributes
- dt
- #PCDATA
- Common attributes
- dd, li
- (Inline | Block)*
- Common attributes
- 基本ブロック要素
- p
- #PCDATA
- Common attributes
- pre
- Inline* -(img | object)
- Common attributes, space
- blockquote
- Block*
- Common attributes, cite
- テーブル関聯要素
- table
- caption? , tr+
- Common attributes, summary(REQUIRED)
- tr
- (th | td)+
- Common attributes
- th, td
- (Block|Inline)* -table
- Common attributes, abbr, axis, colspan, headers, rowspan, scope
- caption
- Inline*
- Common attributes
- フォーム関聯要素
- form
- (dl | ol | p | table | ul)+
- Common Attributes, action(REQUIRED), enctype, method
- label
- Inline* -label
- Common Attributes, accesskey, for
- input
- EMPTY
- Common Attributes, type, name(場合によってはREQUIRED), value(場合によってはREQUIRED), checked, size, maxlength, tabindex, accesskey
- textarea
- #PCDATA
- Common Attributes, accesskey, cols(REQUIRED), name(REQUIRED), rows(REQUIRED), tabindex
- option
- #PCDATA
- Common Attributes, selected, value
- select
- option+
- Common Attributes, multiple, name(REQUIRED), size, tabindex
- 通常ブロック要素(Block)
- blockquote, li, dd, th, td, object各要素に包含し得るブロック各要素は、 基本ブロック要素(p, pre, blockquote),リスト要素(ul, ol, dl), table, form のみ。見出し要素(h1-h6)やフッダ専用要素(div, address)は含まれない。
- インライン要素(Inline)
- a
- Inline*
- Common attributes, href, charset, type, hreflang, rel, rev, accesskey, tabindex
- abbr, acronym, br, cite, code, dfn, em, kbd, samp, span, strong, var
- Inline*
- Common attributes
- img
- EMPTY
- src(REQUIRED), alt(REQUIRED), longdec, Common attributes
- object
- (Block|Inline|param|address)*
- Common attributes, classid, codebase, codetype, data, declare, name, standby, tabindex, type
- q
- Inline*
- Common attributes, cite
- 特殊要素
- param
- EMPTY
- id, name(REQUIRED), type, value, valuetype
- フッタ記述専用要素
- div
- (Block | address)*
- Common attributes
- address
- Inline* -(img | object)
- Common attributes
属性
- 共通属性 (Common Attributes)
- lang, title, class, id
文書型定義
当サイトでは、以下のDTDを用意致しております。
Modularization of XHTMLの規格に基づき、XHTML各モジュールを用いて記述し直したもの。他のXML文書に組み込んだり、他のXML文書を組み込むことが容易に行える筈です。
文書型宣言の記述方法は、以下の通りです。
<!DOCTYPE html PUBLIC "+//IDN purl.org/net/lena//DTD XHTML Primary 1.1//EN"
"http://purl.org/net/lena/xhtml-primary11.dtd">
MSIE で XHTML を扱うための DTD です。MSIE の CSS 機能では再現出来ない a, img, pre, テーブル/フォーム関聯要素に html:
接頭辞を附属させております。 DTD 読み込み時間を節約させるため、単一のファイルから構成されています。
文書型宣言の記述方法は、以下の通りです。DTD は各自お持ち帰りくださいますよう、お願い申し上げます。
<!DOCTYPE html PUBLIC "+//IDN purl.org/net/lena//DTD XHTML Primary with HTML-prefix//EN"
"xhtml-primary-htmlpref.dtd">
RELAX NG for XHTML Primary 1.1
XHTML Primary 1.1 の定義を、 RELAX NG の文法で記載したものです。数多くのモジュールから構成されており、実際の検証には全てのファイルが必要となります。
その他
XHTML Basic 1.0で記述されていたXHTML Base Architecture Module中の<?IS10744:arch xhtml
の記述を、<?IS10744 arch xhtml
と修正しました。これにより、ISO/IEC 10744:1997 の記法と、XML名前空間の記法と、いずれの規格にも準拠するようになりました。少なくとも、XML処理系でエラーになることはないはずです。
ただし、XML的にはターゲット名は<?IS10744 arch
ではなく<?IS10744
と認識されることになるため、上記の処理命令が的確に働くかどうかは、定かではありません。
XHTML Primary を策定した理由
XML 応用のための、実用に耐え得る最小限の表示体系を提供する
- XHTML Primary では、文書作成に必須な見出し/段落/リスト及び各種強調要素に加え、画像の埋め込みや基本的なフォームや表がサポートされております。複雑で見栄えのするものを望まない限りは、 XHTML Primary 準拠の文書を用いてサイトを構築することが可能です。
- CSS を用いることにより、見栄えのする文書を作成することが出来ます。
- 各種 XML 関聯技術を用いた文書の再利用や、他の XML 応用系を取り込んで言語の拡張をすることが出来ます。
学習目的の HTML 規格を提供する
- XHTML Primary では、各種物理要素や属性、埋め込みスタイルやスクリプト、 div 要素を用いた複雑な入れ子構造などは一切排除されているため、必然的にシンプルな構造を持つ文書となります。そのため、初心者でも理解しやすく、アウトラインプロセッサをはじめとする特殊なツールを用いずに、普通のテキストエディタだけで HTML 文書を作成出来ます。
- XML 応用系なので、終了タグの省略や引用符の省略といった特殊ルールが存在しません。逆に言えば、特殊規則を覚える必要が無いので、一つのパターンのマーク附けを学ぶだけで事足ります。
- HTML 4.01 や XHTML 1.x などと異り、見出し階層に基づく構造を重視しております。また、DTD によってそれらを検証することも可能です。そのため、論理的に筋が通った、質の良い文書作成を自ら心がけることが可能です。
- シンプルな構造故に、マーク附けや文書内容の校正が容易に行えます。複雑な構造を目で追いかける必要がないため、初学者でもテキストエディタのみで作業を行うことが出来ます。
ISO の規格が要求される環境で XHTML を使用可能にする
- ISO/IEC で定められた HTML は ISO/IEC 15445:2000 (ISO-HTML) です。ただし、旧来の SGML 応用系であるが故に、文書を様々な形で再加工したり、言語を拡張させたりということが比較的困難です。現在広く出回っている XML 処理系やツールを用いる、或は W3C が提唱する「意味の有るウェブ」を構築するためには、寧ろ XML 応用系である XHTML による文書作成が望まれます。
- 現状、 ISO/IEC で XHTML を規格化した例は存在しません。しかし XHTML Primary は ISO/IEC 15445:2000 (ISO-HTML) と完全互換であるため、各種 XHTML の中では最も ISO/IEC の意嚮に近いものであると言えます。
他のSGML応用の基本体系として XHTML を使用可能にする
- 基本体系として XHTML を使用するための技法として、 ISO/IEC 10744:1997 (HyTime) が提供されております。 XHTML Primary の DTD には、
IS10744
処理命令を用いた HyTime の記述が埋め込まれています。
- Modulalization of XHTML の Architecture Module にも同様の記述がありますが、処理命令のターゲット名に問題があるため、そのままでは XML 処理系でエラーになります。 XHTML Primary ではこの記述を修正されているため、安心して HyTime を使用出来ます。
あらゆる環境における User Agent で的確に処理出来る XHTML を提供する
- XHTML Primary は、 XHTML Basic 1.0 のサブセットであるため、 PC はもとより、携帯電話その他の各種端末において処理させることが可能です。現在、携帯電話用と PC 用で別々のサイトを作っている例が多いのですが、 XHTML Primary 準拠の文書では、スタイルを入れ換えるだけで、一つのソースで複数の種類の端末をターゲットに置くことが出来ます。
- ただし、他の言語を取り込んで拡張を行った場合、この利点は消滅するかも知れません。もっとも、それは全ての XHTML に対して言えることです。
変更履歴
2003-02-08
- 「XHTML Primary 策定の理由」を追加。
- 「XHTML Primary の Media 型」を追加。
- XHTML Primary with HTML-prefix の DTD に、 ISO/IEC 10744:1997 の表記を埋め込んだ(実際に有効になるかどうかは不明)。
- 要素/属性の説明に関し、誤りを修正。
2002-08-31
- DTD 内で ISO/IEC 15445:2000 もしくは XHTML Basic いずれでのみ使用可能な属性や記述が定義されていたので、削除もしくは変更を加えた(主にフォーム関係の要素において)。
- MSIE 5.x (Win) 以上で使用できる XHTML Primary with HTML-prefix を完成させた。
2002-07-24
ISO/IEC 15445:2000 では object 要素に archive 属性が存在しないため、XHTML Primary でも削除した。
2002-06-16
%divn.content
と hn
各要素 の関係を、 ISO/IEC 15445:2000 の Pre-HTML と同じになるよう、 DTD の記述を変更した (文書インスタンスの記述には影響無し)。
2002-04-28
DTD の公開識別子を、 +//IDN purl.org/net/lena
に変更。
2002-04-26
XHTML Primary 1.1 のスキーマとして、 RELAX NG を採用。
2002-04-15 (第二版作成)
- インライン要素 br を、「見栄えのための強制改行のために用い、原則として非推奨」というコメント附きで、他の要素にも適用出来るようにした(ただし、互換性のため)。
- XHTML Primary 1.0と1.1を、実質的に同じ機能になるようにした。
2002-03-21
インライン要素にspan, brを導入し、br は address 要素内限定とした (XHTML Family の必須条件より)。
2002-03-15
モジュールを利用した XHTML Primary 1.1 を公開。
2002-03-13
見出し直後に記述する実体参照を、%hn.content から %divn.content とした(ISO/IEC 15445 との整合性より)。
2002-03-12
非モジュール型 XHTML Primary 1.0 を公開。
参考文献