[4] [[XHTML m12n]] で定義された条件を満たす[[外部引数実体]]を[DFN[[RUBYB[[[XHTMLモジュール]]]@en[XHTML module]]]]といいます。



* 仕様書

[REFS[
-[12] [[XHTML m12n]]
--[CSECTION[3.3. XHTML Family Module Conformance]]
<IW:XHTML1m12n:"conformance.html#s_conform_module">
-- [15] [CSECTION[2. Terms and Definitions]]
<IW:XHTML1m12n:"terms.html#a_terms">
]REFS]

* モジュール (XHTML 式文書型定義)

[18] 
>
:[RUBYB[モジュール][module]]:
[[DTD]] の[[素片]]として表現される[[文書型模型]]中の抽象単位で、
特定の論理・意味的構造の柔軟性・修正可能性・再利用性・理解可能性の向上のために[[マーク宣言]]を整理するために使用する。
[SRC[XHTML m12n >>15]]

[17] モジュールは[[抽象モジュール]]の実現値。

* XHTML 適合モジュール

[5] ある[[モジュール]]は次の条件を満たす時、
[DFN[[RUBYB[XHTML 適合モジュール][XHTML‐conforming module]]]]であるといいます
[SRC[[[XHTML m12n]] 3.2]]。
[FIG(list)[
- [6] [[文書型]] [INS[(仕様書のママ)]] が [[W3C]] 
定義の実装方法の1つを使って定義されていること。
-- [[XHTML m12n]] [[FE]] の時点では [[XML DTD]] ([[XML 1.0]])
だけですが、直ぐに [[XML Schema]]
も使えるようになると予告されています。
-- 残りの条件で [Q[[[DTD]]]] と書いた時は他の実装方法も含みます。
- [7] [[モジュール]]を定義する [[DTD]] は命名規則
[WEAK[([[XHTML//公開識別子]]を参照。)]] 
に従った固有識別子を持たなければなりません。
- [8] [[モジュール]]を [[XML DTD]] を使って定義する時は、
[[引数実体名]]を固有の[[接頭辞]]やその他同様の方法で隔離しなければなりません。
- [9] [[モジュール]]の定義には宣言する[[要素]]、[[属性]]、[[内容模型]]の構文的・
意味的な要件の自然言語文の説明がなければなりません。
- [10] [[モジュール]]の定義は [[W3C]] が定義する[[モジュール]]で定義されている[[要素]]の[[名前]]を再利用してはなりません。
但し、[[要素]]の[[内容模型]]や意味が元のものと同じか、
その拡張であるか、再利用する要素名が独自の 
[[XML名前空間]]のものである場合を除きます。
- [11] [[モジュール]]の定義する[[要素]]と[[属性]]はある
[[XML名前空間]]の一部でなければなりません。
その[[モジュール]]を定義するのが [[W3C]]
以外であるなら、その[[名前空間]]が他の [[W3C]]
の[[モジュール]]の[[名前空間]]と同じであっては''なりません''。
]FIG]

* 実装

[19] 
[[XHTML m12n]] では、 (版によって異なりますが)
[DFN[DTD実装]]、
[DFN[XML Schema実装]]、
[DFN[RELAX NG実装]]を規定していました。

[20] 
それぞれ、[[抽象モジュール定義]]に相当するものを
[[XML DTD]]、[[XML Schema]]、[[RELAX NG]] で記述した[[スキーマ]]ということになっていました。

[21] 
現実には、[[抽象モジュール定義]]と各実装は、少しずつ内容が違っていました。



- [23] [CITE[archy 1.0]], [TIME[2024-08-14T08:19:43.000Z]], [TIME[2001-01-05T23:47:44.346Z]] <https://web.archive.org/web/20010105234100/http://www.doctypes.org/archy/home.html>


[24] >>23 [[SHML]] と [[XHTML m12n]] の作者自ら用意した[[モジュール化]]の利用例。



* XHTML m12n 型モジュール化 XML DTD
[1] DTD 実装:
,*名前,*URI 参照,*参考
,[[AAA][aria-state]]
,[[ACAP]],<http://www.atsc.org/standards/T3S2-006r8.pdf>
,[[BML]]
,[[DASE]]-1,[[ATSC]],完全に指針に従ってはいない
,[[HLink]],<http://www.w3.org/TR/hlink>
,[[RDDL]],,[[RELAX]]、[[TREX]]、[[RELAX NG]] もあり
,[[Ruby]],<http://www.w3.org/TR/ruby>
,[[SVG 1.1]],<http://www.w3.org/TR/SVG11/>
,[[WML 2.0]]
,[[XFrames]],<http://www.w3.org/TR/xframes>,2005 [ABBR@en[[[WD]]]] 以降 [[DTD]] 実装あり
,[[XFrames]] 2002 [ABBR@en[[[WD]]]],<http://www.satoshii.org/dtd/xframes/> (非公式)
,[[XHTML m12n]] 1.0,<http://www.w3.org/TR/xhtml-modularization>
,[[XHTML 2.0]],<http://www.w3.org/TR/xhtml2>
,[[XML Events]],<http://www.w3.org/TR/xml-events>
,[[あれこれポップアップ]],<http://www.satoshii.org/dtd/ap/> (非公式)

[FIG(list)[ [22] (参考) XHTML m12n 型抽象モジュール定義があるけど DTD 実装がないもの

,*名前,*URI 参照,*参考
,[[Web Forms 2.0]],,[DEL[正式版の頃には DTD 実装も用意するつもりらしい。]]
,XHTML + SMIL,<http://www.w3.org/TR/XHTMLplusSMIL/>,SMIL 2.0 の抽象モジュール定義の表が載ってる。肝心の DTD 駆動器は作成中。[WEAK[もう2年前だから、やる気がないのだな。]]
,[[XForms 1.0]],<http://www.w3.org/TR/xforms/>
]FIG]

[2] DTD [[駆動器]]の例:
,*名前,*URI 参照,*参考
,[[BML]]
,HLink,<http://www.w3.org/TR/hlink>
,SVG 1.1,<http://www.w3.org/TR/SVG11/>
,Mobile SVG Profile,<http://www.w3.org/TR/SVGMobile/>
,[[RDDL]] ([[XHTML Basic]] + [[RDDL]])
,WML 2.0
,[[XHTML 1.1]],<http://www.w3.org/TR/xhtml11>
,XHTML 1.1 + あれこれポップアップ,<http://www.satoshii.org/dtd/ap/>
,XHTML 2.0,<http://www.w3.org/TR/xhtml2>
,[[XHTML Basic]] 1.0,<http://www.w3.org/TR/xhtml-basic>
,XHTML + MathML + SVG,<http://www.w3.org/TR/XHTMLplusMathMLplusSVG>
,[[XHTML-MP]]
,[[XHTML-Print]],<http://www.w3.org/TR/xhtml-print>
,[[DVB-HTML]]

他にも沢山あります。

[16] [[XHTML-IM]] には [[XML Schema]] 版 driver (のみ) がありました。

* 非 XHTML m12n 型 DTD モジュール
[3]
,*名前,*URI 参照,*参考
,[[MathML 2.0]],<http://www.w3.org/TR/MathML2/>,m12n の命名規則に従ってないものが混在。 しかし m12n なモジュールとの混用は多分問題ない。
,[[SMIL 2.0]],<http://www.w3.org/TR/smil20>,m12n の命名規則に従ってないものが混在。 しかし m12n なモジュールとの混用は多分問題ない。
,[[SMIL 2.1]],<http://www.w3.org/TR/SMIL2>,m12n の命名規則に従ってないものが混在。 しかし m12n なモジュールとの混用は多分問題ない。
,[[SMIL 3.0]],<http://www.w3.org/TR/SMIL3>,[[抽象モジュール定義]]あり、ただし [[XHTML]] とは違って[[プロファイル]]の定義に利用。[[DTD]] は m12n の命名規則に従ってないものが混在。 しかし m12n なモジュールとの混用は多分問題ない。


[FIG(quote)[
[FIGCAPTION[
[13] [CITE@en[XHTML™ 2.0 - Terms and Definitions]]
([TIME[2010-12-17 00:44:37 +09:00]] 版)
<http://www.w3.org/TR/2010/NOTE-xhtml2-20101216/terms.html>
]FIGCAPTION]

> module
> an abstract unit within a document model expressed as a DTD fragment, used to consolidate markup declarations to increase the flexibility, modifiability, reuse and understanding of specific logical or semantic structures.

]FIG]


[14] [CITE@en[XHTML™ 2.0 - Module Definition Conventions]]
([TIME[2010-12-17 04:25:02 +09:00]] 版)
<http://www.w3.org/TR/2010/NOTE-xhtml2-20101216/abstraction.html>