99
X 4151-1992
属性定義並び宣言には,それぞれの属性についての属性定義を書き並べる。属性定義は,次の(1)(3)
からなる。
(1) その属性の名前。
(2) その属性に認める値(宣言値)。
(3) その値を文書の中で指定しなくて,しかもタグ省略のマーク最小化機構(参考4参照)が有効なとき
に想定する省略時値。
この属性並びには,ここで述べなかった様々な引数も書くことができる。さて,長々しい宣言を読むと
きには,そこに解説的な注釈があると助けになるものである。マーク宣言の中では,注釈をどの引数の間
にも書くことができるし,注釈だけからできた宣言さえ書くことが認められている。
注釈は,その前後を“注釈 (comment)”区切り子comでくくっておく。comは,通常は2個の負符号 “−
−” である。注釈は,例1.のように,引数についての見出しとして利用することもできる。
例1. <!−− 要素 名前 値 省略時値 −−>
属性定義並びには,それぞれの属性について,幾つかの引数を繰り返して書くことになる。宣言は,一
般に記録の境界をまたがっていてよいから,望むならこれらを表の形にして書くこともできる。例えば,
参考3図2の要素 “memo” に対する宣言を表の形に書くと,例2.のようになる。
例2. <!−− 要素 内容 −−>
<!ELEMENT memo (from, to, subject, body, sig, cc・)>
<!−− 要素 名前 値 省略時値 −−>
<!ATTLIST memo status (final|draft) “final”
security CDATA #REQUIRED
version NUMBER “01”
sender NAME #IMPLIED>
上の属性定義でのそれぞれの属性の意味は,次の(4)(7)のとおりである。
(4) tatus 属性 “status” は,値として “final” か “draft” かのいずれかをもたなければならない。参考3
図2の例では,この属性を指定してないから,SGML構文解析系は省略時値 “final” が指定されたも
のとして扱う。
(5) ecurity 属性 “security” は,値として文字列をとる。省略時値に書いた見出し語 “REQUIRED” は,
この属性を必ず文書中で指定しなければならないことを示している。
(6) ersion 属性 “version” は,値として数字の列をとる。省略時値は,列 “01” である。
(7) ender 属性 “sender” は,値としてSGMLでの構文的に正しい名前をとる。見出し語 “IMPLIED” は,
この属性が任意選択であり,文書中で指定しなかった場合には応用が補充してくれることを示してい
る(参考3図2の例では, “LTG” と指定してある。)。
値が名前文字ばかりでできているとき,省略時値にその値を指定する場合には,その区切り子を省略し
てもよい(省略時値引数での見出し語には,rniを付けて利用者の定義した名前と区別するからである。)。
例2.でいうと,省略時値の “final” と “01” とは,区切り子なしで書くことができる。
注釈の話が出てきたので,空のマーク宣言 “<!>” も注釈になることを紹介しておく。この注釈は,文書
の部分部分を区切るのに使うことができる。空の記録(行)を区切りに使うと“短縮参照”(参考4参照)
と間違って構文解析される可能性があるのに対して, “<!>”にはその心配がないからである。
――――― [JIS X 4151 pdf 106] ―――――
100
X 4151-1992
5.2.2 複雑な属性の値 属性の値が,論理的に幾つもの成分からできていることもある。例えば,計算機
が表示する画像出力に緑及び黒の二つの色があったとしよう。属性はタグに1度しか指定できないから,
例1.のようにしたのでは誤りとなってしまう。
例1. 誤例 <display color=black color=green>
そこで,属性 “color” の値を “NAMES” と宣言することにすると,例2.のように,この二つの色を属性
の1個の値として指定することができる。
例2. <!ELEMENT display (P+)>
<!ATTLIST display color NAMES ”white black”>
<!>
<display color= ”black green”>
見出し語 “NAMES” は,“SGMLでの名前を,間隔,記録終了,記録開始,水平タブ文字などで区切っ
て並べたもの”を意味する。このほかに宣言値の見出し語として使えるものを,次の(1)(3)に示しておく。
(1) UMBERS 数の並び
(2) MTOKENS 名前字句の並び(名前字句は,名前とほぼ同じであるが,名前開始文字で始まってい
なくてもよい。例えば, ”-abc 123 12.3 123a .123”)
(3) UTOKENS 数字句の並び(数字句は,数字で始まる名前字句。例えば, ”123 12.3 123a 0.123”。 ”.123
456” は,数字句の並びではない。)
それぞれ字句1個だけを値としたいのであれば,単数形の見出し語 “NMTOKEN” 及び “NUTOKEN” を
使えばよい(宣言値引数に書く見出し語には,rniを付ける必要がない。そこに利用者が定義した名前が
書けないからである。)。
例2.は,例3.のように二つの属性を定義してやることで複雑な値を使わなくても済むことに注意しよう。
例3. <!ELEMENT display (p+)>
<!ATTLIST display bgcolor NAME ”white” −−背景色−−
fgcolor NAME ”black” −−文字色−−>
<!>
<display bgcolor=black fgcolor=green>
5.2.3 名前字句群 属性の値として使う名前及び名前字句を限定することもできる。それには,それらを
成分とする群を与える。これを名前字句群という。
例1. <!−− 要素 内容 −−>
<!ELEMENT memo (from, to, subject, body, sig, cc・)>
<!−− 要素 名前 値 省略時値 −−>
<!ATTLIST memo status “final”>
(final|draft)
例1.の宣言の下では,次のどちらかだけが指定できる。そのほかの値を属性 “status” に指定することは
できない。
<memo status= “final”>
<memo status= “draft”>
一つの要素型の中で,名前字句は属性定義並びに1度だけ現れることができる。名前の場合と同じで,
名前字句の大文字・小文字の違いは無視される。
――――― [JIS X 4151 pdf 107] ―――――
101
X 4151-1992
5.2.4 変化する省略時値 省略時値に “CURRENT” を指定すると,その省略時値には,自動的に最も近
くに指定のあった値が選ばれる。これを使うと,値の指定を省くことで,前に現れた同じ型の要素から属
性の値を“引き継ぐ”ことができる(“CURRENT” 属性をもつタグを書き加えたり取り除いたりするとき
は,このことに気をつけること。)。
6. 実体 実体参照及び引数実体参照の例は,これまでにも幾つも見てきた。実体は,プログラム言語で
の変数に非常に似てはいるが,あくまで文書の一部分であり,その対比でいえば定数である。参照を利用
して,次のような技法を使うことができる。
(1) 長い文や文字列を短い名前で参照する。けん盤で楽には入力できないものを参照する。
(2) システムでの別のファイルに蓄えてある文書を取り込む。
(3) システムの間での文書交換をしやすくする。システム特有の対象(直接にけん盤から入力できない文
字など)が実体参照の形にしておくことで,受け手のシステムではそこだけを書き直せばいいことに
なるからである。
(4) 処理指令を実際に実行した結果(例えば,その日の日付)を,文書の中に取り込む。
6.1 実体参照の形式 名前による実体参照には,二つの種類がある。一般実体参照は,要素の内容や区
切り子で囲った属性の値の中で自由に使うことができる。引数実体参照は,マーク宣言の区切り子のlit
又はlitaで囲った引数の中に使うことができる。引数実体参照は,完全な引数又は群の字句を分離子で区
切って並べたものへの参照にも使うことができる。
一般実体参照は,“実体参照の開始”eroと“参照の終了”refcとでくくる。通常,eroはアンパーサン
ド “&” であり,refcはセミコロン “;” である。
例1. は,&site;で印刷し
実体参照の直後に間隔又は記録終了が来るときは,refoを省略することができる。
例2. 文書は,&site
で印刷したもの
引数実体参照も同様であるが,先頭の区切り子を“引数実体参照の開始”pero(通常は,パーセント記
号 “%”)とする(なお,区切り子の文字列について“通常は”というのは,“規格参照区切り子集合では”
の意味である。)。
このように一般実体参照と引数実体参照とを区別しているのは,文書を実際に作る人が実体名を使って
マーク付けする際に,その文書型の文書型定義を与えた支援部隊の人が同じ名前をほかの目的に使ってい
たかどうかを気にせずに済むようにするためである。
実体参照に使う区切り子と,その規格参照具象構文での文字列とを,次にまとめておく。
文字列 名前 働き
& ERO 実体参照の開始
% PERO 引数実体参照の開始
, REFC 参照の終了
6.2 実体の宣言 実体を実際に参照するには,その前に,その実体を実体宣言で宣言しておかなければ
ならない。この宣言の主な引数は,実体名及び実体文の二つである。例1.の実体宣言を見てみよう。
例1. <!ENTITY JSA”(財)日本規格協会”>
例1.の宣言は,文書の中に現れる名前 “JSA” を使った参照(つまり, “&JSA;”)が,そこに文“(財)
日本規格協会”を書いてあるのと同値であることをいっている。この実体文は,(属性の値のときと同じで)
――――― [JIS X 4151 pdf 108] ―――――
102
X 4151-1992
区切り子のlit又はlitaでくくる。これを“引数表記”という。
実体であればいつでも記録開始で始まり記録終了で終わる,というわけではない。実体の前後に記録の
境界が欲しい場合には,その参照の前後に記録の境界を置いておくことが望ましい。
例2. <p> 特に,&JSA;の貢献が大きい。 </p>
は,次のように書き換わる。
<p> 特に,(財)日本規格協会の貢献が大きい。 </p>
一方,
<p> 賛助団体(予定) :
&JSA;
その他
</p>
は,次のように書き換わる。
<p> 賛助団体(予定) :
(財)日本規格協会
その他
</p>
しかしながら,実体参照を閉じるのにrefcでなく記録終了を使った場合は,その直後の記録がその実体
の後ろに追い込まれる。
例3. &JSA
理事長
は,次のように書き換わる。
(財)日本規格協会理事長
6.2.1 処理指令 処理指令も実体として蓄えることができる。処理指令は,その実体を宣言するときには
実行されず,それを参照したときに実行される。
例 <!ENTITY page PI “newpage; space 3”>
見出し語 “PI” は,その実体が参照されたとき処理指令として解釈することを指定する。
6.2.2 実体参照を含んだ実体 引数実体は,その実体名の前に第1の引数としてperoを書いて宣言する。
例1. <!ENTITY % bullet ”o”>
引数実体は,引数表記の中で参照することもできる。
例2. <!ENTITY prefix ”%bullet; ”>
この参照 “%bullet;” は, “prefix” の宣言のときにその実体に書き換わる。実体 “prefix” を
参照するたびに書き換わるのではない。
6.2.3 外部の実体 文書処理システムには,幾つもの記憶形態(ファイル,ライブラリ要素,マクロ定義,
文字列を表す記号など)があるのが普通である。こうしたシステム依存の事柄は,それらを実体として参
照する形として,文書の本体から切り離すことができる。
例1. <!ENTITY part2 SYSTEM>
実体名だけでは,そのシステムで外部の対象を特定できないのであれば,付加的な情報(これを“シス
テム識別子”という。)を指定することもできる。
例2. <!ENTITY part2 SYSTEM ”user. sectionX3. textfile”>
システム識別子は,引数表記と同様の区切り子でくくる。システム識別子の性質や書き方は,SGMLシ
――――― [JIS X 4151 pdf 109] ―――――
103
X 4151-1992
ステムの実体管理系と呼ぶ構成単位に依存する。実体管理系の仕事は,実体参照をそのシステムでの番地
付けに変換することである。
6.2.4 公開識別子 個々の文書又はシステムを超えて明らかになっている外部の実体を,“公開の実体”
という。公開の実体には,国際規格,国家規格又は業界規格によって,又はそれを共用しようとする利用
者の団体によって,“公開識別子”が与えられる。
公開の実体の利用例の一つに,文書型定義の共有がある。実体宣言の組を“実体集合”として共有して,
数学,化学といった専門領域での記号又は用語を定めておくのにも使うことができる。
公開の実体も,ほかの外部の実体と同様にして,宣言することができるが,見出し語 “SYSTEM” に代
えて“公開識別子指定”を書いておく。
例 <!ENTITY % ISOgrk1
PUBLIC ”ISO 8879-1986//ENTITIES Greek Letters//EN”>
公開識別子指定には,見出し語 “PUBLIC” 及び表記と同じ区切り子でくくった公開識別子を書き,更に,
システム識別子を書き添えてもよい(上の例では,システム識別子が省略してある。)。公開識別子に使え
るのは,英字,数字,間隔及び記録の区切りと,若干の特殊文字である。これらを,“最小データ”文字と
いう。
7. 文字 文書に使うそれぞれの文字は,その文書の文字集合の中で特定の位置を占める。この位置の個
数は,その符号集合の大きさによって決まる。つまり,文字を表現するビット列の長さによって決まる。
例えば,ISO 646の国際参照版 (ISO 646 IRV) は,7ビット集合である。7ビットでは,128個のビット
組合せが可能で,それぞれに0127の番号をふる。8ビット集合では,256個のビット組合せが可能であ
る。この位置の番号を,文字番号という。文字番号は,その文字を表現するビット組合せを2進数として
読んだときの値になっている。
いわゆる“符号拡張法”を使うこともでき,一つのビット組合せで幾つかの文字を表現することができ
る。これらについては,参考6の3.を参照のこと。
7.1 文字の種別 文字集合はいろいろあって,それぞれの国の文字又は科学記号,様々なけん盤装置,
表示装置,処理システムなどに対処している。それぞれの文字集合は,そのビット組合せを数字,英字な
どといったいろいろな文字の種別に対応させる。SGML文書には,マーク文字(名前文字,区切り子及び
機能文字)と最小データ文字とが表現できるなら,どんな文字集合でも使うことができる。
SGMLでは,文字を次のとおりの種別に分類する。
(1) 名前文字 名前に使う文字。数字09と英字AZの大文字・小文字は,いつでも名前文字とする。
規格参照具象構文では,更にピリオド及び負符号も名前文字に加えている。それぞれの名前文字(数
字及び英大文字を除く。)にはその大文字があり,名前はその大文字に代替した上で扱われる(規格参
照具象構文では,実体名をこの対象外としている。)。名前文字の幾つかは名前開始文字といい,名前
はこの名前開始文字で始めなければならない。大文字・小文字の英字はいつでも名前開始文字であり,
そのほかの名前開始文字は具象構文が定める。
(2) 区切り子集合 様々な文脈において,マークをデータと区別するために使う文字。
(3) 非SGML文字 SGML実体には現れないと文書文字集合で定めている文字。その一部は,具象構文が
指定した候補の中から選ばれる。例えば,規格参照具象構文では,制御文字(機能文字として使う少
数の文字を除く。)を非SGML文字としている。非SGML文字は,外部の実体,文書を保存したり転
送したりする際のファイル,データ流などといった“容器”の中の非SGMLデータ(例えば,画像)
――――― [JIS X 4151 pdf 110] ―――――
次のページ PDF 111
JIS X 4151:1992の引用国際規格 ISO 一覧
- ISO 8879:1986(MOD)
- ISO 8879:1986/AMENDMENT 1(MOD)
JIS X 4151:1992の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.240 : 情報技術(IT)の応用 > 35.240.30 : 情報,ドキュメンテーション及び出版業務におけるITの応用
JIS X 4151:1992の関連規格と引用規格一覧
- 規格番号
- 規格名称
- JISX0202:1998
- 情報技術―文字符号の構造及び拡張法
- JISX0208:1997
- 7ビット及び8ビットの2バイト情報交換用符号化漢字集合