/
554.txt
512 lines (407 loc) · 26 KB
/
554.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
[2] [[XML]] はその構文の定義に [[EBNF]] を使っています。
その EBNF の構文と意味も XML の仕様書に説明があります。
仕様書:
- [[XML]] 1
-- [CSECTION[6 Notation]]
<IW:XML1:"#sec-notation">
[[#comment]]
* 構文と意味
[3]
- [CODE[[VAR[記号]] ::= [VAR[式]]]]:
右辺で左辺を定義します。記号名は右辺が[[正規言語]]を定義するなら[[大文字]]、
そうでないなら[[小文字]]から始めます。実際の XML 1
で定義されている生成規則の中では、 [CODE[content]]
([[要素]]の[[内容]]) など[[入れ子]]な構造があり得る部分で正規言語になっていません。
XML 1.0 の仕様書では、記号の前に四角括弧で囲んだ式番号がつけられています。
また、右辺の式で他の記号を参照する時にはリンクになっています。
- [CODE[#x[VAR[N]]]]: [[ISO/IEC 10646]] で[[符号位置]]が
16進数で [CODE[[VAR[N]]]] の[[文字]]を表します。
[[先導0]]は無視します。
-*-*-
-[54] [CODE['''['''[VAR[...]]''']''']]
[55]
一般的な[[正規表現]]のように、文字の種類を指定します。
[SAMP['''['''A-Z''']''']] や [SAMP['''['''#x20-#x7E''']''']]
のような範囲 (境界を含みます。) の指定、 [SAMP['''['''ABC''']''']]
のような列挙による指定、両者の混合が使えます。範囲は何個でも含められます。
XML 1.0 の仕様書で使われている範囲では、範囲を先に、
列挙を後にしています。開き括弧の直後に [CODE(char)[-]]
という文字を列挙として指定した使用例もありますし、
[CODE[|]] を使って [CODE['-']] にだけ分けているものもあります。
また、先頭に [CODE[^]] を付けると否定の意味になります。
[56]
この文字の種類の指定は生成規則 [CODE[[[Char]]]]
の中の文字から選んだり除外したりするのだと説明されていますが、
その [CODE[Char]] も四角括弧による指定が使われているので、
定義が再帰的になってしまっています。
[57] なお、
XML 1.0 第3版や XML 1.1 の参考でも文字の範囲の指定に四角括弧が使われていますが、
そこで [CODE[#x]] が欠落していて、正誤表で訂正されています。
[58]
[[XML]] 以外の[[仕様書]]で [[XMLのEBNF]]
を採用している場合に、
この [[XML]] の [CODE[Char]] の範囲における文字の範囲であるという規定が
(無自覚に) 無視されている可能性もあって、要注意です。
- [59] [TIME[2022-06-09T07:20:43.000Z]], [TIME[2022-06-09T08:09:15.163Z]] <https://matrixlogs.bakkot.com/WHATWG/plaintext/2022-06.txt>
[TIME[2022-06-07]]にその件が指摘されている。
[60]
之以前に指摘されたことあるのだろうか? 見たことがない。
[CITE[XML]]は出版から20年以上たってるのにまだまだ十分理解されていないってことか ([[闇が深い]])。
-*-*-
- [CODE["[VAR[...]]"]], [CODE['[VAR[...]]']]:
[[終端]]文字列表記です。引用符で囲まれた部分がそのままです。
XML 1.0 仕様書では中身で使われる引用符でない方を使い、
どちらも使わない時はアポストロフィを採用しているようです。
- [CODE[([VAR[式]])]]: 集団化。
- [CODE[[VAR[A]] [VAR[B]]]]: [VAR[A]] の後に [VAR[B]]。
- [CODE[[VAR[A]] | [VAR[B]]]]: [VAR[A]] または [VAR[B]]。
- [CODE[[VAR[A]] - [VAR[B]]]]: [VAR[A]] に一致するものの [VAR[B]]
には一致しないもの。
- [CODE[[VAR[A]]?]]: 省略可能。
- [CODE[[VAR[A]]*]]: 零個以上。[CODE[|]] よりも優先します。
- [CODE[[VAR[A]]+]]: 一個以上。[CODE[|]] よりも優先します。
- [CODE[/* [VAR[...]] */]]: [[注釈]]。
- [CODE['''[''' wfc: [VAR[...]] ''']''']]: [[整形式制約]]。
実際には第1版から一貫して [CODE['''['''WFC: [VAR[...]]''']''']]
になっています。
- [CODE['''[''' vc: [VAR[...]] ''']''']]: [[妥当性制約]]。
実際には第1版から一貫して [CODE['''['''VC: [VAR[...]]''']''']]
になっています。
なお、一般に大文字・小文字は区別されるようです
[WEAK[(特に規定はありません)]]。
XML 1 の仕様書の構文の規定は[[文書型定義]]における[[引数実体参照]]が表現されていません
(自然言語による規定のみ)。この他構文で表現されない (できない)
制約は整形式制約、妥当性制約、その他の自然言語による規定になっています。
[[#comment]]
* 採用例
[10] [[XML 1.0]] の定義を採用している仕様書:
- [[XML 1.0]] および [[XML 1.1]] <IW:XML1:"">
- [CITE[Associating Style Sheets with XML documents]]
<http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/>
([[XML 1.0]] [[SE]] を参照。)
- [CITE[Authorizing Read Access to XML Content Using the <?access-control?> Processing Instruction 1.0]]
<http://www.w3.org/TR/2005/NOTE-access-control-20050613/#sec-access-control>
([[XML 1.0]] [[TE]] を参照。)
なお、 [[XML]] の [[EBNF]] を採用しているとしている仕様書で
[Q[WFC]] や [Q[VC]] を使っているものは現時点で [[XML]]
本体以外には存在しません。
[[#comment]]
* XML 表現
[4] [[XML]] 自体の仕様書や他の関連仕様の仕様書は元々
[[XMLspec]] で記述されています。 [[XMLspec]] にはこの [[XML]] 式 [[EBNF]]
を記述するための語彙があります。とは言っても、 >>3
のような構造を記述する語彙ではなく、式の右辺と左辺や注釈や他の記号の参照をマークするだけの語彙です。 [[HTML]]
版の仕様書ではこのマークに基づき式番号やリンクなどが生成されます。
詳しくは [[XMLspecのEBNF]] の項を参照してください。
* 変種
[11] '''記号名が小文字から始まる変種''':
[[WebCGM]] は [[EBNF]] を使うとしながら詳細は説明していませんが、
実際には [[XML 1.0]] と同じものが使われているようです。
ただし記号名はすべて小文字から始まっています。
なお、第1版には文字列終端で一部引用符で括られていませんが、
第2版では修正されています。 (詳しくは[[WebCGMのEBNF]]の項を参照してください。)
[[SOAP 1.2]] 第2部は [[XML 1.0]] [[SE]]
の [[EBNF]] を使うとしていますが、記号名がすべて小文字から始まっています。
なお、 SOAP 1.2 第2部では[[間隔]]が含まれる記号名がありますが、
右辺値で使われる時は[[間隔]]は入っていないので、
単なるミスと思われます。
[24] [[SVG Tiny 1.2]] は [[ISO/IEC 14977:1996]] を引用していますが、
「[[XML 1.0]] の部分集合を使っています」などとわけのわからないことを言っています。
;; それなら 14977 引用する必要ないじゃん
[25]
- [[WebCGM]]
-- 第1版: [CITE[WebCGM Intelligent Content]]
<http://www.w3.org/TR/1999/REC-WebCGM-19990121/REC-03-CGM-IC#webcgm_3_1_1>
-- 第2版: [CITE[WebCGM Intelligent Content]]
<http://www.w3.org/TR/2001/REC-WebCGM-20011217/REC-03-CGM-IC.html#webcgm_3_1_1_2>
- [[SOAP 1.2]] 第2部
-- [CSECTION[1.1 Notational Conventions]]
<http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#notcon>
-[CITE[References – SVG Tiny 1.2]] ([TIME[2008-12-20 10:37:51 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/refs.html#ref-EBNF>
[5] '''XML 名前空間の変種''':
[[XML名前空間 1.0]] と [[XML名前空間 1.1]]
は明記していませんが同じ EBNF を使っています。
XML の [Q[WFC]] および [Q[WFC]] の代わりに、 [Q[NSC]]
([[名前空間制約]]) の注記があります。
仕様書:
- [[XML名前空間 1.0]]
-- [CSECTION[1.1 A Note on Notation and Usage]]
<http://www.w3.org/TR/1999/REC-xml-names-19990114/#notation>
- [[XML名前空間 1.1]]
-- [CSECTION[1.1 A Note on Notation and Usage]]
<http://www.w3.org/TR/2004/REC-xml-names11-20040204/#notation>
[1] '''XPath 1.0 の変種''':
[[XPath 1.0]] の仕様書で使われている生成規則の文法は、
XML の EBNF と同じですが、
[[非終端]]の名前は必ず大文字から始まることになっています。
XPath 1.0 の仕様書の構文の規定は[[字句化]]した結果について表されていて、
実際には字句間に[[空白]]が挿入できます。
また、構文によって[[演算子]]の優先度が表現されています。
[[XSLT 1]] も同じ EBNF を使っていると思われますが、明記されていません。
仕様書:
- [[XPath 1.0]]
-- [CSECTION[1 Introduction]]
<http://www.w3.org/TR/xpath#section-Introduction>
- [[XSLT 1]]
-- [CSECTION[5.2 Patterns]]
<IW:XSLT1:"patterns">
[6] '''XML Scheme の変種''':
[[XML Schema]] 第2部では [CODE(XML)[[[base64Binary]]]]
の定義に XML 1.0 第2版の EBNF を使っています。
また、[[正規表現]]の定義にも同じ EBNF
のようなものを使っていますが、こちらはその式が何なのかの説明がありません
[WEAK[(同じく XML 1.0 の EBNF なのでしょうが)]]。
[[Base64]] の方の記号名の最初の文字はすべて大文字で、
実際[[正規言語]]でもありました。正規表現の方の記号名はどうやら正規言語か否かとは関係が無く、
非終端だけで定義されていれば大文字から始まり、
それ以外であれば小文字から始まるようです。
ただし大文字から始まる記号ばかりの選択として定義されている
[CODE[IsCategory]] は大文字から始まっています。
仕様書:
- [[XML Schema]] 第2部 データ型
-- <IW:XMLSchema2:"">
[7] '''XPointer の変種''':
[[XPointer]] 仕様書は XML 1.0 第2版の EBNF を使っているといっていますが、
そのうちの枠組み仕様書は文字の範囲指定で [CODE[Char]] を逸脱していますし、
[[正規言語]]か否かに関わらず記号名はすべて大文字で始まっています。
[CODE(XPointerScheme)[[[xpointer]]()]] scheme も XML の EBNF
を使っているといっていますが、 XPath 1.0 (>>1)
の規則を参照していますし、やはりすべて大文字で始まる記号名です。
仕様書:
- [[XPointer]] 枠組み
-- [CSECTION[1.1 Notation]]
<http://www.w3.org/TR/2003/REC-xptr-framework-20030325/#notation>
- [[XPointer]] [CODE(XPointerScheme)[[[xmlns]]()]]
-- [CSECTION[1 Introduction]]
<http://www.w3.org/TR/2003/REC-xptr-xmlns-20030325/#introduction>
- [[XPointer]] [CODE(XPointerScheme)[[[element]]()]]
-- [CSECTION[1 Introduction]]
<http://www.w3.org/TR/2003/REC-xptr-element-20030325/#introduction>
- [[XPointer]] [CODE(XPointerScheme)[[[xpointer]]()]]
-- [CSECTION[1.2 Notation and Document Conventions]]
<http://www.w3.org/TR/2002/WD-xptr-xpointer-20021219/#b2b1b1ab5>
[9] '''RDF/XML の変種''':
[[RDF]] の1999年版仕様では、 [[RDF/XML]] の構文が XML 1.0
初版の EBNF により定義されていました。とはいっても規則名の大文字・
小文字の区別についての規定は無視しているようですし、
規則の右辺が[[英語]]の説明の直書きで定義されている規則もあります。
直書きではなく丸括弧 [SAMP[([VAR[...]])]] で囲んであるものもあります。
[[RDF/XML]] の構文はこの仕様書で EBNF で定義されてはいますが、
そこでは正確に表現されない [[XML]] や [[XML名前空間]]の仕様における規定も適用されると説明があります。
特に[[名前空間接頭辞]]は自由であることを示すために[[斜体]]で表示されるようにマークされています。
仕様書:
- [[RDF]] (1999年版仕様)
-- [CSECTION[2. Basic RDF]]
<http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/#basic>
[8] '''RDF/N-Triples の変種''':
[[RDF]] 試験事例仕様書で [[N-Triples]] の定義に使われているのは
XML 1.0 第2版の EBNF と説明がありますが、実際には規則名がすべて小文字で始まりますし、
右辺が[[英語]]の説明の直書きで定義されている規則もあります。
仕様書:
- [[RDF]] 試験事例
-- [CSECTION[3.1. Extended Backus-Naur Form (EBNF) Grammar]]
<http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntrip_grammar>
[9] '''SRGS の変種''':
[[SRGS]] は [[ABNF]] 形 [WEAK[(自然言語の文法記述のための書式で、名前の通り [[BNF]] の一種ですが、 XML の EBNF のような計算機言語の構文記述のための書式ではありません。)]]
の定義のために XML 1.0 の EBNF を使っています。
もとが XML 系仕様書のような [[XMLspec]] によるマーク付けされた EBNF
ではないので、 HTML 版仕様書のマーク付け上はかなり違っています。
また、式番号がついていません。整形式制約などの代わりに
[Q[Additional Constraints]] として追加の制約が[[英語]]で記述されています。
仕様書の中で構文が規定されている附属書の前半は字句文法として基本的な字句が定義されています。
これに該当する規則の名前は大文字から始まっています。また、
ここでは規則の定義がそのまま解釈されると説明されています。
一方で残りの構文的文法の部分の規則の名前は小文字から始まっています。
また、字句解釈結果の構文として記述されており、
字句間に挿入できる[[空白]]や[[注釈]]は省略されています。
仕様書:
- [[SRGS]]
-- [CSECTION[Appendix D: Formal Syntax for Augmented BNF Form Grammars]]
<http://www.w3.org/TR/2004/REC-speech-grammar-20040316/#AppD>
[22] '''SMIL1 の変種''':
[[SMIL 1.0]] 仕様書は [[XML 1.0]] の [[EBNF]] の定義を参照していますが、
実際には逸脱があります。
- [[正規言語]]を定義しているにも関わらず[[小文字]]から始まる[[生成規則]]があります
(例えば [CODE@en[[[id-ref]]]])。
- [[注釈]]は [CODE[[[;]]]]~[[改行]]という形で表します。
[CODE[[[;]]]] の前には多くの場合[[空白]]が来ますが、来ないこともあります。
- [[XML]]では明確に規定されていないので違反とは言えませんが、
先頭文字を[[数字]]にしている[[非終端記号]]があります ([CODE[[[2DIGIT]]]])。
- [[省略可能]]な部分を表すために [[ABNF]] 風に
[CODE['''[''']]~[CODE[''']''']] を使っていることがあります
仕様書:
-[[SMIL 1.0]]
-- [CSECTION@en[1 Specification Approach]]
<http://www.w3.org/TR/1998/REC-smil-19980615/#specification>
[12] '''SMIL2 の変種''':
[[SMIL 2.1]]仕様書は[[XML 1.1]]の[[EBNF]]の定義を参照していますが、
実際には多少の逸脱があります。
- 先頭の文字の[[大文字]]・[[小文字]]と[[正規性]]に関する規定は無視されています。
- [[XML]]では明確に規定されていないので違反とは言えませんが、
先頭文字を[[数字]]にしている[[非終端記号]]があります。
- [[XML]]では明確に規定されていないので違反とは言えませんが、
[[非終端記号]]の[[名前]]に[CODE(charname)@en[[[HYPHEN-MINUS]]]]が含まれていることがあります。
[[右辺]]では[[差]][[演算子]]に使われているので、
[[空白]]に囲まれているかの差異があるとは言え、多少の曖昧性が生じます。
- [CODE(charname)@en[[[SEMICOLON]]]]からはじまる、[[注釈]]らしきものが含まれた[[生成規則]]があります。
しかもその[CODE(charname)@en[[[SEMICOLON]]]]の前は[[空白]]なしで[[右辺]]と続いています。
- 他にも、[[空白]]があってもよさそうな[[字句]]間に[[空白]]がなかったり、
[[出現標識]]を[[非終端記号]]につけるために冗長な[[括弧]]が挟まれていたりしています。
[23] [[SMIL 3.0]] ではなんとなおっています!
違反ではない次の3つは残っています。
- [[XML]]では明確に規定されていないので違反とは言えませんが、
先頭文字を[[数字]]にしている[[非終端記号]]があります。
- [[XML]]では明確に規定されていないので違反とは言えませんが、
[[非終端記号]]の[[名前]]に[CODE(charname)@en[[[HYPHEN-MINUS]]]]が含まれていることがあります。
[[右辺]]では[[差]][[演算子]]に使われているので、
[[空白]]に囲まれているかの差異があるとは言え、多少の曖昧性が生じます。
- 他にも、[[空白]]があってもよさそうな[[字句]]間に[[空白]]がなかったり、
[[出現標識]]を[[非終端記号]]につけるために冗長な[[括弧]]が挟まれていたりしています。
仕様書:
- [[SMIL 2.1]]
-- <IW:SMIL2:"smil-timing.html#Timing-BeginValueListSyntax">
- [[SMIL 3.0]]
--<http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-timing.html#Timing-TimingAttributeGrammars>
[13] '''DC-Text の変種''':
[[DC-Text]] の[[構文]]は [[XML 1.0]] の [[EBNF]]
を使って定義されていることになっていますが、
実際には次の差異があります:
- [CODE@en[#x[VAR[h]]-#x[VAR[h]]]] のような表記
(括弧なし) で[[文字]]の範囲を指定します。
- [[生成規則]]の[[名前]]は常に[[小文字]]からはじめます。
仕様書:
- [[DC-Text]]
-- [CITE@en[Architecture Working Group - DCText/2006-05-24]]
<http://dublincore.org/architecturewiki/DCText/2006-05-24#head-fa73b082a5099b3f62942464d5776a7d7b5c10bf>
[14]
'''WS-Topics の変種'''
[[WS-Topics]] 1.3 は、[[式]]の[[構文]]のために [[XML 1.0]] の [[EBNF]]
を採用しています。
形式的に記述できない要件を指定するために、 [CODE@en['''[''' vc: [VAR[...]]''']''']]
という書式を用いています。 ([[XML]] の仕様書では [VAR[...]]
は[[妥当性制約]]の名前ですが、この仕様書では制約そのものの文章です。)
[[終端記号]]の[[引用符]]には[CODE[‘]]と[CODE[’]]が用いられています。
[[終端記号]]の後に [CODE[?]] をつけるとき、
[CODE[(]]と[CODE[)]]でくくってから[CODE[?]]をつけた例と、
くくらずにつけている例が混在しています。
仕様書:
- [[WS-Topics]] 1.3
<http://docs.oasis-open.org/wsn/wsn-ws_topics-1.3-spec-os.pdf>
[15] '''XQuery 1.0 / XPath 2.0 の変種'''
[[XQuery 1.0]] / [[XPath 2.0]] は冒頭で [[XML 1.0]] の [[EBNF]]
を使うといいながら、附属書 A で完全に [[EBNF]]
を定義しています。ほとんど [[XML 1.0]]
と同じことを繰り返しているだけですが、
いくつか違いがあります:
-[16] [[XML 1.0]] とは異なり、[[非終端記号]]の[[名前]]の先頭は常に[[大文字]]とします。
-[17] [[非終端記号]]として外部の仕様で定義されているものを[[参照]]するための、[CODE(example syntax)['''['''[VAR@en[uri]]''']''']]
という構文があります。
--実際には、[[参照]]している仕様書の略称が添えられて、
[CODE(example syntax)['''['''[VAR@en[uri]]''']'''[SUP[[VAR@en[spec]]]]]]
のような形で示されています。
--また、実際には外部の仕様で定義されている[[非終端記号]]への[[参照]]は附属書内にまとめられており、
仕様書本文内の [[EBNF]] [[式]]には登場しません。
-[18] [[構文]]で表せない[[制約]]や注記への[[参照]]として、
[CODE(example syntax)[/* [VAR@en[type]]:[VAR@en[constraint-id]] */]]
のような[[注釈]]があります。
-[19] >>18 の[[注釈]]で明記されている場合を''除き''、
定義された構文の[[字句]]間には[[空白]]や[[注釈]]が暗黙のうちに認められていると規定されています。
-[20] [[形式的意味論]]の仕様書では、
[[式]]の番号を表す括弧内に、
[CODE(example syntax)@en['''['''[VAR[n]] ([VAR[spec]])''']''']]
のように出典・分類を添えています。
-[21] [[形式的意味論]]内の [CODE(ABNF)@en[[[Char]]]]
の定義は[[文字クラス]]らしきものが括弧なしで表われますが、
typo でしょうか。
[61]
[[LBRY]] という[[プロトコル]]の[[仕様書]]はなぜか [[XQuery]] の [[EBNF]]
を使っています。
[REFS[
- [CITE@EN[XQuery 1.0: An XML Query Language]]
-- [CSECTION@en[1 Introduction]]
<http://www.w3.org/TR/2007/REC-xquery-20070123/#id-introduction>
-- [CSECTION@en[A.1 EBNF]]
<http://www.w3.org/TR/2007/REC-xquery-20070123/#id-grammar>
-[CITE@EN[XML Path Language (XPath) 2.0]]
-- [CSECTION@en[1 Introduction]]
<http://www.w3.org/TR/2007/REC-xpath20-20070123/#id-introduction>
-- [CSECTION@en[A.1 EBNF]]
<http://www.w3.org/TR/2007/REC-xpath20-20070123/#id-grammar>
- [CITE@en[XQuery 1.0 and XPath 2.0 Formal Semantics]]
-- [CSECTION@en[2.1.1 Notations from grammar productions]]
<http://www.w3.org/TR/2007/REC-xquery-semantics-20070123/#sec_grammar_notations>
-- [CSECTION@en[A Normalized core and formal grammars]]
<http://www.w3.org/TR/2007/REC-xquery-semantics-20070123/#sec_core>
- [48] [CITE@EN[XQuery 3.0: An XML Query Language]] ([TIME[2014-04-08 08:26:21 +09:00]] 版) <http://www.w3.org/TR/xquery-30/#id-grammar>
- [49] [CITE@EN[XML Path Language (XPath) 3.0]] ([TIME[2014-04-08 07:58:50 +09:00]] 版) <http://www.w3.org/TR/xpath-30/#id-grammar>
]REFS]
** SML の ABNF
[26] [[SML 1.1]] 仕様書は [[RFC 2234のABNF]] を採用していると記述されていますが、実際には [[XMLのEBNF]]
を使っています。
[27] 「変種」といえるかは微妙ですが、[[記号名]]に「[CODE(char)[[[.]]]]」を含めている例があります。
*** 仕様書
- [CITE@en-US[Service Modeling Language, Version 1.1]] ([[W3C]] [[勧告]])
-- <http://www.w3.org/TR/2009/REC-sml-20090512/#SMLXPath1_Scheme>
** XSPARQL の変種
[28] [[XSPARQL]] は [[XQuery]] の構文の規定をベースに変更を加えていますが、
変更を加えた[[非終端記号]]には末尾に「'」をつけて区別しています。
*** 仕様書
- [CITE[XSPARQL Language Specification]] ([TIME[2009-06-12 18:52:37 +09:00]] 版) <http://www.w3.org/Submission/xsparql-language-specification/#id:xsparql-syntax>
** InkML の変種
[37] [[InkML]] の仕様書では [[XML]] の [[EBNF]] を使うとしつつも同じものを独自に説明しています。
また、 [CODE(ABNF)[[[wsp]]]] の自由な挿入を認めています。
[REFS[
- [36] [CITE[Ink Markup Language (InkML)]] ([TIME[2011-09-20 17:16:49 +09:00]] 版) <http://www.w3.org/TR/2011/REC-InkML-20110920/#traceContents>
]REFS]
** Turtle の変種
[42] [[Turtle]]/[[TriG]] の仕様書は [[XML]] の [[EBNF]] を使うとしつつも幾つかの変更を加えています。
[REFS[
- [41] [CITE@en[RDF 1.1 Turtle]] ([TIME[2014-03-07 08:53:19 +09:00]] 版) <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/index.html#h3_sec-grammar-grammar>
- [50] [CITE@en[RDF 1.1 TriG]] ([TIME[2014-02-18 22:07:59 +09:00]] 版) <http://www.w3.org/TR/2014/REC-trig-20140225/#h3_grammar-ebnf>
]REFS]
[FIG[
- [43] [[生成規則]]の番号は整数または整数 + 「s」で、「s」がつくものは [[SPARQL]] を参照しています。
- [44] ' で括ったリテラルは大文字・小文字の区別をしますが、 " で括ったリテラルは区別しません。
- [45] [[字句化]]の際には[[最長一致]]とします。
- [46] [[大文字]]のみの名前は[[字句化]]の単位となる[[終端記号]]として扱われるものまたはそれ以下の単位、
それ以外の名前はそれ以上の単位として使い分けられています。
- [47] [[字句]]間の[[空白]]や[[注釈]]は [[EBNF]] では表現されていません。
]FIG]
* メモ
[29] [CITE@EN[XQuery 1.0 and XPath 2.0 Formal Semantics (Second Edition)]]
( ([TIME[2010-12-17 00:07:45 +09:00]] 版))
<http://www.w3.org/TR/2010/REC-xquery-semantics-20101214/#sec_grammar_notations>
[30] [CITE@EN[XQuery 1.0 and XPath 2.0 Formal Semantics (Second Edition)]]
( ([TIME[2010-12-17 00:07:45 +09:00]] 版))
<http://www.w3.org/TR/2010/REC-xquery-semantics-20101214/#sec_core_grammar>
[31] [CITE@EN[XQuery 1.0: An XML Query Language (Second Edition)]]
( ([TIME[2011-01-05 01:29:08 +09:00]] 版))
<http://www.w3.org/TR/2010/REC-xquery-20101214/#id-introduction>
[32] [CITE@EN[XQuery 1.0: An XML Query Language (Second Edition)]]
( ([TIME[2011-01-05 01:29:08 +09:00]] 版))
<http://www.w3.org/TR/2010/REC-xquery-20101214/#id-grammar>
[33] [CITE@EN[XML Path Language (XPath) 2.0 (Second Edition)]]
( ([TIME[2011-01-05 01:25:51 +09:00]] 版))
<http://www.w3.org/TR/2010/REC-xpath20-20101214/#id-introduction>
[34] [CITE@EN[XML Path Language (XPath) 2.0 (Second Edition)]]
( ([TIME[2011-01-05 01:25:51 +09:00]] 版))
<http://www.w3.org/TR/2010/REC-xpath20-20101214/#id-grammar>
[35] [CITE[Basic Data Types and Interfaces – SVG 1.1 (Second Edition)]]
( ([TIME[2011-08-10 12:35:27 +09:00]] 版))
<http://www.w3.org/TR/2011/REC-SVG11-20110816/types.html#syntax>
[38] [CITE@EN[W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes]]
( ([TIME[2012-04-05 06:34:51 +09:00]] 版))
<http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/#intro-relatedWork>
[39] [CITE@EN[SPARQL 1.1 Query Language]]
( ([TIME[2013-03-21 20:27:53 +09:00]] 版))
<http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#sparqlGrammar>
[40] [CITE@en[PROV-N: The Provenance Notation]]
( ([TIME[2013-04-25 04:01:26 +09:00]] 版))
<http://www.w3.org/TR/2013/REC-prov-n-20130430/#grammar-notation>
[51] [CITE@EN[XQuery 3.1: An XML Query Language]]
([TIME[2017-03-20 09:23:33 +09:00]])
<https://www.w3.org/TR/2017/REC-xquery-31-20170321/#id-grammar>
[52] [CITE@EN[XML Path Language (XPath) 3.1]]
([TIME[2017-03-20 09:18:04 +09:00]])
<https://www.w3.org/TR/2017/REC-xpath-31-20170321/#id-grammar>
[53] [CITE[XFA FormCalc Specification]], [TIME[2021-04-21T03:39:56.000Z]] <https://www.w3.org/1999/05/XFA/xfa-formcalc-19990614#xtocid867381>