[1] 体系 DTD は、体系定義の宣言を集めたものです。
体系 DTD は、文書実現値内の体系物体の妥当性検証のために使用できますが、 体系物体以外 (他の体系に属する物体や、非体系的である物体) の検証はできません。 (当たり前。)
仕様書: ISO/IEC 10744:1997 A.3.2.1.2 http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-A.3.2.html#clause-A.3.2.1.2
[2] メタDTD = 高次DTD = meta DTD ともいいますが、 (ISO/IEC 10744:1997 もそう呼んでいますが、) 数学や論理学でいう「メタ」とは意味的に異なっていて誤解を招くので「体系 DTD」 と呼ぶのがお勧めらしいです。
[3] 体系 DTD は、文書実現値を直接検証する普通の DTD と同じように SGML のマーク宣言を使って記述します。 構文的にも意味的にも、ほとんど同じです。 ただし適用対象が文書実現値の物体そのものではなく、 体系文書実現値 (文書実現値を文書体系の定義によって変形したもの) となります。
[4] 体系や体系 DTD は、文書実現値を制約しますが、文書型定義は制約しません。ですから、ある基底体系から派生した体系で認められている構造が基底体系でも認められているとは限りません。逆に、派生体系で認められている構造はどうしても基底体系で認められないという状況すら可能です。 しかし、そのような状態が好ましくないことは確かです。 検証体系機関は任意選択でそのような状況にないかを検証してもよいことになっています。 (名無しさん)
[5] 体系 DTD は、クライアント文書と同じ SGML宣言が適用されます。ただし、体系 DTD を参照する体系支援宣言に体系量集合 (ArcQuant) 支援属性がある場合は、体系量集合属性の値が SGML の量集合引数に代えて用いられます。
仕様書: ISO/IEC 10744:1997 A.3.4.2 http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-A.3.4.html#clause-A.3.4.2
[6] ISO/IEC 10744:1997 の拡張を使った体系 DTD は、体系 DTD のできるだけはじめの方で、 拡張を使う以前に、 <!AFDR "ISO/IEC 10744:1997"> と書かなければなりません。
(拡張を使っていない体系 DTD では必要ありません。)
仕様書: ISO/IEC 10744:1997 A.3.8.1 http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-A.3.8.html#clause-A.3.8.1
[7] 適合体系から派生した体系や文書は、 体系支援記法宣言に
A base architecture used in conformance with the Architectural Form Definition Requirements of International Standard ISO/IEC 10744.と書くべき (should) です。
仕様書: ISO/IEC 10744:1997 A.3.8.2 http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-A.3.8.html#clause-A.3.8.2
[8] Conventional comment:
ISO/IEC 10744:1997 では conventional comment
と称して、体系的DTD の中に SGML DTD
で記述できる以上の情報をある程度形式的に記述しています。
基本的には人間向けであって処理器が理解することは目的としていませんが、
その一部は検証のために機械処理することも想定されています。
[8] 任意選択機能の引数実体: ISO/IEC 10744:1997 では、任意選択の機能について、 機能の名前と同じ名前の引数実体を宣言しています。 そしてその引数実体参照がマーク区間の状態の部分で使われています。
体系的DTD を使用する際に、その機能を有効にするなら
INCLUDE
、無効にするなら IGNORE
を機能の名前と同じ引数実体として宣言して切換えできます。
仕様書: