マーク宣言 ― 連結処理定義の案内(式の引用は,参考11.SGML構文式一覧による。)
11.1 連結型宣言(式154~162) 11.2 連結集合宣言(式163~168.1) 11.3 連結集合使用宣言(式169~170) 11.4 現連結集合 SGML規格の最初へ戻る。11.1 連結型宣言
連結型宣言 = mdo, “LINKTYPE”, ps+, 連結型名, ps+, (単純連結指定 | 暗黙連結指定 | 明示連結指定), (ps+, 外部識別子)?, (ps+, dso, 連結型宣言部分集合, dsc)?, ps*, mdc ―(154) 連結型名 = 名前 ―(155)
連結型宣言に指定する連結型名は,同じ前書きの中での他の連結型名又は文 書型名と同じであってはならない。
連結型宣言に指定する外部識別子が表す実体は,その連結型宣言部分集合の 最後に参照してその一部(又は全部)とする。連結型宣言で有効となる連結型定 義は,その連結型部分集合及びこの外部実体の中の宣言の組合せとする。
備考 連結型部分集合の中の引数実体宣言は,外部実体の構文解析に先立っ て構文解析するので,外部実体の中での実体の宣言に優先する。
連結型宣言の中で,Ee及び引数実体参照は,その連結型宣言部分集合の中にし か現れてはならない。
11.1.1 単純連結指定
単純連結指定 = rni, “SIMPLE”, ps+, rni, “IMPLIED” ―(156)
単純連結指定での見出し語の意味は,次の(1)~(2)のとおりとする。 (1)SIMPLE その連結を単純連結と指定する。 (2)IMPLIES その結果文書型の名前を応用が補充することを指定する。
単純連結が指定できるのは,SGML宣言の連結型機構引数で“SIMPLE YES”と 指定してある場合に限る。
この連結の原始文書型は,基本文書型とする。
11.1.1.1 制限
同時に活性状態になる単純連結処理の個数は,SGML 宣言の連結型機構引数で“SIMPLE”に対して指定した量の値以下でなければな らない。11.1.2 暗黙連結指定
暗黙連結指定 = 原始文書型名, ps+, rni, “IMPLIED” ―(157)
暗黙連結指定での見出し語“IMPLIED”は,その結果文書型の名前を応用が補 充することを指定する。
暗黙連結が指定できるのは,SGML宣言の連結型機構引数で“IMPLICIT YES” と指定してある場合に限る。
その原始文書型名は,基本文書型の名前又は連結処理の連鎖での最後の結果 文書型の名前でなければならない。
11.1.3 明示連結指定
明示連結指定 = 原始文書型名, ps+, 結果文書型名 ―(158) 原始文書型名 = 文書型名 ―(159) 結果文書型名 = 文書型名 ―(160)
明示連結が指定できるのは,SGML宣言の連結型機構引数で“EXPLICIT YES” と指定してある場合に限る。
その原始文書型名は,基本文書型の名前又は連結処理の連鎖での最後の結果 文書型の名前でなければならない。
明示連結指定に指定する文書型名は,その明示連結指定と同じ前書きの中で 指定してあるものでなければならない。
11.1.3.1 制限
最長の連結処理の連鎖の長さは,SGML宣言の連結型機構引数で“EXPLICIT” に対して指定した量の値以下でなければならない。11.1.4 連結型宣言部分集合
連結型宣言部分集合 = (連結属性集合 | 連結集合宣言)*, 識別子連結集合宣言?, (連結属性集合 | 連結集合宣言)* ―(161) 連結属性集合 = (属性定義並び宣言 | 実体集合)* ―(162)
11.1.4.1 実体
連結型宣言部分集合の中の実体宣言は,その連結型が活性状態になったとき, その原始文書型の文書型宣言部分集合の先頭にあるものとして扱う。ただし, すでに活性状態になっている連結型があれば,それらに対する同様の実体宣言 の後ろにあるものとして扱う。連結型宣言では,その連結型宣言部分集合で定義した引数実体ばかりでなく, 基本文書型宣言で定義してある引数実体も参照することができる。
11.1.4.2 連結属性
連結属性集合の中の属性定義並び宣言の結合要素型は,原始文書型の要素型 でなければならない。連結属性の宣言値は,“ID”,“IDREF”,“IDREFS”又は“NOTATION” であってはならない。
“CURRENT”又は“CONREF”は,連結属性に対して指定することができない。
11.1.4.3 単純連結
連結型宣言で単純連結を定義する場合,その連結型宣言部分集合は,1個の 連結属性集合だけからなるものでなければならず,しかもその中に2個以上の属 性定義並び宣言があってはならない。この属性定義並び宣言は,原始文書型の 要素型に属性を結合させるものでなければならず,しかも,その属性すべてが固 定属性でなければならない。11.2 連結集合宣言
連結集合宣言 = mdo, “LINK”, ps+, 連結集合名, (ps+, 連結規則)+, ps*, mdc ―(163) 連結規則 = 原始要素指定 | 明示連結規則 ―(163.1) 連結集合名 = 名前 | (rni, “INITIAL”) ―(164)
連結集合名での見出し語“INITIAL”は,その文書実現値が始まった時点での 現連結集合を表す。
連結集合宣言の連結集合名として指定した名前は,その同じ連結型宣言の中 の他の連結集合宣言に指定してはならない。
連結型宣言部分集合の中のただ一つの連結集合宣言に,連結集合名としての “INITIAL”を指定しなければならない。
連結集合宣言の連結規則は,その連結型宣言が暗黙連結を指定する場合,原 始要素指定としなければならない。明示連結を指定する場合は,明示連結規則 としなければならない。
11.2.1 原始要素指定
原始要素指定 = 結合要素型, (ps+, rni, “USELINK”, ps+, (連結集合名 | (rni, "EMPTY")))?, (ps+, rni, “POSTLINK”, ps+, 連結集合指定)?, 連結属性指定? ―(165) 連結属性指定 = ps+, dso
, 属性指定並び, s*, dsc ―(166)原始要素指定での見出し語の意味は,次の(1)~(2)のとおり とする。
(1)USELINK そこに指定する連結集合は,その結合要素型の要 素が現要素となったとき,現連結集合となる。備考 “#USELINK”の指定は,その連結集合宣言を開始タグの直後に 書いたのと同様の働きをする。いいかえれば,その指定は,要素の部 分要素に作用する。要素が空のときには,効果がない。
(2)POSTLINK そこに指定する連結集合は,その結合要素型の要素が現要素 でなくなったとき,現連結集合となる。
備考 “#POSTLINK”の指定は,その連結集合宣言を終了タグの直後(その 要素が空で,しかも終了タグがない場合には,その開始タグの直後) に書いたのと同様の働きをする。その指定は,同じ親要素の中での 次の要素に作用する。
原始要素指定に指定する連結集合名は,それと同じ連結型宣言の中の連結集 合宣言で定義したものでなければならない。
原始要素指定に指定する結合要素型は,同じ連結集合宣言の中の他の連結規 則に指定してはならない。ただし,その連結規則すべてに連結属性指定を指定 する場合は,この限りでない。
備考 応用は,その要素型の実現値について,どの連結規則を適用すればよい かを,それらの連結属性から決定できなければならない。例えば, “usage”属性を定義して,原始要素の属性値や処理の状態を検査する 式が書けるようにし,その式の値が真になっている連結規則を適用する ことにしてもよい。
連結属性指定の属性指定並びの正否は,その連結型宣言部分集合の中の原始 要素型に結合した属性定義並びによって決まる。この属性定義並びは,その連 結属性指定の前に宣言してなければならない。属性指定が結合したすべての要 素型は,同じ定義によって結合していなければならない。
連結属性指定は,この属性指定並びが空である場合,省略しなければならない。
11.2.2 明示連結規則
明示連結規則 = (原始要素指定, ps+, 結果要素指定) | (原始要素指定, ps+, rni, “IMPLIED”) | (rni, “IMPLIED”, ps+, 結果要素指定) ―(166.1) 結果要素指定 = 共通識別子, 結果属性指定? ―(167) 結果属性指定 = ps+, dso, 属性指定並び, s*, dsc ―(168)
明示連結規則での見出し語“IMPLIED”は,その結果要素又は原始要素を応用 が補充することを指定する。
“#IMPLIED”は,一つの連結集合の中で,結果要素に1度しか指定することが できない。
結果属性指定の属性指定並びの正否は,その結果文書型の宣言の中で,結果 要素に結合した属性定義並びによって決まる。
結果属性指定は,この属性指定並びが空の場合,省略しなければならない。
11.2.3 識別子連結集合宣言
識別子連結集合宣言 = mdo, “IDLINK”, (ps+, 名前, ps+, 連結規則)+, ps*, mdc ―(168.1)
識別子連結集合宣言に指定する名前は,原始要素を表す一意的な識別子であ ることが望ましい。この原始要素に対して,現連結集合とは無関係に,その組と して指定した連結規則を適用する。その連結規則の結合要素型は,この原始要 素の要素型でなければならない。
11.3 連結集合使用宣言
連結集合使用宣言 = mdo, “USELINK”, ps+, 連結集合指定, ps+, 連結型名, ps*, mdc ―(169) 連結集合指定 = 連結集合名 | (rni, “EMPTY”) | (rni, “RESTORE”) ―(170)
連結集合指定での見出し語は,次の(1)~(2)のとおりとする。
(1)EMPTY 指定する連結集合は,空連結集合とする。
(2)RESTORE 指定する連結集合は,現要素に結合した連結集合とする。 結合したものがないときは,現要素が始まった時点での現連結集合とする。連結集合使用宣言で指定した連結集合は,現要素に対する現連結集合となる。
備考 文書の改定作業の手助けとするため,連結集合使用宣言で活性状態に した連結集合がもはや必要でなくなったら,その位置に次のような宣言 を書いておくことが望ましい。
<!USELINK #RESTORE linktype>連結集合使用宣言に指定する連結型名は,その指定する連結集合を定義して いる連結型宣言の連結型名でなければならない。
連結集合使用宣言は,その連結型名が活性連結型でなければ,無視する。
11.4 現連結集合
連結集合は,それに結合した要素が現要素となっている間,現連結集合となる。 現連結集合は,その要素の実現値に対して次の(1)~(2)の場合に切り替わる。
(1)その部分要素が現要素となった場合 その間だけ切り替わる。 (2)その実現値の中に連結集合使用宣言が現れた場合 以後,その宣言に従った ものに切り替わる。要素に結合した連結集合が無い場合,その要素の実現値に対する現連結集合は, その要素が始まった時点での現連結集合とする。その要素が文書要素である場合, その現連結集合は,初期の連結集合とする。
11.マーク宣言 ー 連結処理定義の最初へ戻る。 SGML規格の最初へ戻る。 12.SGML宣言へ続く。