
[1] [[ISO/IEC 10744]]:1997 附属書 A は 
[DFN[SGML [RUBYB[拡張機能] [Extended Facilities]]]]を定義しています。

仕様書:
- [[ISO/IEC 10744]]:1997
-- [CSECTION[A SGML Extended Facilities]] 
<http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-A.html>

[2] '''SGML 拡張機能とは''': [[SGML]] ([[ISO 8879]])
が標準化された後、様々な [[SGML応用]]が使われるようになり、
[[HyTime]] や [[DSSSL]] のような大規模な周辺規格も開発されましたが、
その過程で [[SGML]] 本体の機能では不十分な点が明らかになってきました。
そこで特に [[HyTime]] や [[DSSSL]] に依存せず、
一般に利用可能な [[SGML]] の拡張機能が [[ISO/IEC 10744]]:1997
では附属書 A に[DEL[寄せ集められて]][INS[まとめられて]]います。

基本的に [[SGML]] ([[ISO 8879]]) 本体はそのままで、
構文や意味が実装・応用依存とされた部分を利用したり、
[[SGML文書]]から参照される外部の[[文書]]としたりして既存の
[[SGML]] の実装・応用をそのまま利用できるように設計されています。

[[HyTime]] を規定する [[ISO/IEC 10744]]
の一部となっているのは、歴史的な理由と、
[[ISO/IEC]] で新しい規格を作るのは負担が大きいためとされています。

[3] '''SGML 拡張機能''':
SGML 拡張機能は次の6種類があります。
それぞれ別個の機能として独立に実装できます。

:[[字句型]]:[[属性値]]などの書式を詳細に規定できる[[字句型]]は
[[ISO/IEC 10744]]:1997 附属書 A.2
[CSECTION[Lexical Type Definition Requirements (LTDR)]]
で規定されています。[[字句型]]は外部の[[字句型定義]]で定義し、
[[文書型]]や[[特性集合]]の仕様などで参照します。
:[[体系]]:[[文書型]]の継承関係を導入する[[体系的形式]]は
[[ISO/IEC 10744]]:1997 附属書 A.3
[CSECTION[A.3 Architectural Form Definition Requirements (AFDR)]]
で規定されています。 [[SGML応用]]の開発者は既存の[[体系]]から[[派生]]させた新しい[[文書型]]を設計できます。
:[[特性集合]]:[[構文解析]]の結果生じる[[特性集合]]
([[情報集合]]) の形式的記述方法を [[ISO/IEC 10744]]:1997
附属書 A.4 [CSECTION[Property Set Definition Requirements (PSDR)]]
が規定しています。[[グローブ]]という構文解析結果の[[グラフ]]構造の概念が使われています。
:[[一般体系]]:[[一般体系]]は [[SGML]]
を補う基本的な[[属性形式]]などを定義する[[体系]]であり、
[[ISO/IEC 10744]]:1997 附属書 A.5 [CSECTION[General Architecture]]
で規定されています。
:[[公式システム識別子]]:[[システム識別子]]で[[蓄積域物体]]を識別するための標準化された方法が[[公式システム識別子]]で、
[[ISO/IEC 10744]]:1997 附属書 A.6 
[CSECTION[Formal System Identifier Definition Requirements (FSIDR)]]
で規定されています。
:[[SGML]] 特性集合:[[SGML]] 本体や[[体系]]などの拡張機能で得られる[[情報集合]]を記述したのが
[[SGML]] [[特性集合]]で、 [[ISO/IEC 10744]]:1997
附属書 A.7 [CSECTION[SGML Property Set]] で規定されています。
外部の [[SGML]] [[文書]]を参照するための [[SGML]]
[[記法]]も定義されています。



* 適合性

[4] >>3 の各拡張機能はそれぞれの適合性の規定があるものもありますが、
それに加えて SGML 拡張機能一般の適合性に関する規定もあります
[SRC[ISO/IEC 10744:1997 A.1]]。

[5] '''SGML 拡張機能の応用の適合性''': 
- 適合 SGML 拡張機能[[応用]]は、
各拡張機能が[[応用]]規定とした事項のみを規定できます。
[SRC[ISO/IEC 10744:1997 A.1.1.1]]
- 適合 SGML 拡張機能[[応用]]は、
[[文書]]が適合 [[SGML文書]]であることを要求しなければなりません。
また、 [[ISO/IEC 10744]]:1997 が認めている[[マーク]]を禁止してはなりません。
[SRC[ISO/IEC 10744:1997 A.1.1.2]]

[6] '''SGML 拡張機能システムの適合性''':
- 適合 SGML 拡張機能[[システム]]は、[[文書化物]]の[[自然言語]]で、
規格に関する標示を目立つように行わなければなりません。
[SRC[ISO/IEC 10744:1997 A.1.1.3.1]]
-- 規格標示を標示しなければならない場所:
--- すべての出版物の前付けの目立つ位置
(通常は題頁と表紙)
--- SGML 拡張機能プログラムを識別するすべての画面表示
--- すべての宣伝物・訓練物
-- SGML 拡張機能[[応用]]の場合の標示文:
[PRE[
An SGML Extended Facilities application conforming to
Annex A of International Standard ISO/IEC 10744 --
Hypermedia/Time-based Structuring Language
]PRE]
-- SGML 拡張機能[[システム]]の場合の標示文:
[PRE[
An SGML Extended Facilities system conforming to
Annex A of International Standard ISO/IEC 10744 --
Hypermedia/Time-based Structuring Language
]PRE]
- 適合 SGML 拡張機能[[システム]]の[[文書化物]]は、
関係する[[システム宣言]]や[[定義文書]]を含まなければなりません。
[SRC[ISO/IEC 10744:1997 A.1.1.3.1]]
- [[文書化物]]は、 SGML 
拡張機能と[[応用]]の規定や[[システム]]の機能を明確に分けなければなりません。
[SRC[ISO/IEC 10744:1997 A.1.1.3.2]]
- [[システム]]や[[応用]]の[[文書化物]]で明記しない
[[SGML拡張機能]]の構造については [[ISO/IEC 10744]]:1997
と附属書を参考文献として引用しなければなりません。
例えば簡単のため機能の一部だけを紹介する時は、
他の機能があって [[ISO/IEC 10744]]:1997
に書かれていることを明記しなければなりません。
[SRC[ISO/IEC 10744:1997 A.1.1.3.2]]
- [[SGML拡張機能]]の構造に関する[[用語]]は
[[ISO/IEC 10744]]:1997 のものを出版物や[[プログラム]]の[[自然言語]]に翻訳してしようしなければなりません。
非標準の用語を使う時は説明を加えなければなりませんし、
標準の SGML 拡張機能の用語と同じものを使ってはいけません。
[SRC[ISO/IEC 10744:1997 A.1.1.1.3]]
- 適合 [[SGML拡張機能]][[システム]]は[[応用]]の規定を
[[ISO/IEC 10744]]:1997 附属書 A の要件であるかのように要求してはなりません。
[SRC[ISO/IEC 10744:1997 A.1.1.3.4]]

[7] とまあ、[[宣伝条項]]まであるわけです。うっかりすべて実装すると、
- 適合 SGML システムです。
- 適合 SGML 拡張機能システムです。
- 適合体系機関です。
- 適合特性集合システムです。
- 適合一般体系システムです。
- 適合公式システム識別子システムです。

なんてあらゆるところに書きまくらなければならなくなります。

[[#comment]]


* メモ