共通の構成要素の案内
8.1 置換可能文字データ(式46) 8.2 文字データ(式47~54) 8.3 名前(式55~58) 8.4 実体参照(式59~61) 8.5 文字参照(式62~64) 8.6 区切り子の認知 8.7 マークの抑制 8.8 容量 7.処理命令へ戻る。 SGML規格の最初へ戻る。8.1 置換可能文字データ
置換可能文字データ = (データ文字 | 文字参照 | 一般実体参照 | Ee)* ―(46)その実体を置換可能文字データの中で参照している間,その実体中で置換可能文字 データを終わらせるはずのマークの認知を行わない。
Eeが置換可能文字データの中に現れてもよいのは,それが終わらせる実体への参照 が同じ置換可能文字データの中にある場合に限る。
置換可能文字データの中では,非SGMLデータ実体,PI実体又はSGML部分文書実体 への参照を行ってはならない。CDATA実体又はSDATA実体への参照は,行っても差し 支えない。
備考 置換可能文字データと宣言してある要素又はマーク区間は,同じ実体の中 で開始し終了しなければならない。
8.2 文字データ
文字データ = データ文字* ―(47) データ文字 = SGML文字 ―(48) 文字 = SGML文字 | NONSGML ―(49)
備考 非SGML文字も,文字参照を使えば,SGML実体の文字データとして書く ことができる。
8.2.1 SGML文字
SGML文字 = マーク文字 | DATACHAR ―(50) マーク文字 = 名前文字 | 機能文字 | DELMCHAR ―(51) 名前文字 = 名前開始文字 | Digit | LCNMCHAR | UCNMCHAR ―(52) 名前開始文字 = LC Letter | UC Letter | LCNMSTART | UCNMSTART ―(53)
8.2.2 機能文字
機能文字 = RE | RS | SPACE | SEPCHAR | MSOCHAR | MSICHAR | MSSCHAR | FUNCHAR ―(54)
8.3 名前
名前 = 名前開始文字, 名前文字* ―(55) 数 = Digit+ ―(56) 名前字句 = 名前文字+ ―(57) 数字句 = Digit, 名前文字* ―(58)
名前,名前字句,数又は数字句の文字は,SGML宣言のNAMECASE引数の指定に従って, それぞれ対応する大文字に代替する。
備考 数又は数字句は,数値ではなく,名前又は名前字句と同じく文字列に過ぎ ない。したがって,例えば“01”と“1”とは同値でない。
8.3.1 量的制限
名前,名前字句,数又は数字句の文字数は,量NAMELEN以下でなければならない。8.4 実体参照
実体参照の置換文は,その参照の文脈での構文及び意味についての要件に従っていな ければならない。このとき,SGML部分文書実体又は非SGMLデータ実体への参照は,デー タ文字への参照として扱う。備考 これらの実体は,属性の一般実体名参照としても現れうる。
宣言のない実体への参照は,適用できる省略時値の実体(8.4.4参照)がない限 り誤りとする。
すでに参照中の実体で,まだ終了していない実体への参照は,誤りとする(実体は,再 帰的に参照してはならない。)。
8.4.1 量的制限
開いている実体(SGML文書実体は,参照中でない限り除外する。)の個数は,量 ENTLVLの値以下でなければならない。8.4.2 SGML部分実体の量的制限
開いているSGML部分実体の個数は,SGML宣言のSUBDOC引数で指定した量以下 でなければならない。8.4.3 混乱を招く実体参照
マークに混乱を招く実体参照は,推奨しない。備考 該当する乱用は,ほとんどSGMLの構文が禁止している。次の(1)~(4)の原則 を守ることが望ましい。(原則のうち“ならない”と書いてある事項は,構文 規則によるものを表す。)
(1)タグ,処理指令,宣言,表記又は区切り子でくくったその他の文を開始す る区切り子は,それを終了する区切り子と同じ実体の中になければならな い。
実体は,区切り子でくくった文の中で始まったならばその同じ文の中で 終わらなければならないし,区切り子でくくった文の中で始まっていない のにその文の中で終わることがあってはならない。 (2)文字データ若しくは置換可能文字データと宣言してある要素若しくはマー ク区間の内容又は無視するマーク区間の内容は,同じ実体の中で始まって 終わらなければならない。(他の要素の内容又は他のマーク区間の内容も, そうすることが望ましい。) (3)(2)に該当しない要素又はマーク区間に対しては,その開始タグ及び終了 タグ(又はそのマーク区間開始及びマーク区間終了)が,ともに同じ実体の 中にあるか,同じ実体の中から参照している実体の置換文となっているか であることが望ましい。 (4)マーク宣言の中での参照は,0個以上の連続する完全な引数(その間のps分 離子を含む。)で置換するか,群の中にあって1個以上の連続する完全な字 句(その間のts分離子及び接続子を含む。)で置換するかしなければならな い。
8.4.4 名前指定実体参照
一般実体参照 = ero, 名前群?, 名前, 参照終了 ―(59) 引数実体参照 = pero, 名前群?, 名前, 参照終了 ―(60)
一般実体参照又は引数実体参照は,SGML宣言で“CONCUR YES”,“SIMPLE YES”,“IMPLICIT YES”又は“EXPLICIT YES”と宣言してある場合に限って, その中に名前群を指定することができる。名前群をもつ一般実体参照又は引数実体参 照は,開始タグ又は前書きの中に現れてはならない。
備考 引数実体参照の名前群は,文書の実現値の中のマーク区間開始の中ならば 指定することができる。
一般実体参照又は引数実体参照は,名前群が指定してあって,その中の名前に活性文 書型又は活性連結型の名前が一つもなければ無視する。
8.4.4.1 適用可能な実体宣言
実体の名前が使えるのは,その名前が,適用可能なすべての文書型定義の実体宣言 で宣言してある場合に限る。このとき,一般実体の名前については,それを宣言してい ない文書型定義があれば,そこでは省略時値の実体として宣言してあるものと見なす。実体の名前に適用可能な文書型定義は,その名前が現れた文脈に応じて次の(1) ~(5)のとおりとする。 (1)開始タグでは,すべての文書型定義が適用可能とする。
備考 すなわち,基本文書型定義又はその開始タグの文書型指定で指定してある すべての活性文書型の文書型定義が適用可能となる。
(2)文書の実現値のその他の場所では,その一般実体参照又は引数実体参照の名前群に 指定してある,活性文書型の文書型定義又は活性連結型の原始文書型定義が適用可 能とする。ただし,これらの文書型定義で宣言してない名前又は名前群を指定して ないときの名前に対しては,基本文書型定義が適用可能とする。
備考 基本文書型が定義している実体は,どんな文書型の実現値の中であって も,その文書型が同じ名前の実体を定義していず,しかも一般実体とし ての省略時の実体を定義していない限り,参照することができる。
(3)文書型定義の中では,その文書型定義が適用可能とする。
(4)結果属性指定の中では,その結果文書型定義が適用可能とする。
(5)連結処理定義の中のその他の場所では,その原始文書型定義が適用可能とする。
備考 連結処理定義の構文解析では,その中の実体宣言がその原始文書型定義の 中に現れているものとして扱う。
備考1. 上の規定は,一般実体参照又は引数実体参照に限らず,属性値の一般実体名 又は一般実体名並びに現れた実体名にも適用する。 2. 省略時の実体を宣言していない文書型の実現値の中では,宣言のない一般実 体の名前を使うことで,基本文書型が宣言している省略時の実体を参照する ことができる。 3. 実体宣言でデータ内容記法を指定するには,その記法を実体として同じ文書 型定義の中で宣言しておかなければならない。
8.4.5 参照終了
備考 REで参照が終わる場合,そのREは,データとしては無視する。
refc又はREは,その参照の中に現れうる文字が直後に来るのでなければ省略する ことができるし,参照終了の省略と解釈できる文字が直後に来るのでなければ省略す ることができる。
8.4.6 短縮参照
短縮参照は,現対応表によって一般実体に対応付けてある場合,マークとして扱っ て,その一般実体に置換する。対応付けてない場合,それが区切り子として認知でき れば分離子sとして扱い,そうでなければデータとして扱う。8.4.6.1 同値な参照列
短縮参照は,その参照する実体の名前を含む同値な参照列で置換することによって, 文書から取り除くことができる。このとき,その名前は,現対応表によってその短縮参 照に対応付けている実体の名前とする。同値な参照列は,その短縮参照にRS又はREが現れているかどうかによって,次のとお りとする。
短縮参照 同値な参照列 RSなし,REなし ero, 名前, refc RSあり,REなし RS, ero, 名前, refc REなし,REあり ero, 名前, RE RSあり,REあり RS, ero, 名前, RE
備考1. 同値な参照列は,短縮参照を許す具象構文から短縮参照を許さない具象構文 へと,文書を書き換えるときに使う。 2. 同値な参照列では,連続する記録がくっついてしまうのを防ぐため,また, システムでの長さについての制限をなるべく超えないようにするため,RS及 びREのそれぞれ1個を保存する。これらは,データとして解釈されることが ない。RSはデータとならないし,このREは参照終了のためにあるからである。
8.5 文字参照
文字参照 = cro, (機能名 | 文字番号), 参照終了 ―(62) 機能名 = “RE”|“RS”|“SPACE”| 名前 ―(63) 文字番号 = 数 ―(64)
機能名での名前は,具象構文の追加機能に指定してある名前でなければならない。
文字参照は,その文字が他の手段では簡便に書けない場合に限って使うことが望ま しい。
文字参照を置換した文字は,その文字参照と同じ実体の中にあるものとして扱う。
置換した文字は,直接そこに書いてあったものとして扱う。ただし,数値指定文字参 照(文字番号による文字参照)を置換した文字は,常に,その置換を行った文脈でのデ ータとして扱う。
備考1. システムは,置換文字の内部表現を独自に定めることができる。通常の機 能文字(直接に書かれたもの又は名前指定文字参照を置換したもの)と数値 指定文字参照を置換したものとの区別に注意すること。 2. 文書を他の文書文字集合に変換する場合,数値指定文字参照の中の文字番 号は,変換先の文字集合での文字番号に書き換えなければならない。
8.6 区切り子の認知
区切り子は,この規格で特に断らない限り,区切り子機能に割り当ててある文字列 に対して,その区切り子機能が意味をもつ特定の認知様相にあり,しかも文脈上の制約 を満足していると判断した場合に,認知する。区切り子機能の,機能,認知様相及び認 知に関する文脈上の制約は,表3のとおりとする。一般区切り子については,規格参照 区切り子集合として割り当てる文字列及びそれらの文字の規格参照具象構文の構文参 照文字集合での文字番号も,表3に示す。短縮参照区切 り子については,規格参照区切り子集合として割り当てる文字列を,表4に示す。備考 区切り子又は文脈依存区切り子は,その最初の文字に限って,名前指定文字 参照(名前による文字参照)を使って与えることができる。
区切り子又は文脈依存区切り子(8.6.2参照)は,そのすべての文字が同じ実体の 中になければならない。
8.6.1 認知様相
認知様相は,次のとおりとする。(1)CON 要素又はその中のマーク区間宣言のマーク宣言の中で認知する。
備考 たいていの区切り子は,要素が文字データ又は置換可能文字データである 場合,認知しない。
(2)CXT 認知様相“CON”又は“DSM”での文脈依存区切り子に対する文脈列の一部と して認知する。
(3)DS 宣言部分集合の中で認知する。
(4)DSM 宣言部分集合又はその中のマーク区間宣言のマーク宣言の中で認知する。
(5)GRP 群の中で認知する。
(6)LIT 表記の中で認知する。
(7)MD マーク宣言の中で認知する。
(8)PI 処理指令の中で認知する。
(9)REF 一般実体参照,引数実体参照又は文字参照の中で認知する。
(10)TAG 開始タグ又は終了タグの中で認知する。
備考 認知様相は,入れ子になる。例えば,マーク宣言が始まると,認知様相は“ MD”になる。その宣言の中でgrpoが来ると,認知様相は“GRP”となり, (例えば)mdcを認知しなくなる。続いてgrpcが来ると,認知様相“GRP” は終わり,認知様相は“MD”に戻る。
8.6.2 文脈上の制約
文脈上の制約は,次のとおりとする。 (1)区切り子に割り当ててある文字列の直後に次の(a)~(e)に示す文脈列が続く場合 に,文脈依存区切り子として認知する。
(a)CREF 名前開始文字又はDigit(b)DCL 名前開始文字,com,dso又はmdc
(c)GI 名前開始文字,SGML宣言で“SHORTTAG YES”と指定してある場合のtagc 又はSGML宣言で“CONCUR YES”と指定してある場合のgrpo
(d)MSE mdc
(e)NMS 名前開始文字又はSGML宣言で“CONCUR YES”,“SIMPLE YES”, “IMPLICIT YES”又は“EXPLICIT YES”と指定してある場合のgrpo。 (2)ELEM 認知様相“CON”では,その開始タグがnet可能開始タグとなっている 要素の中で認知する。認知様相“TAG”では,制約がない。
(3)EX 認知様相“MD”では,grpoが直後に続く文脈依存区切り子の最初でだけ認知 する。認知様相“GRP”では,制約がない。
(4)ENT 対応するdsoがあったのと同じ実体の中でだけ認知する。
8.6.3 認知の順序
区切り子(その直後の文脈列も含む。)は,出現の順に重なりなしで認知する。備考 例えば,“abc”及び“bcd”が区切り子であり,文書に“abcde”が現れ たとすると,“abc”を認知して,続けて“d”からの構文解析を行う。 したがって,“bcd”を認知することはない。
この規則は,認知できる区切り子の正否に依存しない。認知する区切り子が,意味 の上で不当なものであることも,対応付けのない短縮参照であることも起こりうる。
備考 例えば,規格参照区切り子集合において,小記号“<”に続く斜線“/”は, その直後に続く共通識別子が宣言してないものであっても開いている要素の 共通識別子でなくても,netとしてではなく,文脈依存区切り子etagoの一 部分として認知する。
8.6.4 同じ文字で始まる区切り子
複数の区切り子が同じ文字で始まる場合は,文書のその位置で最長の区切り子又は 文脈依存区切り子を認知する。備考 例えば,“ab”及び“abc”が区切り子であり,文書に“abcde”が現れた とすると,“abc”を認知して,続けて“d”からの構文解析を行う。したが って,“ab”を認知することはない。
この規則は,認知できる最長の区切り子が正当であるか不当であるかに依存しない。 認知する区切り子が,意味の上で不当なものであることも,対応付けのない短縮参照で あることも起こりうる。
備考 例えば,“ab”及び“abc”が短縮参照であり,文書に“abcde”が現れた とすると,現対応表で“ab”に対応付けがあり“abc”に対応付けがないと しても,“abc”を認知して,“ab”を認知することはない。
8.6.5 空白列を含む短縮参照
短縮参照区切り子の定義の中にB列があれば,内容の中では,それに対応して空白列 を認知する。その空白列の最小の長さは,そのB列の長さとする。備考 “B”は1個以上の空白を意味し,“BB”は2個以上の空白を意味する。3個 以上も同様となる。
文字列が2通り以上の区切り子として認知できるときは,その中で最も長い文字列 に対応する区切り子として認知する。
例 “TAB;”は“B”としてよりもタブ文字として認知するし,“BBB”は“BB” としてよりも3個の空白として認知する。
8.6.5.1 量的制限
短縮参照として認知する空白列の長さは,量BSEQLENを超えることができない。 空白列の実際の長さがこれを超えるときは,その最初のBSEQLEN個だけを短縮参照区切 り子に含め,残りの空白の位置から構文解析を再開する。8.6.6 名前文字
名前文字が区切り子機能に割り当ててある場合,その名前文字は,すでに名前字句 が始まっているのでなければ(名前文字とは見ずに)その区切り子として認知する。 すでに名前字句が始まっているのであれば,名前文字として扱う。SGML宣言のNAMECASE引数で“GENERAL YES"と指定してある場合,区切り子機能] に割り当ててある名前文字は,区切り子の認知に関する限り,その大文字に代替して扱 う。
8.7 マークの抑制
MSOCHARは,MSICHARが現れるか実体の最後に達するかするまで,マークの認知 を抑制する。MSSCHARは,MSSCHARが現れた同じ実体の(もしあれば)直後の文字のマ ークの認知を抑制する。備考 文字データ又はその他の区切り子でくくった文の中のMSOCHARは,それらの 終了の区切り子の認知を抑制することがある。MSSCHARも,その区切り子の前に あれば,その区切り子の認知を抑制することがある。
MSOCHARによってマークの認知が抑制されていない場合に現れるMSICHARは,誤り とはせず,マークの認知に何らの影響を与えない。
MSOCHARによってマークの認知が抑制されている場合に現れるMSOCHAR又はMSSCHAR は,誤りとはせず,マークの認知に影響を与えない。
MSSCHARに続くMSOCHARは,マークの認知に何らの影響を与えない。
8.8 容量
文書の大きさ及び複雑さは,その文書の中の個々の対象について,その容量点の合計 が文書容量集合で許容する容量値以下でなければならない。全容量の名前,個々の容量の名前及びそれらに規格参照容量集合で割り当てる容量 値は,表5のとおりとする。この集合の公開識別子は,つぎのとおりとする。
ISO 8879-1986//CAPACITY Reference//ENそれぞれの種類の対象について合計した容量点は,その種類に対する個々の容量値 以下でなければならない。すべての対象について合計した容量点は,容量値TOTALCAP 以下でなければならない。
すべての容量値は,同時に存在しうる実現値又は同時に処理しうる連結処理の連鎖 の集合で必要となる最大の容量を満足するものでなければならない。
容量点は,SGML文書実体及びそこから参照するSGML部分文書実体についての小計に 加えて,これらから参照する部分文書実体及びSGML文実体の中で,同時に開いているも のの集合のうち最大の容量を必要とする集合についての小計を合計する。
備考 容量点の計算の例として,短縮参照が32個あり,NAMELENが8である具象構 文を考える。文書に次のものがあるとき,全容量は30818以上必要となる。 平均70文字の100個の実体(800+7000)。 200個の要素型があり(1600), その2000個の字句からなる内容モデルには(16000) 25個の例外群及び50個の名前がある(200+400)。 平均20文字の省略時値をもつ50個の属性があり(400+1000), 100個の属性としての名前字句がある(800)。 平均50文字の識別子をもつ5個のデータ内容記法(250+40)。 属性としての50個の共通識別子及び50個の共通識別子参照(400+400)。 5個の短縮参照対応表[5*(8+(8*32))=1320]。 5個ずつの原始要素名をもつ4個の連結集合を宣言する1個の暗黙連結 (168+40)。 共通の構成要素の案内へ戻る。 SGML規格の案内へ戻る。 9.マーク宣言ー一般へ続く。