B列

B列

[1]

B 列 (B sequence)
大文字 B の連続した文字列。 短縮参照として割り当てられた文字列の中で、 その文字 B の個数以上の長さを持つ空白列を意味する。 (JIS X 4151‐1992 3. (217))

[6] B 列・空白列に関係する規定:

[2] >>1 連続したとありますが、JIS X 4151 8.6.5 の通り、一個の "B" でも一個以上の空白を示すものとして扱います。

[3] 例えば、SHORTREF SGMLREF "ABC" などとやると、短縮参照区切り子としてマッチするのは "ABC" でなく "A C" ということになるわけです。

[4] >>3 ここで当然の疑問なのですが、区切り子として "ABC" をマッチさせたい場合にはどうすればよいのでしょう。文字参照SHORTREF SGMLREF "ABC" などとしても意味がないわけですが…。

[5] NAMECASE GENERAL YES のときは、 "AbC" と指定すればよいのではないでしょうか。 NO のときは・・・。 (名無しさん)

[7] >>5 ここでの B 文字自体が規格参照の短縮参照区切り子ですので、NAMECASE GENERAL YES の時は、SHORTREF SGMLREF "AbC" = SHORTREF SGMLREF "ABC" と解釈されて、やはり "A C" などがマッチすることになります。(この場合は、小文字の b をマッチさせることも不可能な気が…)

[8] >>5 と書いたのは、 12.4.6.2 の 短縮参照区切り子の引数表記は、 B 列を 1 個含んでいてもよい。 より、 B が B 列であるかの判断は引数表記内の表記で決定されるのかもしれないと考えたからです。 但し、この解釈は >>1 の定義とややずれがあります。 この解釈だと他にもつじつまがあわないところが出てくるかもしれません。

[9] ところで、 12.4.6.2 には短縮参照区切り子は、その引数表記を解釈して得た文字列を具象構文での短縮参照区切り子として割り当てる。 とも書かれています。大文字化が行われるとは書いてありません。 解釈というのは参照の置換のことでしょう。 次の 12.4.7 予約名使用 も同じで、大文字化するとは明記されていません。

12.4.5 命名方法には、NAMECASE: 大文字への代替を行うかどうか指定する。(略) GENERAL はその他の名前、名前字句、数字句及び区切り子に対する指定を行う。 と書いてあります。この規定に従って同じ SGML 宣言内の区切り子の定義まで大文字化してしまってよいのかは、 よくわかりません。なお、 8.3 名前では、名前などが NAMECASE の影響を受けると明記されています。

ということは、区切り子は引数表記内で大文字で定義しないと、 GENERAL YES と指定してある場合、区切り子機能に割り当ててある名前文字は、区切り子の認知に関する限り、その大文字に代替して扱う。 JIS X 4151‐1992 8.6.6 ので、使えないことになります。 HTML 4 の SGML 宣言には "&#x" が出てきますが、 こちらは大文字化されないので、一致することはありません。

やっぱりこの解釈はいけません。

[10] >>9 の 8.6.6 の引用部の区切り子の認知に関する限りから、 B 列であるかの判定では大文字化が行われないのでは、 という仮説も立ててみましたが、 8.6 は認知に関する規定ですし、 無理があるでしょうか。

結局、短縮参照区切り子に B を含めるのは不可能?

[11] B 列は引数表記内に1つだけ書けて、他に制限が無いようなので、 "B,b"NAMECASE GENERAL YES でも合法? (規格のバグだろうけど。) (名無しさん)