JIS X 4151:1992 文書記述言語SGML | ページ 26

                                                                                            119
X 4151-1992
<item>鳴く</item>
</list>
</p>
<p>生存期間は,9年。
</p>
</body>
</article>
さて,例1.の要素型定義から, “p” の中に直接 “p” が出てくることはない。 “p” には,データ文字と
“list” とが並ぶだけである。 “list” は “item” を並べたものであるが,同様に,その “item” の中に直接
“item” が出てくることはない(“list” が出てくることはある)。これらのことを使って,例3.のように,多
くの終了タグを省略してマークの簡略化を図ることができる。
例3. <article>
<title>猫</title>
<body>
<p>次の動作ができる。
<list>
<item>跳ぶ
<item>鳴く
</list>
<p>生存期間は,9年。
</article>
“item” の終了タグは省略しても差し支えない。次の “item” がくることでそれが終わったと分かるから
である(“item” の中に “item” が出てくることはなかったから。)。 “p” の終了タグも同じ理由から省略し
ても差し支えない(“p” の中に “p” が出てくることはなかったから。)。
もちろん,要素の終わりがその要素のすべての下位の要素の終わりを兼ねるとする方式も,十分に論理
的である。このようにして, “article” の終了タグは,最後の “p” も “body” も終わらせている(気付い
た方もいるだろうが,このマークはもっと簡略化することもできる。)。
2.2.2 最小化の指定 マーク最小化は,便利な機構ではあるが,その分,マークの誤りが見つけにくくも
なる。2.2.1の例3.で次の例のようにして “list” の終了タグを省略したとすると, “body” についてと同様
に,その終了タグは “article” の終了タグが代行することになる。
例 <article>
<title>猫</title>
<body>
<p>次の動作ができる。
<list>
<item>跳ぶ
<item>鳴く
<p>生存期間は,9年。
</article>
しかし,これでは著者の意図どおりにはならない。最後の “p” が, “list” の最後の “item” として扱わ

――――― [JIS X 4151 pdf 126] ―――――

120
X 4151-1992
れてしまうからである。
このように誤った解釈を受けてしまうのを防ぐため,タグ省略による最小化を要素に適用するときには,
その要素宣言に引数を二つ追加する。SGML宣言で “OMITTAG YES” と指定するとタグ省略が使えるよ
うになるが,このときは,すべての要素宣言にこの二つの最小化引数を指定しなければならない。
2.2.3 終了タグの省略−直後の開始タグによる場合 要素の終了タグは,その要素の内容に続いて,その
要素には現れ得ない要素の開始タグがくる場合,省略することができる。2.2.1の例で, “p” 又は “item” の
終了タグが省略できたのは,このためであった。そうするには,要素宣言は,例1.のように書いておかな
ければならない。
例1. <!−− 要素 最小化 内容 −−>
<!ELEMENT p −O (#PCDATA|list) * >
<!ELEMENT list −− (item+) >
<!ELEMENT item −O (#PCDATA, (p|list) *)>
例1.の意味は,次の(1)(3)のとおりである。
(1) 見出し“最小化”の位置に,開始タグ及び終了タグの省略の有無を指定する引数を書く。必ず二つと
も指定しなければならない。
(2) “O” は,そのタグの省略を指定する。ここでは, “p” 及び “item” の終了タグが省略できることを指
定している。
(3) “−” は,そのタグを省略しないことを指定する。ここでは,開始タグは,省略しないと指定している。
要素の内容を “EMPTY” と指定したときには,その要素の終了タグを省略しなければならなかったこと
を思い出してほしい。このときは,その要素の開始タグに続くものが,すべて,その親要素の成分となる
からであった。この規則はマーク最小化とは関係のないものであるけれども,その文書ではその要素の終
了タグが出てこないことを思い出させる手だてとして,その要素宣言に “O” と明記しておくのがよい。
例2. <!ELEMENT figref−O EMPTY>
2.2.4 終了タグの省略−直後の終了タグによる場合 内側の要素の終了タグは,その外側の要素の終了タ
グが直後にくる場合,省略することができる。
例 <!−− 要素 最小化 内容 −−>
<!ELEMENT list −− (item+) >
<!ELEMENT item −O (#PCDATA) >
この宣言から,次のように最後の “item” の終了タグは,その直後に “list” の終了タグがくる
ので,省略することができる。
<list>
<item>これは,第1のitemである。</item>
<item>これは,第2のitemである。</item>
<item>これは,第3の,そして最後のitemである。
</list>
2.2.5 開始タグの省略−文脈上必すの場合 要素の開始タグは,その要素が文脈上必すであって,しかも,
そこに現れ得る他の要素がいずれも任意選択のものである場合,省略することができる。
例 <!−− 要素 最小化 内容 −−>
<!ELEMENT list −− (item+) >
<!ELEMENT item O O (#PCDATA) >

――――― [JIS X 4151 pdf 127] ―――――

                                                                                            121
X 4151-1992
この宣言の下では,次のようにマークが簡略化できる。
<list>
これは,第1のitemである。
<item>これは,第2のitemである。
<item>これは,第3の,そして最後のitemである。
</list>
最初の “item” では,それが必すの要素であるので,その開始タグを省略することができる。
それ以後の “item” では,それらが任意選択であるので,開始タグを省略することはできない。
その要素が文脈上必すであったとしても,属性の値を指定しなければならなかったり,その要素に宣言
内容があったりする場合,又は,その要素が空である場合には,その開始タグを省略することはできない。
22.6 短縮タグとの組合せ 短縮タグの最小化とタグ省略の最小化とをともに使う場合,空開始タグは,
空終了タグと同じ扱いを受ける。その共通識別子として,最も近くに開いた要素と同じものが補われるの
である。
例 短縮タグもタグ省略も使う
<!−− 要素 最小化 内容 −−>
<!ELEMENT p −O (#PCDATA|item+) >
<!ELEMENT list −− (item+) >
<!ELEMENT item O O (#PCDATA, (p|list) *)>
<!>
<list>
<item>これは,第1のitemである。
< >これは,第2のitemである。
< >これは,第3の,そして最後のitemである。
</list>
最後にある “</list>” を “</>” とはできないことに注意しよう。 “</>” では,最後の “item” の
終了タグとなってしまって, “list” の終了タグとはならないからである。もちろん, “</list>” を
“</> </>” とすることはできる。
更に簡略化して,次のようにしても同じ結果が得られる。
<list>
これは,第1のitemである。
<>これは,第2のitemである。
<>これは,第3の,そして最後のitemである。
</list>
最初の簡略開始タグ “<>” のところで最も近くに開いている要素は, “list” ではなく, “item”
である。 “item” は,直接に書かれていないけれども,最小化引数 “O” の指定から最初のタグ省
略のところで自動的に補われているからである。
2.2.7 マーク最小化についての配慮 短縮タグ最小化では,利用者は(そして,SGML構文解析系も),
いま文書の構造の中でどこに位置しているかを知り,その属性定義並び宣言がどうなっているかを理解し
ていなければならない。一方,タグ省略最小化では,更に要素宣言がどうなっているかを知っていること
が必要になる。

――――― [JIS X 4151 pdf 128] ―――――

122
X 4151-1992
この違いに十分な配慮をして,どのような最小化ならば利用者が正しく利用できるかの判断を下すのが
よい。タグ省略は,ときとして,SGMLの誤りとならないにもかかわらず,利用者の意図しない結果を生
じてしまうことがあるからである。
2.3 SHORTREF−短縮参照区切り子での実体参照の代用 短縮参照とは,完全に区切り子でくくった実
体参照を1文字又は短い文字列で代用することをいう。これらは,広く使われているタイプライタでの打
けん法をなぞったり,反復構造をもつ要素の入力を単純化したりするのに使うことができる。
2.3.1 タイプライタの打けん−WYSIWYGの一般化 文書処理システムの幾つかは,タイプライタを使
うのと同じような使い方を利用者に提供している。たいていの利用者がタイプライタの訓練を受けている
からである。タイプライタでは,それぞれの制御鍵を叩くと,即座にその書式付けでの効果が得られる。
“復帰”を打けんすると行が改まる,“タブ”を打けんすると横方向に空きができる,などなどである。こ
のタイプライタの特性をなぞった文書処理システムは,ときに “WYSIWYG” (What You See Is What You
Get−“ウィシウィグ”と発音する。“見たまま”システムとでもいうべきか。)と呼ばれる。
これらの制御キーが生み出す“文字”は,特定の処理指令となっている。一般の処理指令と同じで,こ
れらは,その文書の書式付けを一つに固定してしまうし,その指令を理解できる機械の上でしか処理でき
ないものにしてしまう。
しかしながら,SGMLでは,この慣れたタイプライタの打けん法を生かしながら,なお文書の一般性を
失なわないようにすることができる。短縮参照を使うことで,タイプライタの制御キーが生み出す文字を
記述的マークとして解釈してやるのである。
例 <!ENTITY ptag STARTTAG ”P” >
<!SHORTREF wysiwyg ”&#TAB” ptag
”&#RS;&#RE; ptag >
この宣言は,タブ文字を段落 “p” の開始タグに割り当て,改行・復帰の列(これは,空の行,
つまり空の記録に当たる。)も,また, “p” の開始タグに割り当てている。実際にこれらの段落
がどう書式付けされるかは,応用手続きによるものの,直接にマークで指定したのと同じ働きを
もつ。一方,入力装置の上では,これらのキーを打けんするとすぐに横方向に空きが生まれたり
空の行が生まれたりするので,利用者は視覚的な反応を即座に得ることができる。これが
WYSIWYGシステムの重要な点なのである。
マーク宣言を組み合わせることで,タイプライタでの制御文字をマークとして解釈し,しかもその視覚
的な反応を生かした“一般化したWYSIWYG”を作ることができる。もちろん,こうしたWYSIWYGの
下でも,必要とあれば,普通のマークを織り混ぜて使うことができる。このSGMLの能力は,複雑な要素
に対して特に有効に使うことができる。例えば,複数ページにまたがった見出し付きの表がそうである。
タイプライタの制御機能では,便利で一般的な入力方式などは考えることもできない。
2.3.2 タイプライタの打けん−短縮参照対応表の定義 短縮参照を使うと,SGML文書が,意識的にマー
ク付けするまでもなく,普通の文書処理システムでの入力方式で作れるようにできる。このために,規格
参照具象構文では,次に示すように,多くの文字列が短縮参照列(区切り子)として定義してある。これ
らの,“見えない”機能文字又は引用符号は,広く使われているタイプライタでの打けん法を生かす上で特
に有用である。
文字列 説明
&#TAB; 水平タブ
&#RE; 記録終了(通常は,“復帰”)

――――― [JIS X 4151 pdf 129] ―――――

                                                                                            123
X 4151-1992
&#RS; 記録開始(通常は,“改行”)
&#RS;B 先頭の空白(記録開始,1個以上の空白文字又はタブ文字)
&#RS;&#RE; 空の記録(記録開始,記録終了)
&#RS;B;&#RE; 空白の記録(記録開始,1個以上の空白文字又はタブ文字,記録終了)
B&#RE; 末尾の空白(1個以上の空白文字又はタブ文字,記録終了)
&#SPACE; 間隔
BB 2個以上の空白(2個以上の空白文字又はタブ文字)
” 引用符号
それぞれの短縮参照区切り子には,“短縮参照対応表”と呼ぶ表で実体名を対応付けておくことができる。
実体に“対応付け”されていない短縮参照区切り子は,データとして扱われる。対応付けに使う実体は,
普通に,実体宣言で定義しておく。この対応付けを行うのは,“短縮参照対応表宣言”である。
例 <!ENTITY ptag ”<p>”>
<!SHORTREF map1 ”&#RS;&#RE;” ptag>
この “SHORTREF” 宣言は, “map1” という名前の対応表を定義している。その対応表では,
空の記録の実体 “ptap” への対応付けだけを行っている。この対応表が現対応表(本体10.6.3参
照)になったときには,いつでも,空の記録はこの実体への参照に置き換えられる。したがって,
これは,段落の最後の文である。
これは,次の段落の文である。
は,こう書き換わる。
これは,段落の最後の文である。
&ptag;
これは,次の段落の文である。
そして,更にこう書き換わる。
これは,段落の最後の文である。
<p>
これは,次の段落の文である。
空の記録以外の短縮参照列は,それに対応付けがないので,この対応表が現対応表となっても,
データとして扱われる。
2.3.3 タイプライタの打けん−短縮参照対応表の駆動 短縮参照対応表は,普通,その要素型に“短縮参
照使用”宣言で結合してあるものが,現対応表となる。
例1. <!USEMAP map1 chapter>
この宣言は,要素chapterに短縮参照対応表map1を結合する。要素chapterが始まると,こ
のmap1が現対応表となる。
要素に結合した対応表は,その要素が始まったとき,現対応表となる。そして,その要素が開いている
間,結合した対応表をもつ内側の要素の中を除いて,現対応表のままでいる。
要素に短縮参照対応表を結合しておかなくてもよい。結合した対応表がない要素では,その要素が始ま
った時点での現対応表がそのまま現対応表となる。
例2. <!ENTITY ptag ”<p>” −−“段落”の開始タグ−−>
<!ENTITY qtag ”<quote>” −−“引用”の開始タグ−−>
<!ENTITY qendtag ”</quote>”>

――――― [JIS X 4151 pdf 130] ―――――

次のページ PDF 131

JIS X 4151:1992の引用国際規格 ISO 一覧

  • ISO 8879:1986(MOD)
  • ISO 8879:1986/AMENDMENT 1(MOD)

JIS X 4151:1992の国際規格 ICS 分類一覧

JIS X 4151:1992の関連規格と引用規格一覧