[1] Modularization of XHTML / XHTML Modularization (XHTML のモジュール化、 XHTML m12n) は、XHTML に含まれる機能 (要素や属性) を「モジュール」として分解し、他の XML 語彙と組み合わせることによって派生文書型 (「XHTML族文書型」など) を作成できるようにした仕様です。
[3] 従って単に XHTML のモジュールを定義するにとどまらず、 一般に XML のモジュールの設計とその組み合わせ方のフレームワークを規定するものとなっています。
[2] ただ現実には XHTML m12n は XML名前空間と相性が悪い DTD をベースに設計されているなど様々な内部矛盾をはらみ、 XHTML2 WG (旧 HTML WG) 自身も使いこなすことができませんでした。W3C 内においても XHTML m12n のフレームワークに完全に従って開発されているモジュールはほとんどありません。
[4] 次のような概念が定義されていました。
[62] XHTML m12n で定義されているモジュール:
[64] 抽象モジュールとDTDモジュールで内容が一致していないのが沢山あってひどい。 属性定義や内容モデルの定義が DTD では抽象モジュールに近い形でできないのは仕方ないにしても。。。
[65]
双方向的文モジュールは bdo
と dir
が定義されているところ、
DTDモジュールでは dir
は共通属性モジュールに入っていて、
bdo
だけが定義されている、
ということで BDO要素モジュールなる名前になっていますが、
XML Schemaモジュールでは両方定義されているのに名前はそのままで
BDO要素モジュールなのはひどい。
[21]
、
Sun Microsystems, Inc. の Murray Altheim
は
HTML 3.2 をモジュール化した
SHML
を開発しました。
[26] 、 Sun Microsystems, Inc. の Murray Altheim は HTML 4.0 をモジュール化した XHTML を開発しました。
In this document XHTML (ie., "extensible HTML") is used to refer to this XML reformulation of HTML 4.0 rather than the W3C HTML Working Group code name Voyager, in order to reduce confusion with the products of the Working Group.
とあります。当時 HTML WG は XHTML のことを Voyager と呼んでいました。 それとの区別のために XHTML と呼ぶと言っています。 XHTML という名称はこれ発祥だったのでしょうか。
[29] SHML, XML Modularization of HTML 4.0 と開発されてきた DTD のモジュール化技法はそのまま HTML WG に採用されて XHTML m12n 仕様となりました。 Murray Altheim がそのまま編集者の1人になりました。
[30] かつて (平成時代半ば頃) http://hades.mn.aptest.com/htmlwg/ で開発途上の XHTML 仕様書・関連ファイル群が公開されていました。 残念ながら現在はサーバーが消滅しており、 Internet Archive にもほとんど残っていません。 (この辺の事情は HTML WG 参照。)
[31] http://hades.mn.aptest.com/htmlwg/murray/xhtml11.old/ に頃の DTD 開発の過程と思われるファイル群がありました。 http://hades.mn.aptest.com/htmlwg/murray/xhtml11.old/CHANGES には
XHTML Changes of 2000-03-29
と書かれています。また、このディレクトリーのファイルはのからのタイムスタンプおよびファイル内の注釈の日付があります。 一番新しいものは付です。
[33] これらの一連のファイルや他の似たようなディレクトリーのファイルから、 Murray Altheim は XHTML m12n 及び関連仕様の DTD を中心に開発を分担していたと推測されます。
[32] http://hades.mn.aptest.com/htmlwg/murray/xhtml11.old/Makefile は付で、
Makefile for various flavours of XHTML 1.1 and XHTML 2.0
と題されています。
[34] Makefile
では、DTDモジュールのファイル群は
があります。また、完全版 DTD の生成は
が対象となっています。この他にいくつか実験用のもの (例えば最小構成、 HTML 2.0 相当、別語彙との組み合わせなど) があります。 これらを構成するファイルが同じディレクトリーにひとまとめに入っています。
[45] 一般公開されるときには別々の WD になっているので見えにくいですが、 XHTML m12n, XHTML 1.1, XHTML Basic の DTD が一体的に開発されていたことがわかります。 ここまでは予想できることですが、それに加えて XHTML 2.0 の DTD も実は一体で開発されていたことが判明します。
[47] 最終版 XHTML m12n の DTD にまで残る、あまり説明のない予備的 (provisional) 機能、
の謎はこの XHTML 2.0 用モジュール群で解決できます。
[50] 公表段階に達した XHTML 2.0 WD は従来の XHTML1 とはまったく非互換の新言語となっていました。 それならばこのような「準備」は意味がありません。 XHTML m12n の規定する XHTML1 言語のモジュールは XHTML 2.0 ではまったく使えないので、 全面改正が必要となります。
[52] しかし段階で構想されていた XHTML 2.0 はそこまで過激なものではなく、 XHTML 1.1 のいくつかのモジュールを差し替えるなどした漸進的な改訂でした。 それならば XHTML m12n に必要な変更はわずかなので、 XHTML 2.0 の完成を待って改正しなくても、 追加モジュールを既存 XHTML m12n モジュールと組み合わせられるよう、 「準備」することに意味はあります。
[89]
時点ではこの DTD と対応関係にある
XHTML 2.0
仕様書も用意されていました。
編集者に
Murray Altheim
の名前もあり、
この時点では
XHTML m12n,
XHTML 1.1,
XHTML 2.0
が同じ座組で作られていたことになります。
[51] こうした構成は HTML WG で完全に合意されたものだったのか、 Murray Altheim の独自の考えに過ぎなかったのかはよくわかりません。 しかし「準備」がそのままW3C勧告となる程度に反対はされていませんでした。 にも関わらずこれらの「準備」と XHTML 2.0 モジュール案が日の目を見ることはなかったのです。
[57] の XHTML 1.1 W3C勧告出版時点で Murray Altheim は XHTML 1.1 の編集者の1人かつ HTML WG の構成員だったとされます >>55 が、に最初に公開された XHTML 2.0 WD の編集者に Murray Altheim の名前はありません。 HTML WG の構成員だったかは不明です。
[59] には mimasa が実験と称して XHTML 2.0 DTD の開発を開始していますが >>56、 XHTML m12n のモジュール化の枠組みでの開発ではあるものの、 Murray Altheim のシステムや XHTML 2.0 DTDモジュールとは別個に新規開発しているように見えます。
[60] なお、 XHTML Basic は Murray Altheim が仕様書の編集者には入っていませんが、 DTD の編集者として名前は挙がっています。 >>58 しかし mimasa ら他の人の名前もあり、 XHTML Basic の開発段階で既に Murray Altheim とそのシステムは DTD のオリジナル版編集から離れていた可能性があります。
[61] 非推奨の要素や属性が XHTML 1.1 や XHTML Basic で使われないにも関わらずモジュール化されていたことも、 必要な応用で使えるようにとの説明はされていたものの、 いまいち腑に落ちないところでした。 しかし XHTML m12n が元々 HTML 4.0 のモジュール化として開発されてきた経緯を鑑みれば、 HTML 4.0 の3つの DTD に相当する3つの XHTML 1.1 DTD が生成されていることは納得感があります。
[54] この当時の XHTML 2.0 案については XHTML 2.0 参照。
[84]
興味深いのは
http://hades.mn.aptest.com/htmlwg/murray/xhtml11.old/xhtml11_ja.dtd
Japanese-localized XHTML 1.1 DTD
(公開識別子 -//W3C//DTD XHTML 1.1//JA
,
)
です。
XHTML 1.1 本体に加えて
http://hades.mn.aptest.com/htmlwg/murray/xhtml11.old/xhtml-ja1.ent
Japanese Legacy Character Entity Set for XHTML
(公開識別子 -//W3C//ENTITIES Japanese Legacy 1 for XHTML//JA
,
)
を読み込んでいます。
[85] -//W3C//ENTITIES Japanese Legacy 1 for XHTML//JA
では次の文字参照が定義されていました。
<!-- The following three are proposed for general use in XHTML 1.1: --> <!ENTITY bsol "\" ><!-- Reverse Solidus, U+005C ISOnum --> <!ENTITY tilde "~" ><!-- Tilde, U+007E --> <!ENTITY horbar "―" ><!-- Horizontal Bar, U+2015 ISOnum --> <!-- The following are for use in Japanese processing systems: --> <!ENTITY wdash "〜" ><!-- Wave Dash, U+301C --> <!ENTITY dvline "‖" ><!-- Double Vertical Line, U+2016 --> <!ENTITY fmacron " ̄"><!-- Fullwidth Macron, U+FFE3 --> <!ENTITY fbsol "\" ><!-- Fullwidth Reverse Solidus, U+FF3C --> <!ENTITY ftild "~" ><!-- Fullwidth Tilde, U+FF5E --> <!ENTITY fparato "∥"><!-- Parallel To, U+2225 --> <!ENTITY fminus "-" ><!-- Fullwidth Hyphen-minus, U+FF0D --> <!ENTITY fcent "¢" ><!-- Fullwidth Cent Sign, U+FFE0 --> <!ENTITY fpoun "£" ><!-- Fullwidth Pound Sign, U+FFE1 --> <!ENTITY fyen "¥" ><!-- Fullwidth Yen Sign, U+FFE5 --> <!ENTITY fnot "¬" ><!-- Fullwidth Not Sign, U+FFE2 --> <!ENTITY fbrvbar "¦"><!-- Fullwidth Broken Bar, U+FFE4 -->
[86] つまり Unicode と従来文字コードとの変換で問題となっている文字を文字参照できるようにするものでした。
[88] これがいかなる理由で開発され、なぜ HTML WG に正式採用されなかったのか、 気になります。 ほぼ同時期、 付で XML Japanese Profile なる文書が W3C に提出されており、同じ文字コード問題を扱っていますが、 その提出者リストの1人が
Eve MALER (Sun Microsystems)
となっています。 >>87 両者に何か関連はあるのでしょうか。
[66]
param
はアプレットモジュールと物体モジュールの2つで定義されていますが、
重複について特に言及がありません。
(名無しさん)
[67]
遺物再定義DTDモジュールには lang
が含まれていますが、抽象モジュールには含まれていません。
(名無しさん)
[68]
W3C Chat before XTech 2000: XHTML - a bridge to the Web of the future (Dan Connolly 著, 2000-02-21 12:36:22 +09:00
版) http://lists.w3.org/Archives/Public/www-html/2000Feb/0203.html
IRC log from 2000-02-25T08:07-0500 (2000-02-26 00:53:02 +09:00
版) http://www.w3.org/2000/02/25-xhtml-irc
(名無しさん)
[69] >>68 特に面白い話題はなかった。 (名無しさん)
[70] HTML 4.01 勧告と XHTML m12n 1.0 勧告抽象モジュール定義の要素型と属性の対応:
a, abbr, acronym, address, area, b, base, bdo, big, blockquote, body, br, button, caption, cite, code, col, colgroup, del, dfn, div, dd, dl, dt, em, fieldset, form, h1, h2, h3, h4, h5, h6, head, hr, html, i, img, input, ins, kbd, label, legend, li, link, map, meta, noscript, object, ol, option, optgroup, p, pre, q, samp, script, select, small, span, strong, style, sub, sup, table, tbody, td, textarea, tfoot, th, thead, title, tr, tt, ul, var, {td, th}@abbr, {form, input}@accept, form@accept-charset, {a, area, button, input, label, legend, textarea}@accesskey, form@action, {col, colgroup, tbody, td, tfoot, th, thead, tr}@align, {area, img, input}@alt, object@archive, {td, th}@axis, table@border, table@cellpadding, table@cellspacing, {col, colgroup, tbody, td, tfoot, th, thead, tr}@char, {col, colgroup, tbody, td, tfoot, th, thead, tr}@charoff, {a, link, script}@charset, input@checked, {blockquote, del, ins, q}@cite, map@class, object@classid, object@codebase, object@codetype, textarea@cols, {td, th}@colspan, meta@content, {a, area}@coords, object@data, {del, ins}@datetime, object@declare, script@defer, bdo@dir, {button, input, optgroup, option, select, textarea}@disabled, form@enctype, label@for, table@frame, {td, th}@headers, {img, object}@height, base@href, {a, area, link}@href, {a, link}@hreflang, meta@http-equiv, map@id, {img, input}@ismap, {optgroup, option}@label, img@longdesc, input@maxlength, {link, style}@media, form@method, select@multiple, {button, input, object, select, textarea}@name, meta@name, area@nohref, {a, area, button, input, label, select, textarea}@onblur, {input, select, textarea}@onchange, {a, area, button, input, label, select, textarea}@onfocus, body@onload, form@onreset, {input, textarea}@onselect, form@onsubmit, body@onunload, head@profile, {input, textarea}@readonly, {a, link}@rel, {a, link}@rev, textarea@rows, {td, th}@rowspan, table@rules, meta@scheme, {td, th}@scope, option@selected, {a, area}@shape, input@size, select@size, {col, colgroup}@span, {img, input, script}@src, object@standby, table@summary, {a, area, button, input, object, select, textarea}@tabindex, {map, style}@title, button@type, {a, link, object, script, style}@type, input@type, {img, input, object}@usemap, {col, colgroup, tbody, td, tfoot, th, thead, tr}@valign, {button, input, option}@value, {col, colgroup}@width, {img, object}@width, table@width (どちらにもある)
@class, @dir, @id, @onclick, @ondblclick, @onkeydown, @onkeypress, @onkeyup, @onmousedown, ponmousemove, @onmouseout, @onmouseover, @onmouseup, @style, @title (どちらにもあるが定義されている要素型がどうなっているかは調べていない)
html@version (HTML 4.01 では非推奨)
frame, frameset, frameset@cols, frame@frameborder, frame@longdesc, frame@marginheight, frame@marginwidth, frame@noresize, frameset@onload, frameset@onunload, frameset@rows, frame@scrolling, frame@src (HTML 4.01 ではフレーム集合 DTD にのみ存在)
iframe, noframes, iframe@frameborder, iframe@height, iframe@longdesc, iframe@marginheight, iframe@marginwidth, iframe@scrolling, iframe@src, {a, area, base, form, link}@target, iframe@width (HTML 4.01 ではフレーム集合 DTD と移行用 DTD にのみ存在)
applet, applet@alt, applet@archive, applet@code, applet@codebase, applet@height, applet@name, applet@object, applet@width (HTML 4.01 では非推奨、 M12N では所属モジュール非推奨)
param, param@id, param@name, param@type, param@value, param@valuetype (M12N では非推奨モジュールとそうでないモジュールに両方所属)
param, a@name, form@name, img@name, map@name (M12N では非推奨モジュール所属)
frame@name (HTML 4.01 ではフレーム集合 DTD にのみ存在、 M12N では非推奨モジュール所属)
iframe@name (HTML 4.01 ではフレーム集合 DTD と移行用 DTD にのみ存在、 M12N では非推奨モジュール所属)
basefont, center, dir, font, isindex, menu, s, strike, u, caption@align, {div, h1, h2, h3, h4, h5, h6, p}@align, hr@align, {img, input}@align, legend@align, table@align, body@alink, body@background, body@bgcolor, {table, td, th, tr}@bgcolor, img@border, br@clear, {basefont, font}@color, {dir, dl, menu, ol, ul}@compact, {basefont, font}@face, img@hspace, script@language, body@link, hr@noshade, isindex@prompt, hr@size, ol@start, body@text, li@type, ol@type, ul@type, {td, th}@height, {td, th}@nowrap, {basefont, font}@size, li@value, body@vlink, img@vspace, hr@width, pre@width, {td, th}@width (HTML 4.01 でも M12N でも非推奨)
basefont@id (HTML 4.01 にもあるが M12N では非推奨)
table@datapagesize (HTML 4.01 で予約、M12N 1.0 勧告にあるが 1.1 になし)
dl@type, @xml:lang, {pre, script, style}@xml:space, html@xmlns (M12N にだけある)
@lang (HTML 4.01 にだけある)
{applet, iframe, object}@align, object@border, {applet, object}@hspace, {applet, object}@vspace (HTML 4.01 にだけあるが非推奨)
(名無しさん)
[71] 404: http://www.altheim.com/specs/xhtml/NOTE-xhtml-modular-19990201.html http://www.altheim.com/specs/xhtml/NOTE-xhtml-modular-19990202.html
これは 200: http://www.altheim.com/specs/xhtml/
(名無しさん)
[72]
XHTML Modularization Overview (Shane P. McCarron 著, 2001-04-21 16:44:20 +09:00
版) http://www.w3.org/MarkUp/modularization
(名無しさん)
[73]
Review of XHTML Modularization (2007-09-14 01:30:51 +09:00
版) http://www.w3.org/2001/tag/2007/09/xhtml-modularisation-thoughts.html
[10] 数少ない採用例の1つ、 XHTML Mobile Profile は、 「Forms (partial)」のような怪しい使い方をしていました。 文書型がモジュールの一部分のみを勝手に取捨選択できるのなら、 モジュール化とは何だったのかという感じです。
[75] >>74 DTDモジュールには抽象モジュールにない豊富な機能スイッチ (仕様内の自己矛盾だろw) があるにも関わらず、 XHTML2 WG は XHTML Basic 1.1 で m12n architecture の自己破壊をやってますからね。。。。。。
[77] XHTML Basic 1.1 では li
要素の
value
属性が「復活」しましたが、 XHTML m12n
で value
属性が単独のモジュールとして提供されていなかったために、
どのモジュールにも属さない属性として無理矢理に追加されています。
[78] また、元は文書型の仕様書であったはずの XHTML Basic 1.1 が定義する
inputmode
属性のモジュールを同じく文書型の仕様書であるはずの
XHTML 1.2 が参照したりしています。
これでは何のためにモジュールを別の仕様書にしているのかさっぱりわかりません。
[11] 本当に必要なら XHTML 1.1 ではなく XHTML m12n にこそ含めるべきではないでしょうか。
[80] XHTML-Print もモジュール境界とは無関係に要素や属性ごとに個別に利用者エージェントの要件を定めています。 モジュール化は DI も目的の1つではなかったのでしょうか。
[76] XHTML Modularization Tutorial は、旧 HTML WG (現 XHTML2 WG) が作業していた文書です。後の XHTML M12N 1.0 の附属書の一部に相当します。
[81] XHTML Modularization: a markup language designer's toolkit - W3C Blog ( 版) http://www.w3.org/QA/2010/06/xhtml_modularization_a_markup.html
[82] XHTML Modularization in RelaxNG (Steven Pemberton 著, 版) http://lists.w3.org/Archives/Public/public-xhtml2/2010Apr/0009
[83] Schemas for XHTML (MURATA Makoto (FAMILY Given) 著, 版) http://lists.w3.org/Archives/Public/www-tag/2010Mar/0082.html
[6] Modularization of XHTML - XHTML DTD Module Implementations http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/dtd_module_defs.html#a_module_XHTML_Special_Characters: 定義済み実体の宣言が激しく変じゃない? 仕様書本文中の DTD も、単独資源としての DTD も。
[8] >>6 XHTML1.1 とかの flat DTD ではなぜか正常。
[9] http://www.w3.org/TR/xhtml-modularization/DTD/templates/ とか http://www.w3.org/TR/xhtml-modularization/DTD/examples/ の下には色々面白い例があります。 (これらの URI 自体は 403
になるので、どんな中身があるかは archived 版を入手して調べる必要があります。) XHTML というより一般に DTD のモジュール化の入門といった感じです。
[5] Modularization of XHTML http://www.w3.org/TR/xhtml-modularization/
[12] CFC: Make previous versions of HTML and XHTML obsoleteCFC: Make previous versions of HTML and XHTML obsolete · Issue #86 · w3c/WebPlatformWG () https://github.com/w3c/WebPlatformWG/issues/86
[13] Proposal to Republish Previous Versions of HTML and XHTML as Obsolete Recommendations (Wide Review until 2017-09-07) (Xueyuan著, ) https://lists.w3.org/Archives/Public/public-review-announce/2017Aug/0004.html
[14] NLM Journal Archiving and Interchange Tag Suite Version 2.3 (, ) http://dtd.nlm.nih.gov/2.3/
[91] Модуляризация XHTML, https://pyramidin.narod.ru/xhtml-modul/overview.html