Copyright (C) 1995 Nihon Unisys,Ltd. Copyright (C) 1998 NCALS

9. マーク宣言 ― 一般


マーク宣言 ― 一般の案内

9.1 宣言の部品(式65~78) 9.2 公的公開識別子(式79~90) 9.3 注釈宣言(式91~92) 9.4 マーク区間宣言(式93~100) 9.5 実体宣言(式101~109) 8.共通の構成要素へ戻る。 SGML規格の案内へ戻る。 備考 宣言名及び見出し語は,生成規則の中では参照予約名を使って表すが,変 形具象構文ではSGML宣言の予約名利用引数によって再定義することができ る。

9.1 宣言の部品

9.1.1 引数分離子ps

  ps = s | Ee | 引数実体参照 | 注釈 ―(65)

 引数実体参照は,引数が現れうるどんな位置にも書くことができる。その参照する 実体は,その参照が現れたpsの直後に続ける0個以上の完全な引数の列からなっていな ければならない。その列の前後又は間にpsがあってもよい。更に,その実体は,同じ宣 言の中で終わっていなければならない。

 引数分離子としてのEeは,それが終わらせる実体への参照が同じ宣言の中のpsとし て現れている場合に限って使うことができる。

 psは,文脈上必すであっても,区切り子又は他のpsに隣接していて省略してもあいま いさを生じないのであれば,省略してもよい。

 psは,それを省略するとあいまいさを生じる場合,sで始めなければならない。

9.1.2 引数表記

  引数表記 = (lit, 置換可能引数データ, lit) |          (lita, 置換可能引数データ, lita) ―(66)   置換可能引数データ =     (データ文字 | 文字参照 | 引数実体参照 | Ee)* ―(67)  引数表記は,宣言の処理に際して,その中の参照を置換した上で引数(又は字句)と して解釈する。  引数表記の中では,引数実体参照及び文字参照を除いて,その終わりのlit又は lita以外のマークを認知しない。置換した文の中でも同様とする。 備考 引数表記が実体宣言の実体文引数として現れた場合,その実体を参照 したときには,その中のマーク文字を認知することがある。

 置換可能引数データの中にEeが現れてもよいのは,そのEeが終わらせる実体への参 照が,同じ置換可能引数データの中にある場合に限る。

9.1.2.1 量的宣言

 解釈を終えた引数表記の長さは,量LITLENの値以下でなければならない(その 現れた文脈に他の制限がある場合を除く)。

9.1.3 群

  名前字句群 = grpo, ts*, 名前字句,          (ts*, 接続子, ts*, 名前字句)*, ts*, grpc ―(68)   名前群 = grpo, ts*, 名前,        (ts*, 接続子, ts*, 名前)*, ts*, grpc ―(69)   ts = s | Ee | 引数実体参照 ―(70)

 名前字句群又は名前群の中の接続子は,すべて同じであることが望ましい。

備考 どの接続子を使うかは任意であるから,実体の中で定義した同じ群を, モデル群(それぞれの接続子に意味がある。)として参照することも, 名前群(それぞれの接続子に意味はない。)として参照することもで きる。

 同じ字句が,一つの名前字句群又は名前群に2度以上現れてはならない。

 引数実体参照は,群の中で字句が現れうるどんな位置にも使うことができる。 その参照する実体は,その参照が現れたtsに続ける同じ群の(同じ入れ子の水準 での)0個以上の完全な字句の列からなっていなければならない。この列の前後 又は間にはpsがあってもよいし,その間に接続子があってもよい。その参照す る実体は,同じ群の中で終わっていなければならない。

 tsとしてEeが現れてもよいのは,次の条件を満たす場合に限る。

(1)そのtsが字句の直後に現れる(接続子,grpo又はdtgoの直後ではない。)。
(2)そのEeが終わらせる実体への参照が,同じ群の中にある(同じ入れ子の 水準にある。)。

9.1.3.1 量的制限

 一つの群の中の字句の個数は,量GRPCNTの値以下でなければならない。

9.1.4 宣言分離子ds

  ds = s | Ee | 引数実体参照 |      注釈宣言 | 処理指令 | マーク区間宣言 ―(71)

 dsとしての引数実体参照は,0個以上の完全なマーク宣言とdsとからなる実体を 参照しなければならない。

 dsとしてのEeは,それが終わらせる実体への参照が同じ引数の中のdsとして現 れている場合に限って使うことができる。

9.1.5 結合要素型

  結合要素型 = 共通識別子 | 名前群 ―(72)

 名前群の中の名前は,共通識別子でなければならない。

 共通識別子は,文書型宣言で要素型として指定してあってもなくても,正当な 結合要素型となることができる。

備考 この規定によって,より制限のある文書型の下でも,公開の定義に よって多くの共通識別子が使えるようになる。

9.1.6 外部識別子

  外部識別子 = (“SYSTEM”| (“PUBLIC”, ps+, 公開識別子)),          (ps+, システム識別子)? ―(73)   公開識別子 = 最小表記 ―(74)   システム識別子 = (lit, システムデータ, lit) |            (lita, システムデータ, lita) ―(75)

 システム識別子は,公開識別子及びその他の情報からシステムが補充できるの であれば,省略してもよい。

 SGML宣言で“FORMAL YES”と指定してある場合,公開識別子は,公的公開 識別子として解釈する。したがって,公的公開識別子としての誤りが生じうる。

備考 この場合でも,公開識別子は,最小表記であることに変わりがない ので,最小表記に対する要件を満たしていなければならない。

9.1.6.1 量的制限

 システム識別子の長さは,その区切り子の分を除いて,量LITLENの値以下で なければならない。

9.1.6.2 容量

 容量値ENTCHCAPに対して合計する要素文の文字数において,外部識別子に 対しては,そのシステム識別子(直接に指定してあるものであれ,補充したもの であれ)の文字数(区切り子の分を除く。)だけを合計する。

9.1.7 最小表記

  最小表記 = (lit, 最小データ, lit) |         (lita, 最小データ, lita) ―(76)   最小データ = 最小データ文字* ―(77)   最小データ文字 = RS | RE | SPACE | LC Letter |            UC Letter | Digit | Special ―(78)

 最小表記は,その最小データの中のRSを無視し,2個以上連続するRE及びSPACE (先頭及び末尾に位置する場合を除く。)を1個のSPACEに置換した上で解釈する。

9.1.7.1 量的制限

 解釈を終えた最小表記の長さは,その区切り子を除いて,(具象構文の定義にか かわらず)規格参照量集合の中の量LITLENの値以下でなければならない。

9.2 公的公開識別子

  公的公開識別子 = 所有者識別子, “//”, 文識別子 ―(79)

 公的公開識別子は,生成規則で明記してあるものを除いて,二重の斜線“//”を 含んではならない。

備考 公開識別子は,最小表記であるので,その中のRSを無視し,2個以上 連続するRE及びSPACEを1個のSPACEに置換した上で,公的公開識別 子として解釈する。 したがって,最小表記に対する量的制限(9.1.7.1参照)に従わなけ ればならない。

9.2.1 所有者識別子

  所有者識別子 = ISO所有者識別子 |           登録所有者識別子 | 未登録所有者識別子   ―(80)

備考 所有者識別子を選定するに際しては,ISO 3166などの規格が役に 立つ。

9.2.1.1 ISO所有者識別子

  ISO所有者識別子 = 最小データ ―(81)

 ISO所有者識別子の一般形は,その公開識別子がISO出版物を識別する場合又は ISO出版物の中でその公開識別子を割り当てている場合に限って使う。一般形は, ISO出版物番号(英語,フランス語などの言語識別接尾辞は取り除く。)とする。

備考 例えば,この規格の対応国際規格の中の公開文は,翻訳の有無にか かわらず,そのISO所有者識別子を“ISO 8879-1986(E)”とは せず“ISO 8879-1986”とする。翻訳の別は,文識別子の公開 文言語として指定する。

 ISO所有者識別子の特殊形は,その公開文がISOの登録済み文字集合であって, 公開文種別が“CHARSET”となる場合に限って使う。特殊形は,“ISO Regist ration Number ”に続けてその文字集合の登録番号を書く。

9.2.1.2 登録所有者識別子

  登録所有者識別子 = “+//”, 最小データ   ―(82)

備考 登録所有者識別子は,国家規格の名称,工業規格の名称又はISO 9070 に従って割り当てた一意的な識別子とする。

9.2.1.3 未登録所有者識別子

  未登録所有者識別子 = “-//”, 最小データ ―(83)

備考 未登録所有者識別子は,業界組織,利用者団体,個人などが選定した (おそらくは一意的な)商標とする。

9.2.2 文識別子

  文識別子 = 公開文種別, SPACE, 入手不能標識,         公開文記述, “//”, (公開文言語 | 公開文指示シーケンス),         (“//”, 公開文表示版)? ―(84)   入手不能標識 = “-//” ―(85)

 入手不能標識は,その公開文が入手不能のときに指定し,入手可能なときには 指定しない。

 公開文種別が“CHARSET”のときには公開文指示シーケンスを指定し,それ以 外のときには公開文言語を指定する。

 公的公開文識別子の文識別子は,その所有者識別子が同じものどうしの中では 異なっていなければならない。

備考 所有者識別子も公開文記述も同じ二つの公開文は,少なくとも,その公 開文種別及び公開文表示版が異なっていなければならない。

9.2.2.1 公開文種別

  公開文種別 = 名前                     ―(86)

 公開文種別の名前は,その公開文がどのSGML構成要素を収めたものかを示す 次の(1)~(13)のいずれかでなければならない。

(1)CAPACITY 容量集合
(2)CHARSET 文字集合
(3)DOCUMENT SGML文書
(4)DTD 文書型宣言部分集合
(5)ELEMENT 要素集合
(6)ENTITIES 実体集合
(7)LPD 連結型宣言部分集合
(8)NONSGML 非SGMLデータ実体
(9)NOTATION 記法
(10)SHORTREF 短縮参照集合
(11)SUBDOC SGML部分文書実体
(12)SYNTAX 具象構文
(13)TEXT SGML文実体

 公開文種別の名前は,すべて大文字で指定しなければならない。

備考 システムは,公開文をその交換形式からシステムデータ及び具象構文を使っ た参照可能な実体へと変換するに際して,適切な変換方式を選ぶのにその公 開文種別を利用することができる。

9.2.2.2 公開文記述

  公開文記述 = ISO文記述 | 最小データ ―(87)   ISO文記述 = 最小データ ―(87.1)

 ISO文記述は,その公開識別子がISO出版物を識別している場合に限って使う。 ISO文記述は,その文書名の最後の要素(部番号があるときは,それを除く。)と する。

備考 ISO 8632/4(Information processing systems - Computer graphics - Metafile for the storage and transfer of picture description information - Part 4: Clear text coding)に対するISO文記述は,“Clear text coding”とする。

9.2.2.3 公開文言語

  公開文言語 = 名前 ―(88)

 公開文言語は,2個の英大文字でその名前を指定しなければならない。その名前は, ISO 639による言語符号(公開文に使う主な自然言語を識別する。)とする。

備考1. 公開文種別によっては,その自然言語が何であるかが公開文の有用性に 影響を与える。   2. 自然言語の別によって影響を受けやすいものには,データ,定義した名 前,注釈などがある。   3. システムは,公開文言語を使って,自動言語翻訳を試みることもできる。

9.2.2.4 公開文指示シーケンス

  公開文指示シーケンス = 最小データ ―(89)

 公開文指示シーケンスの最小データは,その公開識別子で参照する文字集合の, JIS X 0202による指示エスケープシーケンスを外部表現したものでなければな らない。この指示エスケープシーケンスは,公開文がISOの登録済み文字集合であ れば,その登録してある指示エスケープシーケンスでなければならない。

例1. ISO 646のIRV(ISOの登録済み文字集合002)の図形文字に対するG0 指示エスケープシーケンスの外部表現は,“ESC 2/8 4/0”となる。 未登録の128文字の文字集合に対する指示エスケープシーケンスの外部 表現は,“ESC 2/5 4/0”となる。 例2. JIS X 0208の図形文字に対するG1指示エスケープシーケンスの外部 表現は,“ESC 2/6 4/0 ESC 2/4 2/9 4/2”となる。 備考 登録済み文字集合に対する公開文指示シーケンスは,その公開文を一意 的に識別する。そうでない文字集合に対する公開文指示シーケンスは, その所有者識別子ごとに,一意的な公開文を識別する。

9.2.2.5 公開文表示版

  公開文表示版 = 最小データ ―(90)

 公開文表示版は,その公開文種別が“CAPACITY”,“CHARSET”,“NOTA TION”又は“SYNTAX”である場合,指定してはならない。公開文が装置に依存 するものである場合,公開文表示版を指定して,対象とする装置又は符号化方式 を明記しなければならない。

 システムは,公開文を扱うのに際して,公開文表示版の指定があって当然なの にもかかわらず指定がない場合には,使用する表示装置に最もふさわしい装置 依存の版を選定して補充しなければならない。ただし,該当するものがないと きは,この限りでない。

備考 この仕組みは,文字実体の集合に対して特に有用である。

9.3 注釈宣言

  注釈宣言 = mdo, (注釈, (s | 注釈)*)?, mdc ―(91)   注釈 = com, SGML文字*, com ―(92)

 注釈の中では,その終わりとなる区切り子comを除いて,マークの認知を行わない。

9.4 マーク区間宣言

  マーク区間宣言 = マーク区間開始, 状態見出し語指定, dso,            マーク区間, マーク区間終了 ―(93)   マーク区間開始 = mdo, dso ―(94)   マーク区間終了 = msc, mdc ―(95)   マーク区間 = SGML文字* ―(96)

 マーク区間宣言のマーク区間は,そのマーク区間宣言が位置する文脈での構 文上及び意味上の要件に従わなければならない。

 マーク区間宣言の外側に現れたマーク宣言終了は,誤りとする。

9.4.1 量的制限

 開いているマーク区間宣言の個数は,量TAGLVLの値以下でなければならない。

9.4.2 状態見出し語指定

  状態見出し語指定 = (ps+, (状態見出し語 | “TEMP”))*, ps* ―(97)   状態見出し語 = “CDATA”|“IGNORE”|        “INCLUDE”|“RCDATA” ―(100)

 それぞれの状態見出し語の意味は,次の(1)~(5)のとおりとする。 (1)IGNORE そのマーク区間に文字がないものとして扱う。ただし,入れ子に なったマーク区間宣言の終わりを見いだすために,マーク区間開始及びマーク 区間終了の認知だけは行う。 (2)INCLUDE そのマーク区間を無視しない。 (3)CDATA そのマーク区間を文字データとして扱う。 (4)RCDATA そのマーク区間を置換可能文字データとして扱う。 (5)TEMP そのマーク区間を,いずれ取り除くことになるかも知れない一時的な 部分として扱う。

 指定に重複がある場合,次の順位で有効な状態見出し語を定める(左のものほ ど優先する)。 IGNORE,CDATA,RCDATA,INCLUDE 指定がない場合,有効な状態見出し語はINCLUDEとする。

 マーク区間宣言は,その有効な状態がCDTAT又はRCDATAである場合,最初に現 れたマーク区間終了によって終わる。 備考 CDATA又はRCDATAのマーク区間では,それが1個の実体の中にある 限り,マークの認知を行わないので,その中に入れ子になったマーク区 間宣言が現れることはない。

 有効な状態見出し語がIGNOREであるマーク区間には,Eeが現れてはならない。 備考 CDATA,RCDATA又はIGNOREのマーク区間の走査では,マーク区間 終了を除いてすべてのマークを無視する。この結果,処理指令,属性値, 表記,文字データの要素及び注釈も認知せずに,その中身を走査する。 したがって,その中身にマーク区間と見なせるものがあれば,誤りが生 じうる。この問題を回避するには,多くの場合,これらを直接に書かず に,参照として書くようにすればよい。

9.5 実体宣言

  実体宣言 = mdo, “ENTITY”, ps+,        実体名, ps+, 実体文, ps*, mdc         ―(101)  実体宣言は,その実体名がすでに宣言してあるものであれば無視し,誤りとは しない。 備考 この規定によって,文書型宣言部分集合の実体宣言は,その後に現れ る公開文書型定義に同じ実体に対する宣言があったとしても,それに 優先することになる。

9.5.1 実体名

  実体名   = 一般実体名 | 引数実体名          ―(102)   一般実体名 = 名前 | (rni, “DEFAULT”)         ―(103)   引数実体名 = pero, ps+, 名前             ―(104)

 一般実体名での“DEFAULT”は,その実体が省略時の実体であることを示す。

 引数実体名のperoは,この文脈では文脈上の制約なしで区切り子として認知 する。

 引数実体名のpsは,区切り子の直後に位置しているにもかかわらず,文脈上必 すとする。

9.5.1.1 量的制限

 引数実体名の名前の長さは,量NAMELENの値から区切り子peroの文字数を減 じた値以下でなければならない。

9.5.1.2 容量

 省略時の実体及びその名前での参照が省略時の実体を表すことになった異なる 実体名は,容量“ENTCAP”に対する容量点として計算する。  省略時の実体は,容量“ENTCHCAP”に対する容量点を計算する。

9.5.2 実体文

  実体文 = 引数表記 | データ文 | くくった文 | 外部実体指定 ―(105)

 実体文として引数表記を指定した場合,その実体への参照は,その引数表記を 解釈して得た文で置換する。

 この置換する文の最後には,Eeを補って扱う。直接にEeを書いてはならない。   備考 文の中に引数表記を含む実体は,その表記の解釈の時に決定する実体 参照を含んでいた場合でも一つの実体と見なす。その場合には,Eeは 明示しない。

9.5.3 データ文

 実体文としてデータ文を指定した場合,その実体への参照は,それがどんな場 所にあっても,そのデータ文を文字データとして扱って置換する。その文字デー タは,データ文の引数表記の中の参照を普通に解釈して得た文とする。

  データ文 = (“CDATA”|“SDATA”|“PI”),          ps+, 引数表記               ―(106)

 データ文での見出し語の意味は,次の(1)~(3)のとおりとする。 (1)CDATA その引数表記を解釈した結果は,文字データ実体として置換する 文となる。 (2)SDATA その引数表記を解釈した結果は,特定文字データ実体として置換 する文となる。 (3)PI その引数表記を解釈した結果は,処理指令実体として置換する文とな る。  CDATA及びSDATAは,その実体名が一般実体名である場合に限って指定するこ とができる。

 データを返す処理指令は,その実体をSDATAと指定して定義しなければならな い。

備考1. CDATA又はSDATAと指定した実体は,データ文字が現れうる文脈で    参照しなければならない。PIと指定した実体は,処理指令が現れう る文脈で参照しなければならない。   2. SDATAの指定は,通常,応用,システム又は出力装置ごとに定義し直 すような実体に対して行う。例えば,処理指令や,構文参照文字集 合にない文字などを含んだデータに対して指定する。   3. データ内容記法は,明示的な内容参照の対象となる内部データ実体 には適用しない。記法を指定したければ,その実体を外部データ実体 として宣言しなければならない。

9.5.4 くくった文

  くくった文 = (“STARTTAG”|“ENDTAG”|“MS”|“MD”),          ps+, 引数表記               ―(107)

 くくった文は,その実体への参照を置換する際に,その引数表記を解釈して得 た文を,その見出し語の指定に従って次のとおりに区切り子でくくって置換す る。

(1)STARTTAG stagotagcとでくくる。 (2)ENDTAG etagotagcとでくくる。 (3)MS マーク区間開始とマーク区間終了とでくくる。 (4)MD mdomdcとでくくる。

備考 くくった文は,区切り子でくくった単なる文に過ぎない。それが,正 当な開始タグなどになっている必要はない。したがって,その実体 としての正否は,その参照が現れた文脈によって決まる。

9.5.4.1 量的制限

 くくった文の引数表記を解釈した結果の長さは,量LITLENの値からくくる 区切り子の長さを減じた値以下でなければならない。

9.5.5 外部実体指定

  外部実体指定 = 外部識別子, (ps+, 実体型)?        ―(108)   実体型 = “SUBDOC”|        ((“CDATA”|“NDATA”|“SDATA”),        ps+, 記法名, データ属性指定?)        ―(109)

 実体型での見出し語の意味は,次の(1)~(4)のとおりとする。 (1)SUBDOC その実体は,SGML部分文書実体とする。
(2)CDATA その実体は,文字データ実体とする。
(3)NDATA その実体は,非SGMLデータ実体とする。
(4)SDATA その実体は,特定文字データ実体とする。

 実体型が指定できるのは,その実体名が共通識別子で指定してある場合に限る。

 実体型の指定を省略した場合,その実体は,SGML文書実体とする。

 記法名は,この実体宣言と同一の文書型定義の中で宣言してなければならな い。その宣言は,この実体宣言に先立っていなくても差し支えないが,その実体 への参照よりも前になければならない。

 それぞれのデータ実体は,他のデータ実体及びSGML部分文書実体への参照を 含んでいてもよい。その参照するデータ実体及び更に入れ子にして参照するデ ータ実体は,この実体宣言と同一の文書型定義の中で宣言することが望ましい。

 SUBDOCが指定できるのは,SGML宣言で“SUBDOC YES”と指定してある場合に 限る。

9.マーク宣言 ー 一般の案内へ戻る。 SGML規格の案内へ戻る。 10.マーク宣言 ー 文書型定義へ続く。