/
589.txt
61 lines (44 loc) · 2.86 KB
/
589.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
[7] [[SGML]] の[DFN[[RUBYB[[[出現標識]]]@en[occurrence indicator]]]]は、
[[内容モデル]]において出現の回数を規定するために使う記号です。
[8] [[SGML]] の [[DTD]] だけでなく、 [[XML]] の [[DTD]] でも使うことができます。ただし [[XML]]
の仕様書では「[[出現標識]]」という用語は使われていません。
* 仕様書
[REFS[
- [6] [CITE@EN[Extensible Markup Language (XML) 1.0 (Fifth Edition)]] ([TIME[2013-05-28 20:49:56 +09:00]] 版) <http://www.w3.org/TR/xml/#dt-elemcontent>
]REFS]
* SGML の場合
[REFS[
-[1] [CODE(ABNF)[[DFN[出現標識]] := [CODE(SGML)[[[opt]]]] / [CODE(SGML)[[[plus]]]] / [CODE(SGML)[[[rep]]]] ;; [[JIS X 4151]]‐1992 (132)]]
]REFS]
[2] [DFN[出現標識]]は、
[[内容モデル]]で使用して、
標識の付けられた構成要素
([[要素]]または[[モデル群]]または[[データタグ群]])
が出現できる回数を指定します。
,出現標識 ,[[規格参照区切子]],最低,最大
,なし ,なし,1 ,1
,[CODE(SGML)[opt]] ,[CODE(SGML)[?]],0 ,1
,[CODE(SGML)[plus]],[CODE(SGML)[+]],1 ,∞
,[CODE(SGML)[rep]] ,[CODE(SGML)[*]],0 ,∞
(JIS X 4151‐1992 10.2.4.2 参照。)
[3]
出現標識は[[正規表現]]や [[BNF]] などで同じような意味に使われる修飾子とよく似ています。
数は 0, 1, +∞ しか用意されていませんが、
他の数もべた書きで実現できます。たとえば [SAMP(SGMLe)[e]]
要素を 3〜∞ 個認める時には [SAMP(SGML)[([SAMP(SGMLe)[e]], [SAMP(SGMLe)[e]], [SAMP(SGMLe)[e]]+)]]
などと書けます。
[[#comment]]
* 最外モデル群の出現標識の認知
[2] 内容モデルの一番外側のモデル群についての出現標識
(例: [SAMP(SGML)[<![[ELEMENT]] someElementType - - (someContentModel)''*''>]]) が、
規格に厳密に従うとすると認知できなくなってしまいまして、
規格のミスではないかとの疑いが持たれています。
詳しくは''出現標識の認知 - 2003年12月 - マーク付けノート'' <http://www.satoshii.org/markup/notes/2003/12#date10>
を参照してください。
* 引数実体参照
[4] [[XML]] では[[マーク付け宣言]]中の[[引数]]の部分に現れる[[引数実体参照]]が展開されるときに[[置換文]]の前後に
[CODE(XML)@en[[[S]]]] があるかのように処理されます。
[[出現標識]]の前には [CODE(XML)@en[[[S]]]] を挿入することができません。
ですから、[[出現標識]]だけを[[引数実体]]に入れることはできません。
;; [5] [[実体値]]の[[引数実体参照]]なら暗黙の [CODE(XML)@en[[[S]]]]
の挿入が行われないので、一旦別の[[引数実体]]を使って間接的に[[出現標識]]だけを[[引数実体]]にすることはできます。