[1] [[要素]]が始まる場所の目印となる[[タグ]]が、
[DFN[[RUBYB[開始タグ] [start tag]]]]です。
[4] 開始タグの中には、要素の[[属性]]を記述できます ([[属性指定並び]])。
[22] 仕様書:
- [[JIS X 4151]]‐1992
-- [CITE[6.3.1.1 開始タグの省略]]
-- [CITE[6.4 開始タグ]]
* 開始タグの構文
[15]
- [CODE(ABNF)[[DFN[開始タグ]] := 完全な開始タグ / 空開始タグ / 閉じない開始タグ / [ABBR[net] [ヌル終了タグ]] 可能開始タグ ;; [[JIS X 4151]]‐1992 (14), (15)]]
- [CODE(ABNF)[[DFN[完全な開始タグ]] := [CODE(SGML)[[[stago]]]] [[文書型指定]] [[共通識別子指定]] [[属性指定並び]] *[[s]] [CODE(SGML)[[[tagc]]]] ;; (14), (17)]]
- [CODE(ABNF)[[DFN[閉じない開始タグ]] := [CODE(SGML)[stago]] 文書型指定 共通識別子指定 属性指定並び *s [CODE(regex)[(?= [CODE(SGML)[stago]] / [CODE(SGML)[etago]])]] ;; (17)]]
- [CODE(ABNF)[[DFN[[[空開始タグ]]]] := [CODE(SGML)[stago]] [CODE(SGML)[tagc]] ;; (16)]]
- [CODE(ABNF)[[DFN[[ABBR[net] [ヌル終了タグ]] 可能開始タグ]] := [CODE(SGML)[stago]] 共通識別子指定 属性指定並び *s [CODE(SGML)[[[net]]]] ;; (18)]]
[17] 構文の通り、[[基本文書型]]以外では [ABBR[net] [ヌル終了タグ]]
可能開始タグが利用できないことになっています。
(基本文書型のタグ以外は読み飛ばすという処理がやや面倒になるからでしょうか。)
[18] 閉じない開始タグが使えるのは、直後に
[CODE(SGML)[stago]] 又は [CODE(SGML)[etago]]
と同じ文字列が続く場合のみです。但し、
それらの文字列が実際に開始タグ又は終了タグの開きとして認知されるかは別問題になります。
[16] 開始タグの長さは、属性指定並び中の参照を置換する前の状態で、区切子
[CODE(SGML)[stago]], [CODE(SGML)[tagc]],
[CODE(SGML)[net]] を除き、 [CODE(SGML)[[[TAGLEN]]]]
以下でなければなりません。 (JIS 6.4.2 参照。)
[[#comment]]
* 開始タグの省略
[2] SGML では、条件が揃っていれば曖昧でない限り開始タグを省略できます。例えば、[SAMP(SGML)[電話番号]]要素が必ず[SAMP(SGML)[国番号]]要素から始まると定義されていて、その開始タグが省略可能と宣言されていれば、[SAMP[国番号]]要素の開始タグは省略できます。
[3] [[XML]] では開始タグは省略できませんから、
どんな場合でも必ず書かなければなりません。
[10] 開始タグが省略できるのは、次の条件を満たす時です。
= [4] [タグの省略が許されていること]
[[SGML宣言]]で [CODE(SGML)[[[OMITTAG]] YES]] になっていることが大前提として必要です。
[SRC[JIS X 4151‐1992 6.3.1]]
= [5] [開始タグの省略が許されていること]
当該[[要素型]]の[[要素型宣言]]において、
開始タグの省略が許されている ([CODE(SGML)[o]] である)
ことが必要です。
= [6] [文脈上自明であること]
その要素が[[文脈]]上必須であって、
しかもそこに現れ得る他の要素型の要素がどれも文脈上[[任意選択]]でなければなりません。
[SRC[JIS X 4151‐1992 6.3.1.1]]
-- 例 : [SAMP(SGML)[]],
[SAMP(SGML)[]],
[SAMP(SGML)[]]
において、 [SAMP(SGML)[
段落その1
段落その2
]PRE]
のように書けます [WEAK[(ここでは、終了タグは省略可能であるとしています)]]。
(短縮参照はタグの存在を隠しますが、依然としてタグは存在しています。
その点で >>2- のタグの省略とは異なります。)
[24] ちなみに、実体を宣言する時に
[PRE(SGML)[
]PRE]
と書いても同じ結果が得られます。鍵語 [CODE(SGML)[[[STARTTAG]]]]
は、実体の[[置換文]]の最初に [CODE(SGML)[[[STAGO]]]] を、
最後に [CODE(SGML)[[[TAGC]]]] を補うことを求めています。
[[#comment]]
* stago の直後の s
[19]