日本工業規格         JIS X 4153      文書スタイル意味指定言語(DSSSL) Document Style Semantics and Specification Language(DSSSL) (ISO/IEC 10179:1996) 日本工業規格としてのまえがき この規格は, 1996年に第1版として発行されたISO/IEC 10179, Information technology - Processing Languages - Document Style Semantics and Specification Language(DSSSL)を翻訳し, 技術的内容を変更することなく作成した日本工業規格である。 0. 導入 この規格は,SGML文書のフォーマット処理指定及びSGML文書の変換処理指定を行うために用いる文書スタイル意味指定言語(Document Style Semantics and Specification Language; DSSSL)を規定する。DSSSLは,SGML文書を異なる文書型定義(DTD)に従ってマーク付けしたSGML文書へ変換すること,並びにSGML文書を紙及び電子媒体のためのフォーマット処理することを,第一の目標としている。DSSSLは,DTDに制約を加えたり修正を必要としたりすることなく,任意のSGML文書と共に利用できる。 この規格の主な目的は,フォーマット処理指定及び他の文書処理指定を,形式的で厳密な方法によって記述する言語を提供することにある。DSSSLを利用することによって,多様なフォーマタがそれらの指定を直接実行でき,変換機構を用いても実行できる。 DSSSLスタイル言語は,組み処理・レイアウト処理・ページ割りの際,多様なオブジェクトへの多種のフォーマット処理の適用を,利用者指定可能にする。DSSSL変換言語は,あるSGML応用から他の応用への変換を指定可能にする。 DSSSLは,文書のクラスに適用する指定記述を目的として設計されている。その指定は,特定の文書に適用できると同時に,その応用に適合するすべてのSGML文書に適用できる。 DSSSL指定言語は宣言的であって,通常は完全なプログラム言語と関連する構成子を含んでいる。しかし,完全なプログラム言語を意図して設計されていない。DSSSL指定は,異なる処理系間であいまい(曖昧)さなく構文解析でき,解釈できる。さらに,DSSSL指定は,DSSSL処理系及び翻訳処理系を前置することによって,既存のフォーマット処理系においても利用できる。DSSSLは,バッチフォーマット処理系にも,対話フォーマット処理系にも偏らない。フォーマット処理アルゴリズムに関しては,規格では定義せず,事前に記述もしない。 DSSSLが規定するフォーマット処理の意味は,流し込みオブジェクトと呼ぶ基本構造の集合に基づき,その流し込みオブジェクトに適用するフォーマット処理特質の集合に基づく。DSSSLは,意味構成子を新規に定義する機構及び意味構成子を拡張する機構を提供して,設計者の応用環境への最適化を可能とする。 0.1 背景 DSSSLの背後にある概念は,共通符号化,特に標準一般マーク付け言語SGML(ISO 8879)の発展と関連している。 歴史的には,電子原稿は, 文書を特定の方法でフォーマットするための,制御コード又はマクロを含んでいた(現在の用語では, これを特定符号化と呼ぶ)。それとは異なり,60年代に始まった共通符号化では,記述的タグを用いる。例えば,"3行空き,14ポイント,ボドニ書体"とは記述せず,その意味を表す"見出し"という名のタグを用いて記述する。共通符号化の中心的概念は,文書の情報内容から,その内容のフォーマット又は体裁を分離することにある。70年代初期に,共通符号化の概念は明確になり,SGMLの開発として結実した。 SGMLは,文書のクラスをモデル化する言語であるが,その規格では特定のモデル又は定義済みのタグ集合を規定していない。SGMLを文書のクラスに適用する規則集合をSGML応用と呼び,主にDTD及びその支援文書からなる。 SGMLは文書構造の表現法を標準化するが,フォーマタ及び他の一般目的の変換処理系とのインタフェースを行うための技法を,利用者が独自に開発する余地を残している。DSSSLは,この第二のクラスの応用を支援する。それは,標準化した枠組内において,利用者の指定の交換を可能としながら,フォーマット処理指定及び他の処理指定のための標準化した体系を提供することによって行う。 DSSSL指定は,通常,その指定を適用するSGML文書の外部にある。したがって,一つのSGML文書に対して複数の指定を適用でき,同一データの様々な表現が可能になる。 SGMLを用いることによって,一方では文書の本質的内容とその構造との区別が可能となり,他方では構造に関する処理指定が可能となる。DSSSLを用いることによって,フォーマット及び他の処理指定をSGML文書と共に交換でき,標準化した文書表示指定を提供しながらも,内容とフォーマットとの本質的な区別を保存できる。 1. 適用範囲 この規格は,適合SGML文書の処理指定を目的として設計されている。 DSSSLは,文書の処理指定を目的とし,次に示す二つの言語に関して,その構文・意味・処理モデルを定義する。 a) 変換言語。一つ以上のDTDに従ってマーク付けした適合SGML文書を,他のDTDに従ってマーク付けしたSGML文書へ変換する処理のために用いる。この変換処理の指定は,この規格が完全に規定する。 b) スタイル言語。フォーマット処理特質の集合をデータ部分に適用して結果を得る処理において使用する。したがって,この言語による指定は,応用が必要とする程度に正確だが,行末・段末などのフォーマット処理上の決定は,組み処理及びレイアウト処理に任せている。 DSSSLスタイル言語は,単純な一段組みから複雑な段組みに至る,広い範囲の様々な環境においての使用を意図している。この規格は,フォーマタを標準化せず,組み処理又はその他の処理のアルゴリズムも標準化しない。この規格は,SGML文書にスタイル情報を関連させるための,"スタイル特質"の技法及びその他の技法を,実装から外部化する手段を提供する。 DSSSLは,データ操作の目的で"外部処理"使用の指定を行う機構を提供する。これらの外部処理は,その性質からDSSSLの適用範囲外だが,整列・目次作成などの典型的なデータ管理機能,特化したハイフネーションアルゴリズムなどの典型的な組み処理機能,非SGMLデータのための画像処理又はマルチメディア処理を含んでよい。 フォーマット済み文書又は階層構造情報若しくは共通マークを含まない文書は,この規格の適用範囲外とする。 DSSSL指定は,入力文書を受け取り出力文書を生成する処理系が実行する処理を記述する。DSSSLは,フォーマタの型,フォーマット処理系又は他の変換処理系の種別には依存しない。 DSSSLは,次の六つの構成子を含む。 a) SGML文書内のすべてのマークへのアクセス及び制御を行う機能を提供し,マーク付けされていないデータを操作する文字列処理の機構を提供する構成子。この構成子は,DSSSLの構成要素の標準文書照会言語(SDQL)が提供する。 備考 文字列処理は,表示の変更を示すだけの特殊なマークを入力文書に埋め込まずに済ますために必要となる。行頭又は段落先頭において大きさを変えて行う大文字表示は,望ましい表示効果実現のためには,最初の文字又は最初の文字グループを他から分離することを必要とし,文字列処理が必要な場合の例となっている。 b) 変換処理への入力としての1個以上のSGML文書と,その処理の出力としての0個以上の結果SGML文書との間の関係を指定するための規定。 c) 入力文書型定義によって記述されるSGML文書とフォーマット処理の結果との間の関係を指定するための規定。フォーマット処理は,標準ページ記述言語(JIS X 4154)を出力してもよく,それ以外の固有の形式の文書を出力してもよい。 d) 文書の組版スタイル及びレイアウトを記述するための規定。 e) DSSSL指定及びDSSSL指定の構成要素を表現する,機械処理可能な構文の定義。 f) 新規のDSSSL特質及びそれに関連する値,並びに新規の流し込みオブジェクトクラスを生成する機構。それらは,DSSSL指定のフォーマット処理指定言語の宣言部で宣言する。 この規格は,電子出版及び従来の印刷の両方を含む,様々なSGML応用環境での使用を意図している。 2. 適合性 DSSSLは二つの独立した言語,すなわち変換言語及びスタイル言語を含み,それらによってSGML文書の処理を指定する。DSSSL指定には多くの処理指定を含めることができ,各処理指定はスタイル言語又は変換言語を用いる。スタイル言語を用いる処理指定をスタイル指定と呼び,変換言語を用いる処理指定を変換指定と呼ぶ。 この規格のすべての規定に従うスタイル指定を,適合DSSSLスタイル指定とする。この規格のすべての規定に従う変換指定を,適合DSSSL変換指定とする。 スタイル言語及び変換言語の両方において,いくつかの機能はオプションとする。各オプション機能は,機能名称と関連付けられる。オプション機能を用いる処理指定は,要素型形式featuresを用いて宣言し,関連する機能を利用可能にしなければならない。 適合DSSSL処理系は,スタイル言語・変換言語をそれぞれ単独にサポートするか又はスタイル言語及び変換言語の両方をサポートしなければならない。 適合DSSSL処理系のための支援文書は,処理系が変換言語又はスタイル言語を単独にサポートするか,その両方をサポートするかを明示しなければならない。さらに,処理系がサポートする言語ごとに,どの機能をサポートするかを明示しなければならない。 スタイル言語をサポートする適合DSSSL処理系は,その処理系の支援文書にサポートが記述されている機能だけを利用可能にした任意の適合DSSSLスタイル指定を用いて,任意の適合SGML文書を処理できなければならない。 変換言語をサポートする適合DSSSL処理系は,その処理系の支援文書にサポートが記述されている機能だけを利用可能した任意の適合DSSSL変換指定を用いて,任意の適合SGML文書を処理できなければならない。 3. 引用規格 次の規格に含まれる規定内容は,この規格の文中での引用によって,この規格の規定の一部となる。各規格には,この規格の出版の際に有効であった版を表示してある。規格はすべて改訂の対象であり,この規格に基づく合意の関係者は,次に示す規格の最新版の適用可能性を調べるのがよい。現在有効な国際規格の登録維持は,ISO及びIECの構成員が行っている。 ISO 639:1988, Codes for the representation of names of languages JIS X 0304-1994 国名コード 備考 ISO/IEC 3166:1993,Codes for the representation of names of countriesが,この日本工業規格と同等である。 JIS X 0211-1994 符号化文字集合用制御機能 備考 ISO/IEC 6429:1992,Information technology -- Control functions for coded character setsが, この日本工業規格に一致している。 ISO/IEC 8601:1988,Data elements and interchange formats -- Information exchange -- Representation of dates and times 備考 JIS X 0301 (日付及び時刻の表記)-1992が,この国際規格に対応(元号に関する規定を追加)している。 ISO 8879:1986,Information processing -- Text and office systems -- Standard Generalized Markup Language (SGML) 備考 JIS X 4151 (文書記述言語SGML)-1992が,ISO 8879:1986及びISO 8879/Amendment 1:1988の内容に, 技術的追加及び編集上の変更を加えたものである。 JIS X 4172-1997 SGML公開テキスト所有者識別子 備考 ISO/IEC 9070:1991,Information technology -- SGML support facilities -- Registration procedures for public text owner identifiersが, この日本工業規格に一致している。 JIS X 4161-1993 フォント情報交換 第1部 体系 備考 ISO/IEC 9541-1:1992,Information technology -- Font information interchange -- Part 1: Architectureが, この日本工業規格に一致している。 JIS X 4162-1993 フォント情報交換 第2部 交換様式 備考 ISO/IEC 9541-2:1992,Information technology -- Font information interchange -- Part 2: Interchange Formatが, この日本工業規格に一致している。 ISO/IEC 9945-2:1993,Information technology -- Portable Operating System Interface (POSIX) -- Part 2: Shell and utility JIS X 4154-1997 標準ページ記述言語 (SPDL) 備考 ISO/IEC 10180:1995,Information technology -- Processing languages -- Standard Page Description Language (SPDL)が, この日本工業規格に一致している。 ISO/IEC 10646-1:1993,Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1:Architecture and Basic Multilingual Plane 備考 JIS X 0221 [国際符号化文字集合(UCS) - 第1部 体系及び基本多言語面]-1995が, この国際規格に対応(三つの附属書を付加)している。 JIS X 4155-1994 ハイパメディア及び時間依存情報の構造化言語(HyTime) 備考 ISO/IEC 10744:1992,Information technology -- Hypermedia/Time-based Structuring Language (HyTime)が,この日本工業規格に一致している。 4. 定義 この規格には,ISO 8879の定義及び次の定義を適用する。 4.1 領域(area) 固定の幅及び高さをもつ四角形であって,流し込みオブジェクトをフォーマット処理して生成する。領域を表示媒体に可視化することによって,(図形,グリフ像などの)マークの集合を生成する。 4.2 関連(association) 照会式,変換式及び優先順位式から成る三つ組。優先順位式は,無指定時には0と解釈する。関連は,変換処理を制御するために用いる。 4.3 原子流し込みオブジェクト(atomic flow object) ポートをもたない流し込みオブジェクト。 4.4 補助グローブ(auxiliary grove) 他のグローブ内のノードを解析することによって生成したグローブ。 4.5 特質(characteristic) 流し込みオブジェクトがもつ名前付きパラメタ。 4.6 完全グローブ(complete grove) 特性集合からすべてのクラス及び特性を選択したグローブ設計を用いて構築したグローブ。 4.7 構成要素名(component name) 特性集合内で定義した名前であって,参照具象構文名・応用名・完全名の3形式をもつ。 4.8 生成起点(creation origin) 結果グローブ内のノード位置を指定する際に起点とするノード。 4.9 子孫(descendants) 子ノードの部分木の和集合。 4.10 列挙値(enumerator) データ型enumerationのとり得る値。 4.11 流し込みオブジェクト(flow object) フォーマタが実行する処理の指定。流し込みオブジェクトは,クラスをもつ。クラスは処理の種別を指定し,特質によってさらにその詳細を指定する。 4.12 フォーマット処理系(formatting process) スタイル言語によって,その処理の一部を指定される処理系。 4.13 グローブ(grove) ノード型特性によってグラフ状に連結したノードの集合。グローブは,グローブ設計を用いて構築する。 4.14 グローブ設計(grove plan) 特性集合から選択したクラス及び特性の集合。 4.15 グローブ根(grove root) グローブ内において起点をもたない,一意のノード。 4.16 内在特性(intrinsic property) 特性集合の中で定義されることなく,自動的に特性集合の部分となる特性。 4.17 行進行方向(line-progression-direction) 行内領域に関連する方向。行進行方向は,行内領域の行内進行方向に直交する。 4.18 ノード型特性(nodal property) ノード又はノードリストをその値とする特性。ノード型特性は,その特性集合によって定義され,下位ノード(subnode)・内部参照ノード(irefnode)・非制限参照ノード(urefnode)に分類できる。 4.19 ノード(node) 特性割当ての順序付き集合。ノードは,グローブの要素であって,グローブ構築に用いるグローブ設計において定義するクラスに属する。 4.20 起点(origin) ノードxに関して,xを含むノード集合を下位ノード(subnode)特性として開示するノード。グローブ内のグローブ根以外の各ノードは,一意の起点をもつ。 4.21 起点下位ノード関係(origin-to-subnode relationship) ノードの起点がもつ下位ノード(subnode)特性であって,そのノードを値に含む。 4.22 ポート(port) 流し込みオブジェクト木内の流し込みオブジェクト上の点であって,そこに流し込みオブジェクトの順序付き集合を付加できる。ポートは,流し込みオブジェクトの主要ポートとなるか,名前付きポートとなる。 4.23 基本データ型(primitive data type) 上位型をもたないデータ型。データ型の基本データ型は,そのデータ型が上位型をもたない場合にはデータ型そのものとなり,上位型をもつ場合,そのデータ型の上位型の基本データ型となる。 4.24 特性割当て(property assignment) 特性名への特性値の割当て。 4.25 特性集合(property set) 関連した定義をもつクラス及び特性の集合。 4.26 処理指定(process specification) 処理指定要素内の指定と,その処理指定要素の使用を宣言した他のすべての処理指定要素との組合わせ。 4.27 処理指定要素(process specification element) 要素型形式transformation-specification又は要素型形式style-specificationのインスタンス。 4.28 処理指定部(process specification part) 単一の処理指定要素に基づく処理指定の部分。属性useを用いて参照しているすべての処理指定要素は,別の部とする。処理指定部は,それ以降のすべての処理指定部に優先する。 4.29 (ノードの)兄弟[siblings (of a node)] ノードの,起点下位ノード関係特性の値に出現するグローブ内の他のノード。 4.30 sosofo(流し込みオブジェクト列指定) 流し込みオブジェクト列の(生成に関する)指定。A specification of a sequence of flow objectsの短縮形。 4.31 入力グローブ(source grove) 構文解析の結果,補助グローブを生成するグローブ。 4.32 見開き(spread) ページ列の中において連続する,裏ページ及び表ページの対。 4.33 ストリーム(stream) 流し込みオブジェクトのポートに付加した,流し込みオブジェクトの順序付きリスト。 4.34 部分グローブ(subgrove) ノードとそのノードの下位ノード(subnode)特性の値との和。 4.35 部分木(subtree) ノードとその子の部分木との和。 参考 部分木は,ノード集合とその各要素の子の集合との和をとり,要素の重複を取り除く手続きを,根ノードを一つだけ含む集合に適用して,手続きの入力となる集合の要素数と出力となる要素数とが等しくなるまで,その出力への手続き適用を繰り返して得られるノード集合。 4.36 同期集合(synchronization set) 異なるストリームに属しているが,相対位置を制約された流し込みオブジェクトの集合。 4.37 変換処理系(transformation process) 変換言語を用いて指定する処理系。変換処理は,1個以上のSGML文書を0個以上のSGML文書に変換する。 4.38 木(tree) 親をもたないノードの部分木。 4.39 検証グローブ(verification grove) SGML特性集合のすべてのクラス及び特性を含むグローブ設計を用いて,結果グローブから生成したSGML文書又は副文書を構文解析して構築したグローブ。 4.40 区域(zone) 段を構成する4部分,つまり上部浮動区域(区域top-float)・本文区域(区域body-text)・下部浮動区域(区域bottom-float)・脚注区域(区域footnote)の一つとする。段集合領域コンテナに配置する領域の位置付けは,区域名でラベル付けることによって制御する。 5. 記法及び規約 5.1 構文規則 この規格は,次の例外を除き,ISO 8879と同様の形式構文で記述する。 式の列は,式が示された順で出現することを表す。接続子seq(,)は,用いない。 出現指示子opt(?),出現指示子plus(+)及び出現指示子rep(*)は,式の並びより高い優先順位をもち,並びは接続子or(|)及び接続子(&)より優先する。したがって,次の二つの式は等価となる。 a b | c d* (a b) | (c (d*)) 構文リテラルは,等幅フォントを用いて次のとおりに示す。 syntactic-literal 構文規則では,orグループを囲むために二重角括弧([[]])を用いることができる。この二重角括弧の意味は,andグループと同様とする。しかし,orグループの任意の要素が出現指示子rep(*)又は出現指示子plus(+)をもつ場合,その要素は,そのグループの他の要素と入り交じって指示した回数だけ出現できる。 例えば,次の式は,a,b,c,dだけからなる並びを意味し,任意の数のa,1個以上のb,1個だけのc及び多くとも1個のdを含むことを示す。 [[ a* | b+ | c | d? ]] 5.2 手続き原型 各手続きは,手続き原型によって定義する。 (foo a b) これは,識別子fooが最上位環境において手続きに束縛されており,二つの引数をもつことを示す。引数の名前が型の名前である場合,その引数はその名前が示す型でなければならない。次の引数の命名規則は,型の制限を意味する。 a) obj: 任意のオブジェクト b) list: リスト c) q: 数量 d) x: 実数 e) y: 実数 f) n: 整数 g) k: 正確値非負整数 h) string: 文字列 手続きがキーワード引数を受取る場合,原型は次の形式となる。 (foo a b #!key key1: key2:) これは,さらに二つのキーワード引数を受取る手続きを示している。キーワード引数の名前は,引数の指定に用いるキーワードを示し,型の制限はない。