html-validator 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,557 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" >
3
+ <!-- ##################################################################### -->
4
+ <define name="html.elem">
5
+ <a:documentation> RELAX NG Schema for HTML 5: Global Structure &amp; Metadata #</a:documentation>
6
+ <!-- ##################################################################### -->
7
+ <a:documentation>Root Element: &lt;html&gt;</a:documentation>
8
+ <element name="html">
9
+ <interleave>
10
+ <ref name="html.inner"/>
11
+ <ref name="html.attrs"/>
12
+ </interleave>
13
+ </element>
14
+ </define>
15
+ <define name="html.attrs">
16
+ <ref name="common.attrs"/>
17
+ </define>
18
+ <define name="html.inner">
19
+ <ref name="head.elem"/>
20
+ <ref name="body.elem"/>
21
+ </define>
22
+ <define name="head.elem">
23
+ <a:documentation>Metadata Container: &lt;head&gt;</a:documentation>
24
+ <element name="head">
25
+ <interleave>
26
+ <ref name="head.inner"/>
27
+ <ref name="head.attrs"/>
28
+ </interleave>
29
+ </element>
30
+ </define>
31
+ <define name="head.attrs">
32
+ <ref name="common.attrs"/>
33
+ <!-- & head.attrs.profile? -->
34
+ </define>
35
+ <!--
36
+ head.attrs.profile =
37
+ attribute profile {
38
+ common.data.uris #REVISIT should these be absolute (zero or more)
39
+ }
40
+ -->
41
+ <define name="head.inner">
42
+ <interleave>
43
+ <ref name="title.elem"/>
44
+ <optional>
45
+ <ref name="base.elem"/>
46
+ </optional>
47
+ <!-- REVISIT need a non-schema checker or Schematron -->
48
+ <ref name="common.inner.metadata"/>
49
+ </interleave>
50
+ <!-- Limit encoding decl position in Schematron -->
51
+ </define>
52
+ <!--
53
+ head.inner =
54
+ ( meta.elem.encoding?
55
+ , ( title.elem
56
+ & base.elem? # REVISIT need a non-schema checker or Schematron
57
+ & common.inner.metadata
58
+ )
59
+ )
60
+ -->
61
+ <define name="body.elem">
62
+ <a:documentation>Content Container: &lt;body&gt;</a:documentation>
63
+ <element name="body">
64
+ <interleave>
65
+ <ref name="body.inner"/>
66
+ <ref name="body.attrs"/>
67
+ </interleave>
68
+ </element>
69
+ </define>
70
+ <define name="body.attrs">
71
+ <interleave>
72
+ <ref name="common.attrs"/>
73
+ <optional>
74
+ <choice>
75
+ <ref name="common.attrs.aria.landmark.application"/>
76
+ <ref name="common.attrs.aria.landmark.document"/>
77
+ <ref name="common.attrs.aria.implicit.structure"/>
78
+ </choice>
79
+ </optional>
80
+ <optional>
81
+ <ref name="body.attrs.onafterprint"/>
82
+ </optional>
83
+ <optional>
84
+ <ref name="body.attrs.onbeforeprint"/>
85
+ </optional>
86
+ <optional>
87
+ <ref name="body.attrs.onbeforeunload"/>
88
+ </optional>
89
+ <optional>
90
+ <ref name="body.attrs.onhashchange"/>
91
+ </optional>
92
+ <optional>
93
+ <ref name="body.attrs.onmessage"/>
94
+ </optional>
95
+ <optional>
96
+ <ref name="body.attrs.onoffline"/>
97
+ </optional>
98
+ <optional>
99
+ <ref name="body.attrs.ononline"/>
100
+ </optional>
101
+ <optional>
102
+ <ref name="body.attrs.onpagehide"/>
103
+ </optional>
104
+ <optional>
105
+ <ref name="body.attrs.onpageshow"/>
106
+ </optional>
107
+ <optional>
108
+ <ref name="body.attrs.onpopstate"/>
109
+ </optional>
110
+ <optional>
111
+ <ref name="body.attrs.onresize"/>
112
+ </optional>
113
+ <optional>
114
+ <ref name="body.attrs.onstorage"/>
115
+ </optional>
116
+ <optional>
117
+ <ref name="body.attrs.onunload"/>
118
+ </optional>
119
+ </interleave>
120
+ </define>
121
+ <define name="body.inner">
122
+ <ref name="common.inner.flow"/>
123
+ </define>
124
+ <define name="body.attrs.onafterprint">
125
+ <attribute name="onafterprint">
126
+ <ref name="common.data.functionbody"/>
127
+ </attribute>
128
+ </define>
129
+ <define name="body.attrs.onbeforeprint">
130
+ <attribute name="onbeforeprint">
131
+ <ref name="common.data.functionbody"/>
132
+ </attribute>
133
+ </define>
134
+ <define name="body.attrs.onbeforeunload">
135
+ <attribute name="onbeforeunload">
136
+ <ref name="common.data.functionbody"/>
137
+ </attribute>
138
+ </define>
139
+ <define name="body.attrs.onhashchange">
140
+ <attribute name="onhashchange">
141
+ <ref name="common.data.functionbody"/>
142
+ </attribute>
143
+ </define>
144
+ <define name="body.attrs.onmessage">
145
+ <attribute name="onmessage">
146
+ <ref name="common.data.functionbody"/>
147
+ </attribute>
148
+ </define>
149
+ <define name="body.attrs.onoffline">
150
+ <attribute name="onoffline">
151
+ <ref name="common.data.functionbody"/>
152
+ </attribute>
153
+ </define>
154
+ <define name="body.attrs.ononline">
155
+ <attribute name="ononline">
156
+ <ref name="common.data.functionbody"/>
157
+ </attribute>
158
+ </define>
159
+ <define name="body.attrs.onpopstate">
160
+ <attribute name="onpopstate">
161
+ <ref name="common.data.functionbody"/>
162
+ </attribute>
163
+ </define>
164
+ <define name="body.attrs.onpagehide">
165
+ <attribute name="onpagehide">
166
+ <ref name="common.data.functionbody"/>
167
+ </attribute>
168
+ </define>
169
+ <define name="body.attrs.onpageshow">
170
+ <attribute name="onpageshow">
171
+ <ref name="common.data.functionbody"/>
172
+ </attribute>
173
+ </define>
174
+ <define name="body.attrs.onredo">
175
+ <attribute name="onredo">
176
+ <ref name="common.data.functionbody"/>
177
+ </attribute>
178
+ </define>
179
+ <define name="body.attrs.onresize">
180
+ <attribute name="onresize">
181
+ <ref name="common.data.functionbody"/>
182
+ </attribute>
183
+ </define>
184
+ <define name="body.attrs.onstorage">
185
+ <attribute name="onstorage">
186
+ <ref name="common.data.functionbody"/>
187
+ </attribute>
188
+ </define>
189
+ <define name="body.attrs.onundo">
190
+ <attribute name="onundo">
191
+ <ref name="common.data.functionbody"/>
192
+ </attribute>
193
+ </define>
194
+ <define name="body.attrs.onunload">
195
+ <attribute name="onunload">
196
+ <ref name="common.data.functionbody"/>
197
+ </attribute>
198
+ </define>
199
+ <define name="title.elem">
200
+ <a:documentation>Document Title: &lt;title&gt;</a:documentation>
201
+ <element name="title">
202
+ <interleave>
203
+ <ref name="title.inner"/>
204
+ <ref name="title.attrs"/>
205
+ </interleave>
206
+ </element>
207
+ </define>
208
+ <define name="title.attrs">
209
+ <ref name="common.attrs"/>
210
+ </define>
211
+ <define name="title.inner">
212
+ <text/>
213
+ </define>
214
+ <define name="base.elem">
215
+ <a:documentation>Base URI: &lt;base&gt;</a:documentation>
216
+ <element name="base">
217
+ <interleave>
218
+ <ref name="base.inner"/>
219
+ <ref name="base.attrs"/>
220
+ </interleave>
221
+ </element>
222
+ </define>
223
+ <define name="base.attrs">
224
+ <interleave>
225
+ <ref name="common.attrs.basic"/>
226
+ <ref name="common.attrs.i18n"/>
227
+ <ref name="common.attrs.present"/>
228
+ <ref name="common.attrs.other"/>
229
+ <choice>
230
+ <interleave>
231
+ <ref name="base.attrs.href"/>
232
+ <optional>
233
+ <ref name="base.attrs.target"/>
234
+ </optional>
235
+ </interleave>
236
+ <ref name="base.attrs.target"/>
237
+ </choice>
238
+ </interleave>
239
+ </define>
240
+ <define name="base.attrs.href">
241
+ <attribute name="href">
242
+ <ref name="common.data.uri"/>
243
+ </attribute>
244
+ </define>
245
+ <define name="base.attrs.target">
246
+ <attribute name="target">
247
+ <ref name="common.data.browsing-context-or-keyword"/>
248
+ </attribute>
249
+ </define>
250
+ <define name="base.inner">
251
+ <empty/>
252
+ </define>
253
+ <define name="link.elem">
254
+ <a:documentation>Global Relationships: &lt;link&gt;</a:documentation>
255
+ <element name="link">
256
+ <interleave>
257
+ <ref name="link.inner"/>
258
+ <ref name="link.attrs"/>
259
+ </interleave>
260
+ </element>
261
+ </define>
262
+ <define name="link.attrs">
263
+ <interleave>
264
+ <ref name="common.attrs.basic"/>
265
+ <ref name="common.attrs.i18n"/>
266
+ <ref name="common.attrs.present"/>
267
+ <ref name="common.attrs.other"/>
268
+ <ref name="link.attrs.href"/>
269
+ <ref name="link.attrs.rel"/>
270
+ <optional>
271
+ <ref name="shared-hyperlink.attrs.hreflang"/>
272
+ </optional>
273
+ <optional>
274
+ <ref name="shared-hyperlink.attrs.media"/>
275
+ </optional>
276
+ <optional>
277
+ <ref name="shared-hyperlink.attrs.type"/>
278
+ </optional>
279
+ <optional>
280
+ <ref name="link.attrs.sizes"/>
281
+ </optional>
282
+ </interleave>
283
+ <!-- link.attrs.title included in common.attrs -->
284
+ </define>
285
+ <define name="link.attrs.href">
286
+ <attribute name="href">
287
+ <ref name="common.data.uri.non-empty"/>
288
+ </attribute>
289
+ </define>
290
+ <define name="link.attrs.rel">
291
+ <attribute name="rel">
292
+ <data type="string" />
293
+ </attribute>
294
+ </define>
295
+ <define name="link.attrs.sizes">
296
+ <attribute name="sizes">
297
+ <choice>
298
+ <value type="string">any</value>
299
+ <ref name="common.data.sizes"/>
300
+ </choice>
301
+ </attribute>
302
+ </define>
303
+ <define name="link.inner">
304
+ <empty/>
305
+ </define>
306
+ <define name="common.elem.metadata" combine="choice">
307
+ <ref name="link.elem"/>
308
+ </define>
309
+ <define name="style.elem">
310
+ <a:documentation>Global Style: &lt;style&gt;</a:documentation>
311
+ <element name="style">
312
+ <interleave>
313
+ <ref name="style.inner"/>
314
+ <ref name="style.attrs"/>
315
+ </interleave>
316
+ </element>
317
+ </define>
318
+ <define name="style.attrs">
319
+ <interleave>
320
+ <ref name="common.attrs"/>
321
+ <optional>
322
+ <ref name="style.attrs.type"/>
323
+ </optional>
324
+ <optional>
325
+ <ref name="style.attrs.media"/>
326
+ </optional>
327
+ </interleave>
328
+ <!-- style.attrs.title included in common.attrs -->
329
+ </define>
330
+ <define name="style.attrs.type">
331
+ <attribute name="type">
332
+ <ref name="common.data.mimetype"/>
333
+ </attribute>
334
+ </define>
335
+ <define name="style.attrs.media">
336
+ <attribute name="media">
337
+ <ref name="common.data.mediaquery"/>
338
+ </attribute>
339
+ </define>
340
+ <define name="style.inner">
341
+ <ref name="common.inner.anything"/>
342
+ </define>
343
+ <define name="common.elem.metadata" combine="choice">
344
+ <ref name="style.elem"/>
345
+ </define>
346
+ <define name="style.elem.scoped">
347
+ <a:documentation>Scoped Style: &lt;style scoped&gt;</a:documentation>
348
+ <element name="style">
349
+ <interleave>
350
+ <ref name="style.inner"/>
351
+ <ref name="style.scoped.attrs"/>
352
+ </interleave>
353
+ </element>
354
+ </define>
355
+ <define name="style.scoped.attrs">
356
+ <interleave>
357
+ <ref name="common.attrs"/>
358
+ <optional>
359
+ <ref name="style.attrs.type"/>
360
+ </optional>
361
+ <optional>
362
+ <ref name="style.attrs.media"/>
363
+ </optional>
364
+ <ref name="style.attrs.scoped"/>
365
+ </interleave>
366
+ <!-- style.attrs.title included in common.attrs -->
367
+ </define>
368
+ <define name="style.attrs.scoped">
369
+ <attribute name="scoped">
370
+ <choice>
371
+ <value type="string">scoped</value>
372
+ <value type="string"/>
373
+ </choice>
374
+ </attribute>
375
+ </define>
376
+ <define name="meta.name.elem">
377
+ <a:documentation>Name-Value Metadata: &lt;meta name&gt;</a:documentation>
378
+ <element name="meta">
379
+ <interleave>
380
+ <ref name="meta.inner"/>
381
+ <ref name="meta.name.attrs"/>
382
+ </interleave>
383
+ </element>
384
+ </define>
385
+ <define name="meta.name.attrs">
386
+ <interleave>
387
+ <ref name="common.attrs.basic"/>
388
+ <ref name="common.attrs.i18n"/>
389
+ <ref name="common.attrs.present"/>
390
+ <ref name="common.attrs.other"/>
391
+ <ref name="meta.name.attrs.name"/>
392
+ <ref name="meta.name.attrs.content"/>
393
+ </interleave>
394
+ </define>
395
+ <define name="meta.name.attrs.name">
396
+ <attribute name="name">
397
+ <data type="string" />
398
+ </attribute>
399
+ </define>
400
+ <define name="meta.name.attrs.content">
401
+ <attribute name="content">
402
+ <data type="string" datatypeLibrary=""/>
403
+ </attribute>
404
+ </define>
405
+ <define name="meta.inner">
406
+ <empty/>
407
+ </define>
408
+ <define name="common.elem.metadata" combine="choice">
409
+ <ref name="meta.name.elem"/>
410
+ </define>
411
+ <define name="meta.http-equiv.refresh.elem">
412
+ <a:documentation>"refresh" pragma directive: &lt;meta http-equiv='refresh'&gt;</a:documentation>
413
+ <element name="meta">
414
+ <interleave>
415
+ <ref name="meta.inner"/>
416
+ <ref name="meta.http-equiv.refresh.attrs"/>
417
+ </interleave>
418
+ </element>
419
+ </define>
420
+ <define name="meta.http-equiv.refresh.attrs">
421
+ <interleave>
422
+ <ref name="common.attrs.basic"/>
423
+ <ref name="common.attrs.i18n"/>
424
+ <ref name="common.attrs.present"/>
425
+ <ref name="common.attrs.other"/>
426
+ <ref name="meta.http-equiv.attrs.http-equiv.refresh"/>
427
+ <ref name="meta.http-equiv.attrs.content.refresh"/>
428
+ </interleave>
429
+ </define>
430
+ <define name="meta.http-equiv.attrs.http-equiv.refresh">
431
+ <attribute name="http-equiv">
432
+ <value type="string">refresh</value>
433
+ </attribute>
434
+ </define>
435
+ <define name="meta.http-equiv.attrs.content.refresh">
436
+ <attribute name="content">
437
+ <ref name="common.data.refresh"/>
438
+ </attribute>
439
+ </define>
440
+ <define name="common.elem.metadata" combine="choice">
441
+ <ref name="meta.http-equiv.refresh.elem"/>
442
+ </define>
443
+ <!--
444
+ not quite right per spec
445
+ if the definition is
446
+ reused in another language
447
+ -->
448
+ <define name="meta.http-equiv.default-style.elem">
449
+ <a:documentation>"default-style" pragma directive: &lt;meta http-equiv='default-style'&gt;</a:documentation>
450
+ <element name="meta">
451
+ <interleave>
452
+ <ref name="meta.inner"/>
453
+ <ref name="meta.http-equiv.default-style.attrs"/>
454
+ </interleave>
455
+ </element>
456
+ </define>
457
+ <define name="meta.http-equiv.default-style.attrs">
458
+ <interleave>
459
+ <ref name="common.attrs.basic"/>
460
+ <ref name="common.attrs.i18n"/>
461
+ <ref name="common.attrs.present"/>
462
+ <ref name="common.attrs.other"/>
463
+ <ref name="meta.http-equiv.attrs.http-equiv.default-style"/>
464
+ <ref name="meta.http-equiv.attrs.content.default-style"/>
465
+ </interleave>
466
+ </define>
467
+ <define name="meta.http-equiv.attrs.http-equiv.default-style">
468
+ <attribute name="http-equiv">
469
+ <value type="string">default-style</value>
470
+ </attribute>
471
+ </define>
472
+ <define name="meta.http-equiv.attrs.content.default-style">
473
+ <attribute name="content">
474
+ <ref name="common.data.default-style"/>
475
+ </attribute>
476
+ </define>
477
+ <define name="common.elem.metadata" combine="choice">
478
+ <ref name="meta.http-equiv.default-style.elem"/>
479
+ </define>
480
+ <!--
481
+ not quite right per spec
482
+ if the definition is
483
+ reused in another language
484
+ -->
485
+ <define name="meta.charset.elem">
486
+ <a:documentation>Inline Character Encoding Statement for HTML: &lt;meta charset&gt;</a:documentation>
487
+ <element name="meta">
488
+ <interleave>
489
+ <ref name="meta.inner"/>
490
+ <ref name="meta.charset.attrs"/>
491
+ </interleave>
492
+ </element>
493
+ </define>
494
+ <define name="meta.charset.attrs">
495
+ <interleave>
496
+ <ref name="common.attrs.basic"/>
497
+ <ref name="common.attrs.i18n"/>
498
+ <ref name="common.attrs.present"/>
499
+ <ref name="common.attrs.other"/>
500
+ <ref name="meta.charset.attrs.charset"/>
501
+ </interleave>
502
+ </define>
503
+ <define name="meta.charset.attrs.charset">
504
+ <attribute name="charset">
505
+ <choice>
506
+ <interleave>
507
+ <ref name="common.data.charset"/>
508
+ <ref name="HTMLonly"/>
509
+ </interleave>
510
+ <interleave>
511
+ <data type="string" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
512
+ <param name="pattern">[uU][tT][fF]-8</param>
513
+ </data>
514
+ <ref name="XMLonly"/>
515
+ </interleave>
516
+ </choice>
517
+ </attribute>
518
+ </define>
519
+ <define name="meta.http-equiv.content-type.elem">
520
+ <a:documentation>Inline Character Encoding Statement for HTML: &lt;meta http-equiv='content-type'&gt;</a:documentation>
521
+ <interleave>
522
+ <element name="meta">
523
+ <interleave>
524
+ <ref name="meta.inner"/>
525
+ <ref name="meta.http-equiv.content-type.attrs"/>
526
+ </interleave>
527
+ </element>
528
+ <ref name="HTMLonly"/>
529
+ </interleave>
530
+ </define>
531
+ <define name="meta.http-equiv.content-type.attrs">
532
+ <interleave>
533
+ <ref name="common.attrs.basic"/>
534
+ <ref name="common.attrs.i18n"/>
535
+ <ref name="common.attrs.present"/>
536
+ <ref name="common.attrs.other"/>
537
+ <ref name="meta.http-equiv.attrs.http-equiv.content-type"/>
538
+ <ref name="meta.http-equiv.attrs.content.content-type"/>
539
+ </interleave>
540
+ </define>
541
+ <define name="meta.http-equiv.attrs.http-equiv.content-type">
542
+ <attribute name="http-equiv">
543
+ <value type="string">content-type</value>
544
+ </attribute>
545
+ </define>
546
+ <define name="meta.http-equiv.attrs.content.content-type">
547
+ <attribute name="content">
548
+ <ref name="common.data.meta-charset"/>
549
+ </attribute>
550
+ </define>
551
+ <define name="common.elem.metadata" combine="choice">
552
+ <choice>
553
+ <ref name="meta.charset.elem"/>
554
+ <ref name="meta.http-equiv.content-type.elem"/>
555
+ </choice>
556
+ </define>
557
+ </grammar>