SGML/XMLの入門から応用まで [7] − SGML関連規格 (SGML Support Facility)− 松下電送システム 小町 祐史 1. はじめに 本連載の初回に, SGML関連規格として出版されているSGML Support Facilityについて次の規格等の存在をお知らせした。 (1) 公開テキスト所有者識別子 ISO/IEC 9070: Registration Procedures for Public Text Owner Identifiers (2) SGML文書交換様式 ISO 9069: SGML Document Interchange Format (3) SGML構文主導形編集システムの指針 ISO/IEC TR 10037: Guidelines for SGML Syntax-Directed Editing Systems (4) 数学及び科学用公開実体集合 ISO/IEC TR 9573-13: Public Entity Sets for Mathematics and Science (5) 非ラテン系アルファベット用公開実体集合 ISO/IEC TR 9573-15: Public Entity Sets for Non-Latin Based Alphabets 今回は, これらの中で既にJISに翻訳されている(1)と, 現在,国際標準化機構のISO/IEC JTC1/WG4においてドラフトが作成されている (6) データ記法を指定するSGML公開識別子の利用 ISO/IEC TR 9573-9: Using SGML Public Identifiers for Specifying Data Notations とについて, その内容を紹介する。 2. 公開識別子 2.1 SGML公式公開識別子 SGMLを用いた記述に際しては,多くのシステムが共通して用いるオブジェクトをどんなシステムからでも一意に特定できる名前としての識別子を用いて参照することがある。この参照に用いる識別子をSGML公式公開識別子という。 それは例えば,実体宣言や記法宣言の中で次のように用いられる。 SGMLの規定(ISO 8879)[1]では,分散環境における共通利用対象のオブジェクトを公開テキストと呼び,その公式公開識別子を, (1) 所有者識別子 (2) テキスト識別子 という二つのパートに分けて,前パートの所有者識別子に対して登録などによる管理メカニズムを導入して,一意性を高めている。一意性が保証される所有者識別子として,次のものが規定されている。 (1.1) ISO所有者識別子 ISOの規格そのものの規格番号を指定する。 (1.2) 登録済み所有者識別子 国内規格,ISO/IEC 9070[2]などによって一意に指定される識別子であって,+//を前置して表記する。 一意性の保証はないがローカルに便宜的に利用できる未登録所有者識別子も,次のように規定されている。 (1.3) 未登録所有者識別子 組織,個人などが指定した識別子であって,-//を前置して表記する。 テキスト識別子は,次の内容を含む。 (2.1) 公開テキストクラス 公開テキストがどのSGML構成子(DTD, NOTATION, ELEMENTなど)に相当するかを示す。 (2.2) 公開テキスト記述 公開テキストの特定項目に割り当てた一意な名前。 (2.3) 公開テキスト言語 公開テキストの解釈に使う自然言語を示す2文字の識別子。 ISO 8879が規定する表記では,(1)と(2)の間,(2.2)と(2.3)の間に2重斜線//を入れて区切り,公式公開識別子を 所有者識別子//公開テキストクラス_公開テキスト記述//公開テキスト言語 と表記する。ここでは_によってスペースを明示的に示す。所有者識別子のタイプを異にするSGML公式公開識別子の三つの表記例を次に示す。 ISO 8879:1986//ENTITIES Added Latin 1//EN +//ISO/IEC 9070/RA::1054::PHONE//SHORTREF Directory symbols//EN -//IETF//DTD HTML 2.0//EN 2.2 一般化 他とのダブリのない名前である一意識別子は,SGMLシステムだけで必要になるわけではない。通常の社会生活においても,人の名前の一意性が問題になる。人の名前については標準的な命名規定に基づく一意性管理が行われていないため,グループの広がると同性同名というダブリの問題が生じる。そんな場合には,接頭辞を付けて 太った方の山本太郎さん 痩せた方の山本太郎さん などと呼び分けることが行われる。 国際標準化機構(ISO)はこの問題を早くから重視して,広域に及ぶ分散環境において一意に対象を特定するための方策が検討され,幾つかの分野で一意命名法の標準化が実施されてきた。文書の記述と交換を目的とする一連の規格の中では,SGML公式公開識別子以外に,構造化名という命名法がフォント情報交換において用いられている。それらを一般化して公開識別子と呼び,その命名法,特に所有者名についての命名法と登録手続きとをISO/IEC 9070[2] (JIS X 4172[3])が規定している。 ISO/IEC 9070の規定では,一般性と読み易さとを得るために,公開識別子をSGML流の構文生成規則を使って表現する正規文字列表現で表記し,ISO 8879が規定するSGML公式公開識別子と,ISO/IEC 9541-1[4]が用いる構造化名とに等価変換可能な対応関係を示している。 ここでは理解を容易にするため,厳密性は欠くが,通常のことばと数式風表現とを用いてその構成を平易に示そう。 2.3 公開識別子 公開識別子も所有者名とオブジェクト名とから成り,それらを2重斜線//で区切って 公開識別子=所有者名//オブジェクト名 … {1} と表す。これらに使える文字は,ラテンアルファベットの大文字,小文字,数字および ' ( ) + , - . : = ? / である。所有者名もオブジェクト名も,明確に許可する箇所以外で2重斜線//と2重コロン::を含むことはできない。 所有者名には,厳密な一意性を得るために登録によって管理される登録済み所有者名と,一意性の保証はないがローカルに便宜的に利用できる未登録所有者名とがある。 オブジェクト名は,次式に示すように,オブジェクト名要素の1個以上の連続であって,各要素は2重コロン::で区切られる。 オブジェクト名=オブジェクト名要素::オブジェクト名要素 ・・・ … {2} 2.4 所有者名 登録済み所有者名は,登録済み所有者接頭部に続く0個以上の所有者名要素の連続であって,それらは::によって区切られる。 登録済み所有者名=登録済み所有者接頭部::所有者名要素:: 所有者名要素 ・・・ … {3} 登録済み所有者接頭部だけには,集中管理された登録済み要素が含まれなければならないが,その他については所有者が自由に設定でき,所有者名要素を階層的に割当てた命名が推奨される。 未登録所有者名は,UNREGISTEREDという所有者接頭部に続く,1個以上の所有者名要素の連続であって,それらが::によって区切られる。 未登録所有者名=UNREGISTERED::所有者名要素:: 所有者名要素 ・・・ … {4} 登録済み所有者接頭部は,登録主体と呼ぶ登録済み接頭部の発行元によって,次に示す異なる幾つかの構造に分類される。 (1) 登録主体がISOの規格そのものである場合 登録済み所有者接頭部=ISO(またはISO/IEC)_規格番号:出版年 … {5} ここでも_によってスペースを明示的に示す(以降同様)。規格がパートに分かれているときは,9541-1のような通常の規格番号表記を用い,すべての版が対象となれば出版年を省く。 (2) ISOの規格によって登録手続きが規定された登録主体の場合 登録済み所有者接頭部=ISO(またはISO/IEC)_規格番号/RA … {6} ただし,ISBN(国際規格文書番号)またはISO 2375(エスケープシーケンス登録手続き)[5]に基づく場合には,それらが規定する構造に従う。つまり 登録済み所有者接頭部=ISBN_グループ識別子 -出版社識別子(-表題識別子) … {7} 登録済み所有者接頭部=ISO Registration Number_登録済み 文字集合番号 … {8} (3) 登録主体がISOメンバボディ(参加国)の場合 登録済み所有者接頭部=国コード … {9} 国コードは,ISO 3166[6]の2文字アルファベットである。 (4) 登録主体がISOによって認定された組織である場合 登録済み所有者接頭部=IDC,国際コード指示子/組織コード … {10} 国際コード指示子と組織コードとは,ISO 6523[7]に従って割り当てられる。 2.5 SGML公式公開識別子へのマッピング 公開識別子の正規文字列表現は,表1に示すマッピングによってSGML公式公開識別子に等価変換される。 表1 SGML公式公開識別子へのマッピング 公開識別子の正規文字列表現 SGML公式公開識別子 備考 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 最初のオブジェクト名要素 公開テキストクラス 注1 それに続くオブジェクト名要素 残りの要素 注1 全オブジェクト名 公開テキスト記述 注2 注1: 最初のオブジェクト名要素が有効な公開テキストクラスであって,最後のオブジェクト名要素がXX以外の2文字の名前の場合。 注2: 注1の場合でない場合。(公開テキストクラスはNONSGML,公開テキスト言語はXXとなる。) 2.6 構造化名へのマッピング 構造化名は,所有者名とオブジェクト名からなるデータ構造であって,そのどちらにもオプションの記述メッセージを添付できる。二つの構造化名の比較に際しては,所有者名とオブジェクト名だけが考慮される。 公開識別子の所有者名とオブジェクト名は,構造化名の所有者名とオブジェクト名にそれぞれマッピングする。公開識別子の正規文字列表現においては,記述メッセージは表現されず,識別子に続く最初の二つのコメントとして扱われる。 2.7 登録手続き ISO/IEC 9070は,次の登録手続きをも規定している。 (1) 登録番号の割当ての申込みを受け付ける。 (2) 登録済み所有者接頭部が ISO/IEC 9070/RAである所有者名の最初の所有者名要素として用いる登録番号を発行する。 この手続きを実行する登録主体は,1996年のISO/IEC JTC1の郵便投票によって,米国のGCA(Graphic Communication Association)になった[8]。 2.8 ISO/IEC 9070の規定内容の変遷 この第1版は,ISO 9070:1990として,SGMLシステムで使う公開テキストの公式公開所有者識別子の登録手続きだけを規定する規格として,ISOの技術委員会JTC1 SC18の作業グループWG8によって開発され,ISOから出版された。 しかしその後,より広範囲に用いる命名方式が,フォント情報交換などで必要になり,公開テキストの所有者識別子のコンセプトを拡張した構造化名がISO/IEC DIS 9541の中の1項目としてJTC1 SC18/WG8によって規定された。このISO/IEC DIS 9541の投票に際し,その規定内容はフォント情報交換規格だけに限定するようなものではなく,むしろ独立した一意命名法の規格としてもっと広い適用を行うべきであるとの意見が支配的であった。しかし新たな作業課題を提案して規格を作ろうとすると,多大な時間がかかるため,最も関連の深いISO 9070を改訂して拡張し,そこに構造化名の規定を設けて,ISO/IEC 9541からはこの規定を除くことになった。 その改訂の結果,ISO/IEC 9070:1991 が作られ,次に示す内容を規定することになった。 (1) 公開識別子 (2) 構造化名 (3) 登録手続き このうち,登録手続きの規定はわずか8行だけで,この規格の主要な規定対象は公開識別子及び構造化名の構造である。改訂によって大きく内容が変わったにもかかわらず,規格表題だけが以前のまま残った結果となっている。 この問題に対処するため, JTC1 SC18は "Amendment to ISO/IEC 9070:1991 to change title and scope" という題名のプロジェクト(JTC1.18.15.07.03.01)を設立して, SC18/WG8に作業を割り当てた[9]。しかしこの作業は規定内容を修正するものではないため, 同じ専門家達から成る他のSGML関連プロジェクトより優先順位が低く, 進捗はなかった。1996年にはISO/IEC 9070:1991に対する5年毎の規格見直しが行われ, 日本からこの問題が再度指摘されている。 3. 非SGMLデータの記法 3.1 非SGMLデータの交換 SGMLは,データを作成又は利用するアプリケーションから独立した形式で,構造化データを交換可能にする。文字列テキストの処理は,ISO 8879において完全に定義されているが,SGML文書内に埋め込まれた非SGMLデータの処理は,データを適切なプロセサに受け渡すことが示されるにすぎない。 非SGMLデータ構成要素は,特定の記法を使って符号化されているものとして指定される。その記法の命名はユーザ定義可能であり,各記法には,公開識別子やシステム識別子と結合可能な名前が関連付けられる。公開識別子は,システム独立な方法で記法プロセサを特定できるようにし,システム識別子は,作成システムにおいて使用されたプロセサを特定できるようにする。 非SGMLデータを含むSGML文書がシステム間で交換される場合,各記法にアプリケーション中のプロセスをリンクするテーブルを作成する必要がある。公開識別子が使われる場合には,公開識別子を記法プロセサとリンクする"カタログ"と呼ばれる実体において,これらのテーブルを定義できる。記法宣言がシステム識別子を含んでいる場合,受け手のシステムが,送り手のシステムと同じ記法プロセサをもっていなければ,これらのシステム識別子を変更しなければならない。 記法プロセサを特定するために用いる公開識別子がアプリケーションによって共有されれば,カタログを生成する処理が簡素化できる。そこでTR 9573-9[10]は,データ表現の符号がISO,IEC,ITU,SMPTEなどの国際的に合意された規格に適合することを示す,記法名と公開識別子の基本セットを提供する。公開識別子は,ISO 8879とISO/IEC 9070において定義された命名規則に従って定義される。 3.2 TR 9573-9の規定対象 TR 9573-9は,ISO/IEC 9070公開識別子とISO 8879記法宣言の集合を提供することによって,国際規格のフォーマットを使って符号化されたデータの交換を容易にする。それらをいろいろなアプリケーションが参照することによって,国際規格のデータフォーマットを使用していることを特定できる。 このTRが提供する公開識別子は,ISO,ITUおよびCCITTのカタログの中の関連規格に指定されたタイトルに基づく。デファクト標準のデータフォーマットは扱っていないが,その定義を含んでいる出版物のISBNによって,デファクト標準の特定を可能にすることが望まれる。 3.3 命名規則 (1) ISO/IEC 9070公開識別子 ISO/IEC 9070:1991に従って,データフォーマットを特定する方法を示す。ISO/IEC 9070は,オブジェクト名の最大長を100文字に制限しているので,名前として使うISO/IEC 9070公開識別子の中で識別される国際規格を特定するタイトルのいくつかを短縮する必要がある。 (2) SGML記法宣言 ISO 8879とその関連規格に適合している文書型定義における名前の使用を容易にするために,SGML記法定義が個々の記法のために準備されている。SGML記法宣言で各記法に割り当てられた名前は,記法のための共通に使われる短い識別子を示すことを示唆するだけである。 3.4 標準データ記法のISO/IEC 9070公開識別子 TR 9573-9が定義するISO/IEC 9070公開識別子は,次のように分類される。 (1) 文書交換規格 (2) オーディオビジュアル動画圧縮規格 (3) 静止画像圧縮規格 (4) オーディオ交換規格 (5) 通信規格 (6) プログラミング言語 (7) その他の規格 オーディオビジュアル動画圧縮規格のISO/IEC 9070公開識別子の例を次に示す。 ODA Video Content Architecture: ISO/IEC 8613-15:1995//NOTATION Video formatted processable content architecture MPEG-1 video: ISO/IEC 11172-2:1993//NOTATION Coding of moving pictures and audio at up to 1,5 Mbit/s - Part 2: Video MPEG-2 video: ISO/IEC 13818-2:1995//NOTATION Coding of moving pictures and associated audio: Part 2. Video MHEG: ISO/IEC 13522-1:1996//NOTATION Coded representation of multimedia and hypermedia objects: Part 1: MHEG objects MHEG scripts: ISO/IEC 13522-3:1996//NOTATION Coded representation of multimedia and hypermedia objects: Part 3: Script interchange 文献 [1] ISO 8879, Standard Generalised Markup Language (SGML), 1986-10. [2] ISO/IEC 9070, Registration procedures for public text owner identifiers, 1991-04. [3] JIS X 4172, SGML公開テキスト所有者識別子, 1998-01. [4] ISO/IEC 9541-1, Font information interchange - Part 1: Architecture, 1991-09. [5] ISO 2375, Procedure for registration of escape sequences, 1985. [6] ISO 3166, Codes for the representation of names of countries, 1988. [7] ISO 6523, Structures for the identification of organizations, 1984. [8] ISO/IEC JTC1 N4171, Nomination of Registration Authority for ISO/IEC 9070:1991, 1996-07. [9] ISO/IEC JTC1/SC18 N4074, Report of the Secretariat to the 1993-05 JTC1/SC18 Plenary Meeting, 1993-03. [10] PDTR 9573-9, Using SGML Public Identifiers for Specifying Data Notations, 1997-12.