html-validator 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1388 @@
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="common-form.attrs" combine="interleave">
5
+ <a:documentation> RELAX NG Schema for HTML 5: Web Forms 2.0 markup #</a:documentation>
6
+ <!-- ##################################################################### -->
7
+ <a:documentation>Shared attributes for form controls</a:documentation>
8
+ <optional>
9
+ <ref name="common-form.attrs.form"/>
10
+ </optional>
11
+ </define>
12
+ <define name="common-form.attrs.form" combine="choice">
13
+ <attribute name="form">
14
+ <ref name="common.data.idref"/>
15
+ </attribute>
16
+ </define>
17
+ <define name="shared-form.attrs.formaction">
18
+ <attribute name="formaction">
19
+ <ref name="common.data.uri.non-empty"/>
20
+ </attribute>
21
+ </define>
22
+ <define name="shared-form.attrs.formenctype">
23
+ <attribute name="formenctype">
24
+ <ref name="shared-form.attrs.formenctype.data"/>
25
+ </attribute>
26
+ </define>
27
+ <define name="shared-form.attrs.formenctype.data">
28
+ <choice>
29
+ <value type="string">application/x-www-form-urlencoded</value>
30
+ <value type="string">multipart/form-data</value>
31
+ <value type="string">text/plain</value>
32
+ </choice>
33
+ </define>
34
+ <define name="shared-form.attrs.formmethod">
35
+ <attribute name="formmethod">
36
+ <ref name="shared-form.attrs.formmethod.data"/>
37
+ </attribute>
38
+ </define>
39
+ <define name="shared-form.attrs.formmethod.data">
40
+ <choice>
41
+ <value type="string">get</value>
42
+ <value type="string">post</value>
43
+ </choice>
44
+ </define>
45
+ <define name="shared-form.attrs.formtarget">
46
+ <attribute name="formtarget">
47
+ <ref name="common.data.browsing-context-or-keyword"/>
48
+ </attribute>
49
+ </define>
50
+ <define name="shared-form.attrs.formnovalidate">
51
+ <attribute name="formnovalidate">
52
+ <choice>
53
+ <value type="string">formnovalidate</value>
54
+ <value type="string"/>
55
+ </choice>
56
+ </attribute>
57
+ </define>
58
+ <define name="shared-form.attrs.autofocus">
59
+ <attribute name="autofocus">
60
+ <choice>
61
+ <value type="string">autofocus</value>
62
+ <value type="string"/>
63
+ </choice>
64
+ </attribute>
65
+ </define>
66
+ <define name="shared-form.attrs.pattern">
67
+ <attribute name="pattern">
68
+ <ref name="form.data.pattern"/>
69
+ </attribute>
70
+ </define>
71
+ <define name="shared-form.attrs.template">
72
+ <attribute name="template">
73
+ <ref name="common.data.idref"/>
74
+ </attribute>
75
+ </define>
76
+ <define name="shared-form.attrs.required">
77
+ <attribute name="required">
78
+ <choice>
79
+ <value type="string">required</value>
80
+ <value type="string"/>
81
+ </choice>
82
+ </attribute>
83
+ </define>
84
+ <define name="shared-form.attrs.placeholder">
85
+ <attribute name="placeholder">
86
+ <ref name="form.data.stringwithoutlinebreaks"/>
87
+ </attribute>
88
+ </define>
89
+ <define name="shared-form.attrs.dirname">
90
+ <attribute name="dirname">
91
+ <ref name="form.data.nonemptystring"/>
92
+ </attribute>
93
+ </define>
94
+ <define name="input.attrs.autocomplete">
95
+ <a:documentation>Shared attributes for &lt;input&gt;</a:documentation>
96
+ <attribute name="autocomplete">
97
+ <choice>
98
+ <value type="string">on</value>
99
+ <value type="string">off</value>
100
+ </choice>
101
+ </attribute>
102
+ </define>
103
+ <define name="input.attrs.list">
104
+ <attribute name="list">
105
+ <ref name="common.data.idref"/>
106
+ </attribute>
107
+ </define>
108
+ <define name="input.attrs.step.float">
109
+ <attribute name="step">
110
+ <choice>
111
+ <value type="string">any</value>
112
+ <ref name="common.data.float.positive"/>
113
+ </choice>
114
+ </attribute>
115
+ </define>
116
+ <define name="input.attrs.step.integer">
117
+ <attribute name="step">
118
+ <choice>
119
+ <value type="string">any</value>
120
+ <ref name="common.data.integer.positive"/>
121
+ </choice>
122
+ </attribute>
123
+ </define>
124
+ <define name="input.attrs.multiple">
125
+ <attribute name="multiple">
126
+ <choice>
127
+ <value type="string">multiple</value>
128
+ <value type="string"/>
129
+ </choice>
130
+ </attribute>
131
+ </define>
132
+ <define name="input.text.attrs" combine="interleave">
133
+ <a:documentation>Text Field: &lt;input type='text'&gt;, Extensions</a:documentation>
134
+ <interleave>
135
+ <optional>
136
+ <ref name="input.attrs.autocomplete"/>
137
+ </optional>
138
+ <optional>
139
+ <ref name="shared-form.attrs.autofocus"/>
140
+ </optional>
141
+ <optional>
142
+ <ref name="input.attrs.list"/>
143
+ </optional>
144
+ <optional>
145
+ <ref name="shared-form.attrs.pattern"/>
146
+ </optional>
147
+ <optional>
148
+ <ref name="shared-form.attrs.required"/>
149
+ </optional>
150
+ <optional>
151
+ <ref name="shared-form.attrs.placeholder"/>
152
+ </optional>
153
+ <optional>
154
+ <ref name="shared-form.attrs.dirname"/>
155
+ </optional>
156
+ </interleave>
157
+ </define>
158
+ <define name="input.password.attrs" combine="interleave">
159
+ <a:documentation>Password Field: &lt;input type='password'&gt;, Extensions</a:documentation>
160
+ <interleave>
161
+ <optional>
162
+ <ref name="input.attrs.autocomplete"/>
163
+ </optional>
164
+ <optional>
165
+ <ref name="shared-form.attrs.autofocus"/>
166
+ </optional>
167
+ <optional>
168
+ <ref name="shared-form.attrs.pattern"/>
169
+ </optional>
170
+ <optional>
171
+ <ref name="shared-form.attrs.required"/>
172
+ </optional>
173
+ <optional>
174
+ <ref name="shared-form.attrs.placeholder"/>
175
+ </optional>
176
+ </interleave>
177
+ </define>
178
+ <define name="input.checkbox.attrs" combine="interleave">
179
+ <a:documentation>Checkbox &lt;input type='checkbox'&gt;, Extensions</a:documentation>
180
+ <interleave>
181
+ <optional>
182
+ <ref name="shared-form.attrs.autofocus"/>
183
+ </optional>
184
+ <optional>
185
+ <ref name="shared-form.attrs.required"/>
186
+ </optional>
187
+ </interleave>
188
+ </define>
189
+ <define name="input.radio.attrs" combine="interleave">
190
+ <a:documentation>Radiobutton: &lt;input type='radio'&gt;, Extensions</a:documentation>
191
+ <interleave>
192
+ <optional>
193
+ <ref name="shared-form.attrs.autofocus"/>
194
+ </optional>
195
+ <optional>
196
+ <ref name="shared-form.attrs.required"/>
197
+ </optional>
198
+ </interleave>
199
+ </define>
200
+ <define name="input.button.attrs" combine="interleave">
201
+ <a:documentation>Scripting Hook Button: &lt;input type='button'&gt;, Extensions</a:documentation>
202
+ <optional>
203
+ <ref name="shared-form.attrs.autofocus"/>
204
+ </optional>
205
+ </define>
206
+ <define name="input.submit.attrs" combine="interleave">
207
+ <a:documentation>Submit Button: &lt;input type='submit'&gt;, Extensions</a:documentation>
208
+ <interleave>
209
+ <optional>
210
+ <ref name="shared-form.attrs.formaction"/>
211
+ </optional>
212
+ <optional>
213
+ <ref name="shared-form.attrs.autofocus"/>
214
+ </optional>
215
+ <optional>
216
+ <ref name="shared-form.attrs.formenctype"/>
217
+ </optional>
218
+ <optional>
219
+ <ref name="shared-form.attrs.formmethod"/>
220
+ </optional>
221
+ <optional>
222
+ <ref name="shared-form.attrs.formtarget"/>
223
+ </optional>
224
+ <optional>
225
+ <ref name="shared-form.attrs.formnovalidate"/>
226
+ </optional>
227
+ </interleave>
228
+ </define>
229
+ <define name="input.reset.attrs" combine="interleave">
230
+ <a:documentation>Reset Button: &lt;input type='reset'&gt;, Extensions</a:documentation>
231
+ <optional>
232
+ <ref name="shared-form.attrs.autofocus"/>
233
+ </optional>
234
+ </define>
235
+ <define name="input.file.attrs" combine="interleave">
236
+ <a:documentation>File Upload: &lt;input type='file'&gt;, Extensions</a:documentation>
237
+ <interleave>
238
+ <optional>
239
+ <ref name="shared-form.attrs.autofocus"/>
240
+ </optional>
241
+ <optional>
242
+ <ref name="shared-form.attrs.required"/>
243
+ </optional>
244
+ <optional>
245
+ <ref name="input.attrs.multiple"/>
246
+ </optional>
247
+ </interleave>
248
+ </define>
249
+ <define name="input.image.attrs" combine="interleave">
250
+ <a:documentation>Image Submit Button: &lt;input type='image'&gt;, Extensions</a:documentation>
251
+ <interleave>
252
+ <optional>
253
+ <ref name="shared-form.attrs.formaction"/>
254
+ </optional>
255
+ <optional>
256
+ <ref name="shared-form.attrs.autofocus"/>
257
+ </optional>
258
+ <optional>
259
+ <ref name="shared-form.attrs.formenctype"/>
260
+ </optional>
261
+ <optional>
262
+ <ref name="shared-form.attrs.formmethod"/>
263
+ </optional>
264
+ <optional>
265
+ <ref name="shared-form.attrs.formtarget"/>
266
+ </optional>
267
+ <optional>
268
+ <ref name="shared-form.attrs.formnovalidate"/>
269
+ </optional>
270
+ <optional>
271
+ <ref name="input.image.attrs.height"/>
272
+ </optional>
273
+ <optional>
274
+ <ref name="input.image.attrs.width"/>
275
+ </optional>
276
+ </interleave>
277
+ </define>
278
+ <define name="input.image.attrs.height">
279
+ <attribute name="height">
280
+ <ref name="common.data.integer.non-negative"/>
281
+ </attribute>
282
+ </define>
283
+ <define name="input.image.attrs.width">
284
+ <attribute name="width">
285
+ <ref name="common.data.integer.non-negative"/>
286
+ </attribute>
287
+ </define>
288
+ <define name="input.datetime.elem">
289
+ <a:documentation>Global Date and Time: &lt;input type='datetime'&gt;</a:documentation>
290
+ <element name="input">
291
+ <ref name="input.datetime.attrs"/>
292
+ </element>
293
+ </define>
294
+ <define name="input.datetime.attrs">
295
+ <interleave>
296
+ <ref name="common.attrs"/>
297
+ <ref name="common-form.attrs"/>
298
+ <ref name="input.datetime.attrs.type"/>
299
+ <optional>
300
+ <ref name="input.attrs.autocomplete"/>
301
+ </optional>
302
+ <optional>
303
+ <ref name="shared-form.attrs.autofocus"/>
304
+ </optional>
305
+ <optional>
306
+ <ref name="input.attrs.list"/>
307
+ </optional>
308
+ <optional>
309
+ <ref name="input.datetime.attrs.min"/>
310
+ </optional>
311
+ <optional>
312
+ <ref name="input.datetime.attrs.max"/>
313
+ </optional>
314
+ <optional>
315
+ <ref name="input.attrs.step.float"/>
316
+ </optional>
317
+ <optional>
318
+ <ref name="shared-form.attrs.readonly"/>
319
+ </optional>
320
+ <optional>
321
+ <ref name="shared-form.attrs.required"/>
322
+ </optional>
323
+ <optional>
324
+ <ref name="input.datetime.attrs.value"/>
325
+ </optional>
326
+ <optional>
327
+ <ref name="common.attrs.aria.implicit.input"/>
328
+ </optional>
329
+ </interleave>
330
+ </define>
331
+ <define name="input.datetime.attrs.type">
332
+ <attribute name="type">
333
+ <value type="string">datetime</value>
334
+ </attribute>
335
+ </define>
336
+ <define name="input.datetime.attrs.min">
337
+ <attribute name="min">
338
+ <ref name="common.data.datetime"/>
339
+ </attribute>
340
+ </define>
341
+ <define name="input.datetime.attrs.max">
342
+ <attribute name="max">
343
+ <ref name="common.data.datetime"/>
344
+ </attribute>
345
+ </define>
346
+ <define name="input.datetime.attrs.value">
347
+ <attribute name="value">
348
+ <choice>
349
+ <value type="string"/>
350
+ <ref name="common.data.datetime"/>
351
+ </choice>
352
+ </attribute>
353
+ </define>
354
+ <define name="input.elem" combine="choice">
355
+ <ref name="input.datetime.elem"/>
356
+ </define>
357
+ <define name="input.datetime-local.elem">
358
+ <a:documentation>Date and Time with No Time Zone Information: &lt;input type='datetime-local'&gt;</a:documentation>
359
+ <element name="input">
360
+ <ref name="input.datetime-local.attrs"/>
361
+ </element>
362
+ </define>
363
+ <define name="input.datetime-local.attrs">
364
+ <interleave>
365
+ <ref name="common.attrs"/>
366
+ <ref name="common-form.attrs"/>
367
+ <ref name="input.datetime-local.attrs.type"/>
368
+ <optional>
369
+ <ref name="input.attrs.autocomplete"/>
370
+ </optional>
371
+ <optional>
372
+ <ref name="shared-form.attrs.autofocus"/>
373
+ </optional>
374
+ <optional>
375
+ <ref name="input.attrs.list"/>
376
+ </optional>
377
+ <optional>
378
+ <ref name="input.datetime-local.attrs.min"/>
379
+ </optional>
380
+ <optional>
381
+ <ref name="input.datetime-local.attrs.max"/>
382
+ </optional>
383
+ <optional>
384
+ <ref name="input.attrs.step.float"/>
385
+ </optional>
386
+ <optional>
387
+ <ref name="shared-form.attrs.readonly"/>
388
+ </optional>
389
+ <optional>
390
+ <ref name="shared-form.attrs.required"/>
391
+ </optional>
392
+ <optional>
393
+ <ref name="input.datetime-local.attrs.value"/>
394
+ </optional>
395
+ <optional>
396
+ <ref name="common.attrs.aria.implicit.input"/>
397
+ </optional>
398
+ </interleave>
399
+ </define>
400
+ <define name="input.datetime-local.attrs.type">
401
+ <attribute name="type">
402
+ <value type="string">datetime-local</value>
403
+ </attribute>
404
+ </define>
405
+ <define name="input.datetime-local.attrs.min">
406
+ <attribute name="min">
407
+ <ref name="form.data.datetime-local"/>
408
+ </attribute>
409
+ </define>
410
+ <define name="input.datetime-local.attrs.max">
411
+ <attribute name="max">
412
+ <ref name="form.data.datetime-local"/>
413
+ </attribute>
414
+ </define>
415
+ <define name="input.datetime-local.attrs.value">
416
+ <attribute name="value">
417
+ <choice>
418
+ <value type="string"/>
419
+ <ref name="form.data.datetime-local"/>
420
+ </choice>
421
+ </attribute>
422
+ </define>
423
+ <define name="input.elem" combine="choice">
424
+ <ref name="input.datetime-local.elem"/>
425
+ </define>
426
+ <define name="input.date.elem">
427
+ <a:documentation>Date: &lt;input type='date'&gt;</a:documentation>
428
+ <element name="input">
429
+ <ref name="input.date.attrs"/>
430
+ </element>
431
+ </define>
432
+ <define name="input.date.attrs">
433
+ <interleave>
434
+ <ref name="common.attrs"/>
435
+ <ref name="common-form.attrs"/>
436
+ <ref name="input.date.attrs.type"/>
437
+ <optional>
438
+ <ref name="input.attrs.autocomplete"/>
439
+ </optional>
440
+ <optional>
441
+ <ref name="shared-form.attrs.autofocus"/>
442
+ </optional>
443
+ <optional>
444
+ <ref name="input.attrs.list"/>
445
+ </optional>
446
+ <optional>
447
+ <ref name="input.date.attrs.min"/>
448
+ </optional>
449
+ <optional>
450
+ <ref name="input.date.attrs.max"/>
451
+ </optional>
452
+ <optional>
453
+ <ref name="input.attrs.step.integer"/>
454
+ </optional>
455
+ <optional>
456
+ <ref name="shared-form.attrs.readonly"/>
457
+ </optional>
458
+ <optional>
459
+ <ref name="shared-form.attrs.required"/>
460
+ </optional>
461
+ <optional>
462
+ <ref name="input.date.attrs.value"/>
463
+ </optional>
464
+ <optional>
465
+ <ref name="common.attrs.aria.implicit.input"/>
466
+ </optional>
467
+ </interleave>
468
+ </define>
469
+ <define name="input.date.attrs.type">
470
+ <attribute name="type">
471
+ <value type="string">date</value>
472
+ </attribute>
473
+ </define>
474
+ <define name="input.date.attrs.min">
475
+ <attribute name="min">
476
+ <ref name="form.data.date"/>
477
+ </attribute>
478
+ </define>
479
+ <define name="input.date.attrs.max">
480
+ <attribute name="max">
481
+ <ref name="form.data.date"/>
482
+ </attribute>
483
+ </define>
484
+ <define name="input.date.attrs.value">
485
+ <attribute name="value">
486
+ <choice>
487
+ <value type="string"/>
488
+ <ref name="form.data.date"/>
489
+ </choice>
490
+ </attribute>
491
+ </define>
492
+ <define name="input.elem" combine="choice">
493
+ <ref name="input.date.elem"/>
494
+ </define>
495
+ <define name="input.month.elem">
496
+ <a:documentation>Year and Month: &lt;input type='month'&gt;</a:documentation>
497
+ <element name="input">
498
+ <ref name="input.month.attrs"/>
499
+ </element>
500
+ </define>
501
+ <define name="input.month.attrs">
502
+ <interleave>
503
+ <ref name="common.attrs"/>
504
+ <ref name="common-form.attrs"/>
505
+ <ref name="input.month.attrs.type"/>
506
+ <optional>
507
+ <ref name="input.attrs.autocomplete"/>
508
+ </optional>
509
+ <optional>
510
+ <ref name="shared-form.attrs.autofocus"/>
511
+ </optional>
512
+ <optional>
513
+ <ref name="input.attrs.list"/>
514
+ </optional>
515
+ <optional>
516
+ <ref name="input.month.attrs.min"/>
517
+ </optional>
518
+ <optional>
519
+ <ref name="input.month.attrs.max"/>
520
+ </optional>
521
+ <optional>
522
+ <ref name="input.attrs.step.integer"/>
523
+ </optional>
524
+ <optional>
525
+ <ref name="shared-form.attrs.readonly"/>
526
+ </optional>
527
+ <optional>
528
+ <ref name="shared-form.attrs.required"/>
529
+ </optional>
530
+ <optional>
531
+ <ref name="input.month.attrs.value"/>
532
+ </optional>
533
+ <optional>
534
+ <ref name="common.attrs.aria.implicit.input"/>
535
+ </optional>
536
+ </interleave>
537
+ </define>
538
+ <define name="input.month.attrs.type">
539
+ <attribute name="type">
540
+ <value type="string">month</value>
541
+ </attribute>
542
+ </define>
543
+ <define name="input.month.attrs.min">
544
+ <attribute name="min">
545
+ <ref name="form.data.month"/>
546
+ </attribute>
547
+ </define>
548
+ <define name="input.month.attrs.max">
549
+ <attribute name="max">
550
+ <ref name="form.data.month"/>
551
+ </attribute>
552
+ </define>
553
+ <define name="input.month.attrs.value">
554
+ <attribute name="value">
555
+ <choice>
556
+ <value type="string"/>
557
+ <ref name="form.data.month"/>
558
+ </choice>
559
+ </attribute>
560
+ </define>
561
+ <define name="input.elem" combine="choice">
562
+ <ref name="input.month.elem"/>
563
+ </define>
564
+ <define name="input.time.elem">
565
+ <a:documentation>Time without Time Zone Information: &lt;input type='time'&gt;</a:documentation>
566
+ <element name="input">
567
+ <ref name="input.time.attrs"/>
568
+ </element>
569
+ </define>
570
+ <define name="input.time.attrs">
571
+ <interleave>
572
+ <ref name="common.attrs"/>
573
+ <ref name="common-form.attrs"/>
574
+ <ref name="input.time.attrs.type"/>
575
+ <optional>
576
+ <ref name="input.attrs.autocomplete"/>
577
+ </optional>
578
+ <optional>
579
+ <ref name="shared-form.attrs.autofocus"/>
580
+ </optional>
581
+ <optional>
582
+ <ref name="input.attrs.list"/>
583
+ </optional>
584
+ <optional>
585
+ <ref name="input.time.attrs.min"/>
586
+ </optional>
587
+ <optional>
588
+ <ref name="input.time.attrs.max"/>
589
+ </optional>
590
+ <optional>
591
+ <ref name="input.attrs.step.float"/>
592
+ </optional>
593
+ <optional>
594
+ <ref name="shared-form.attrs.readonly"/>
595
+ </optional>
596
+ <optional>
597
+ <ref name="shared-form.attrs.required"/>
598
+ </optional>
599
+ <optional>
600
+ <ref name="input.time.attrs.value"/>
601
+ </optional>
602
+ <optional>
603
+ <ref name="common.attrs.aria.implicit.input"/>
604
+ </optional>
605
+ </interleave>
606
+ </define>
607
+ <define name="input.time.attrs.type">
608
+ <attribute name="type">
609
+ <value type="string">time</value>
610
+ </attribute>
611
+ </define>
612
+ <define name="input.time.attrs.min">
613
+ <attribute name="min">
614
+ <ref name="form.data.time"/>
615
+ </attribute>
616
+ </define>
617
+ <define name="input.time.attrs.max">
618
+ <attribute name="max">
619
+ <ref name="form.data.time"/>
620
+ </attribute>
621
+ </define>
622
+ <define name="input.time.attrs.value">
623
+ <attribute name="value">
624
+ <choice>
625
+ <value type="string"/>
626
+ <ref name="form.data.time"/>
627
+ </choice>
628
+ </attribute>
629
+ </define>
630
+ <define name="input.elem" combine="choice">
631
+ <ref name="input.time.elem"/>
632
+ </define>
633
+ <define name="input.week.elem">
634
+ <a:documentation>Year and Week: &lt;input type='week'&gt;</a:documentation>
635
+ <element name="input">
636
+ <ref name="input.week.attrs"/>
637
+ </element>
638
+ </define>
639
+ <define name="input.week.attrs">
640
+ <interleave>
641
+ <ref name="common.attrs"/>
642
+ <ref name="common-form.attrs"/>
643
+ <ref name="input.week.attrs.type"/>
644
+ <optional>
645
+ <ref name="input.attrs.autocomplete"/>
646
+ </optional>
647
+ <optional>
648
+ <ref name="shared-form.attrs.autofocus"/>
649
+ </optional>
650
+ <optional>
651
+ <ref name="input.attrs.list"/>
652
+ </optional>
653
+ <optional>
654
+ <ref name="input.week.attrs.min"/>
655
+ </optional>
656
+ <optional>
657
+ <ref name="input.week.attrs.max"/>
658
+ </optional>
659
+ <optional>
660
+ <ref name="input.attrs.step.integer"/>
661
+ </optional>
662
+ <optional>
663
+ <ref name="shared-form.attrs.readonly"/>
664
+ </optional>
665
+ <optional>
666
+ <ref name="shared-form.attrs.required"/>
667
+ </optional>
668
+ <optional>
669
+ <ref name="input.week.attrs.value"/>
670
+ </optional>
671
+ <optional>
672
+ <ref name="common.attrs.aria.implicit.input"/>
673
+ </optional>
674
+ </interleave>
675
+ </define>
676
+ <define name="input.week.attrs.type">
677
+ <attribute name="type">
678
+ <value type="string">week</value>
679
+ </attribute>
680
+ </define>
681
+ <define name="input.week.attrs.min">
682
+ <attribute name="min">
683
+ <ref name="form.data.week"/>
684
+ </attribute>
685
+ </define>
686
+ <define name="input.week.attrs.max">
687
+ <attribute name="max">
688
+ <ref name="form.data.week"/>
689
+ </attribute>
690
+ </define>
691
+ <define name="input.week.attrs.value">
692
+ <attribute name="value">
693
+ <choice>
694
+ <value type="string"/>
695
+ <ref name="form.data.week"/>
696
+ </choice>
697
+ </attribute>
698
+ </define>
699
+ <define name="input.elem" combine="choice">
700
+ <ref name="input.week.elem"/>
701
+ </define>
702
+ <define name="input.number.elem">
703
+ <a:documentation>Number: &lt;input type='number'&gt;</a:documentation>
704
+ <element name="input">
705
+ <ref name="input.number.attrs"/>
706
+ </element>
707
+ </define>
708
+ <define name="input.number.attrs">
709
+ <interleave>
710
+ <ref name="common.attrs"/>
711
+ <ref name="common-form.attrs"/>
712
+ <ref name="input.number.attrs.type"/>
713
+ <optional>
714
+ <ref name="input.attrs.autocomplete"/>
715
+ </optional>
716
+ <optional>
717
+ <ref name="shared-form.attrs.autofocus"/>
718
+ </optional>
719
+ <optional>
720
+ <ref name="input.attrs.list"/>
721
+ </optional>
722
+ <optional>
723
+ <ref name="input.number.attrs.min"/>
724
+ </optional>
725
+ <optional>
726
+ <ref name="input.number.attrs.max"/>
727
+ </optional>
728
+ <optional>
729
+ <ref name="input.attrs.step.float"/>
730
+ </optional>
731
+ <optional>
732
+ <ref name="shared-form.attrs.readonly"/>
733
+ </optional>
734
+ <optional>
735
+ <ref name="shared-form.attrs.required"/>
736
+ </optional>
737
+ <optional>
738
+ <ref name="shared-form.attrs.placeholder"/>
739
+ </optional>
740
+ <optional>
741
+ <ref name="input.number.attrs.value"/>
742
+ </optional>
743
+ <optional>
744
+ <ref name="common.attrs.aria.implicit.input"/>
745
+ </optional>
746
+ </interleave>
747
+ </define>
748
+ <define name="input.number.attrs.type">
749
+ <attribute name="type">
750
+ <value type="string">number</value>
751
+ </attribute>
752
+ </define>
753
+ <define name="input.number.attrs.min">
754
+ <attribute name="min">
755
+ <ref name="common.data.float"/>
756
+ </attribute>
757
+ </define>
758
+ <define name="input.number.attrs.max">
759
+ <attribute name="max">
760
+ <ref name="common.data.float"/>
761
+ </attribute>
762
+ </define>
763
+ <define name="input.number.attrs.value">
764
+ <attribute name="value">
765
+ <choice>
766
+ <value type="string"/>
767
+ <ref name="common.data.float"/>
768
+ </choice>
769
+ </attribute>
770
+ </define>
771
+ <define name="input.elem" combine="choice">
772
+ <ref name="input.number.elem"/>
773
+ </define>
774
+ <define name="input.range.elem">
775
+ <a:documentation>Imprecise Number: &lt;input type='range'&gt;</a:documentation>
776
+ <element name="input">
777
+ <ref name="input.range.attrs"/>
778
+ </element>
779
+ </define>
780
+ <define name="input.range.attrs">
781
+ <interleave>
782
+ <ref name="common.attrs"/>
783
+ <ref name="common-form.attrs"/>
784
+ <ref name="input.range.attrs.type"/>
785
+ <optional>
786
+ <ref name="input.attrs.autocomplete"/>
787
+ </optional>
788
+ <optional>
789
+ <ref name="shared-form.attrs.autofocus"/>
790
+ </optional>
791
+ <optional>
792
+ <ref name="input.attrs.list"/>
793
+ </optional>
794
+ <optional>
795
+ <ref name="input.range.attrs.min"/>
796
+ </optional>
797
+ <optional>
798
+ <ref name="input.range.attrs.max"/>
799
+ </optional>
800
+ <optional>
801
+ <ref name="input.attrs.step.float"/>
802
+ </optional>
803
+ <optional>
804
+ <ref name="input.range.attrs.value"/>
805
+ </optional>
806
+ <optional>
807
+ <ref name="common.attrs.aria.implicit.input"/>
808
+ </optional>
809
+ </interleave>
810
+ </define>
811
+ <define name="input.range.attrs.type">
812
+ <attribute name="type">
813
+ <value type="string">range</value>
814
+ </attribute>
815
+ </define>
816
+ <define name="input.range.attrs.min">
817
+ <attribute name="min">
818
+ <ref name="common.data.float"/>
819
+ </attribute>
820
+ </define>
821
+ <define name="input.range.attrs.max">
822
+ <attribute name="max">
823
+ <ref name="common.data.float"/>
824
+ </attribute>
825
+ </define>
826
+ <define name="input.range.attrs.value">
827
+ <attribute name="value">
828
+ <ref name="common.data.float"/>
829
+ </attribute>
830
+ </define>
831
+ <define name="input.elem" combine="choice">
832
+ <ref name="input.range.elem"/>
833
+ </define>
834
+ <define name="input.email.elem">
835
+ <a:documentation>Email Address: &lt;input type='email'&gt;</a:documentation>
836
+ <element name="input">
837
+ <ref name="input.email.attrs"/>
838
+ </element>
839
+ </define>
840
+ <define name="input.email.attrs">
841
+ <interleave>
842
+ <ref name="common.attrs"/>
843
+ <ref name="common-form.attrs"/>
844
+ <ref name="input.email.attrs.type"/>
845
+ <optional>
846
+ <ref name="input.attrs.autocomplete"/>
847
+ </optional>
848
+ <optional>
849
+ <ref name="shared-form.attrs.autofocus"/>
850
+ </optional>
851
+ <optional>
852
+ <ref name="input.attrs.list"/>
853
+ </optional>
854
+ <optional>
855
+ <ref name="shared-form.attrs.maxlength"/>
856
+ </optional>
857
+ <optional>
858
+ <ref name="shared-form.attrs.pattern"/>
859
+ </optional>
860
+ <optional>
861
+ <ref name="shared-form.attrs.readonly"/>
862
+ </optional>
863
+ <optional>
864
+ <ref name="shared-form.attrs.required"/>
865
+ </optional>
866
+ <optional>
867
+ <ref name="shared-form.attrs.size"/>
868
+ </optional>
869
+ <optional>
870
+ <ref name="shared-form.attrs.placeholder"/>
871
+ </optional>
872
+ <optional>
873
+ <choice>
874
+ <interleave>
875
+ <ref name="input.attrs.multiple"/>
876
+ <optional>
877
+ <ref name="input.email.attrs.value.multiple"/>
878
+ </optional>
879
+ </interleave>
880
+ <optional>
881
+ <ref name="input.email.attrs.value.single"/>
882
+ </optional>
883
+ </choice>
884
+ </optional>
885
+ <optional>
886
+ <ref name="common.attrs.aria.implicit.input"/>
887
+ </optional>
888
+ </interleave>
889
+ </define>
890
+ <define name="input.email.attrs.type">
891
+ <attribute name="type">
892
+ <value type="string">email</value>
893
+ </attribute>
894
+ </define>
895
+ <define name="input.email.attrs.value.single">
896
+ <attribute name="value">
897
+ <ref name="form.data.emailaddress"/>
898
+ </attribute>
899
+ </define>
900
+ <define name="input.email.attrs.value.multiple">
901
+ <attribute name="value">
902
+ <ref name="form.data.emailaddresslist"/>
903
+ </attribute>
904
+ </define>
905
+ <define name="input.elem" combine="choice">
906
+ <ref name="input.email.elem"/>
907
+ </define>
908
+ <define name="input.url.elem">
909
+ <a:documentation>IRI: &lt;input type='url'&gt;</a:documentation>
910
+ <element name="input">
911
+ <ref name="input.url.attrs"/>
912
+ </element>
913
+ </define>
914
+ <define name="input.url.attrs">
915
+ <interleave>
916
+ <ref name="common.attrs"/>
917
+ <ref name="common-form.attrs"/>
918
+ <ref name="input.url.attrs.type"/>
919
+ <optional>
920
+ <ref name="input.attrs.autocomplete"/>
921
+ </optional>
922
+ <optional>
923
+ <ref name="shared-form.attrs.autofocus"/>
924
+ </optional>
925
+ <optional>
926
+ <ref name="input.attrs.list"/>
927
+ </optional>
928
+ <optional>
929
+ <ref name="shared-form.attrs.maxlength"/>
930
+ </optional>
931
+ <optional>
932
+ <ref name="shared-form.attrs.pattern"/>
933
+ </optional>
934
+ <optional>
935
+ <ref name="shared-form.attrs.readonly"/>
936
+ </optional>
937
+ <optional>
938
+ <ref name="shared-form.attrs.required"/>
939
+ </optional>
940
+ <optional>
941
+ <ref name="shared-form.attrs.size"/>
942
+ </optional>
943
+ <optional>
944
+ <ref name="shared-form.attrs.placeholder"/>
945
+ </optional>
946
+ <optional>
947
+ <ref name="input.url.attrs.value"/>
948
+ </optional>
949
+ <optional>
950
+ <ref name="common.attrs.aria.implicit.input"/>
951
+ </optional>
952
+ </interleave>
953
+ </define>
954
+ <define name="input.url.attrs.type">
955
+ <attribute name="type">
956
+ <value type="string">url</value>
957
+ </attribute>
958
+ </define>
959
+ <define name="input.url.attrs.value">
960
+ <attribute name="value">
961
+ <choice>
962
+ <value type="string"/>
963
+ <ref name="common.data.uri.absolute"/>
964
+ </choice>
965
+ </attribute>
966
+ </define>
967
+ <define name="input.elem" combine="choice">
968
+ <ref name="input.url.elem"/>
969
+ </define>
970
+ <define name="input.search.elem">
971
+ <a:documentation>Search: &lt;input type='search'&gt;</a:documentation>
972
+ <element name="input">
973
+ <ref name="input.search.attrs"/>
974
+ </element>
975
+ </define>
976
+ <define name="input.search.attrs">
977
+ <interleave>
978
+ <ref name="common.attrs"/>
979
+ <ref name="common-form.attrs"/>
980
+ <ref name="input.search.attrs.type"/>
981
+ <optional>
982
+ <ref name="input.attrs.autocomplete"/>
983
+ </optional>
984
+ <optional>
985
+ <ref name="shared-form.attrs.autofocus"/>
986
+ </optional>
987
+ <optional>
988
+ <ref name="input.attrs.list"/>
989
+ </optional>
990
+ <optional>
991
+ <ref name="shared-form.attrs.maxlength"/>
992
+ </optional>
993
+ <optional>
994
+ <ref name="shared-form.attrs.pattern"/>
995
+ </optional>
996
+ <optional>
997
+ <ref name="shared-form.attrs.readonly"/>
998
+ </optional>
999
+ <optional>
1000
+ <ref name="shared-form.attrs.required"/>
1001
+ </optional>
1002
+ <optional>
1003
+ <ref name="shared-form.attrs.size"/>
1004
+ </optional>
1005
+ <optional>
1006
+ <ref name="shared-form.attrs.placeholder"/>
1007
+ </optional>
1008
+ <optional>
1009
+ <ref name="shared-form.attrs.dirname"/>
1010
+ </optional>
1011
+ <optional>
1012
+ <ref name="input.search.attrs.value"/>
1013
+ </optional>
1014
+ <optional>
1015
+ <ref name="common.attrs.aria.implicit.input"/>
1016
+ </optional>
1017
+ </interleave>
1018
+ </define>
1019
+ <define name="input.search.attrs.type">
1020
+ <attribute name="type">
1021
+ <value type="string">search</value>
1022
+ </attribute>
1023
+ </define>
1024
+ <define name="input.search.attrs.value">
1025
+ <attribute name="value">
1026
+ <ref name="form.data.stringwithoutlinebreaks"/>
1027
+ </attribute>
1028
+ </define>
1029
+ <define name="input.elem" combine="choice">
1030
+ <ref name="input.search.elem"/>
1031
+ </define>
1032
+ <define name="input.tel.elem">
1033
+ <a:documentation>Telephone Number: &lt;input type='tel'&gt;</a:documentation>
1034
+ <element name="input">
1035
+ <ref name="input.tel.attrs"/>
1036
+ </element>
1037
+ </define>
1038
+ <define name="input.tel.attrs">
1039
+ <interleave>
1040
+ <ref name="common.attrs"/>
1041
+ <ref name="common-form.attrs"/>
1042
+ <ref name="input.tel.attrs.type"/>
1043
+ <optional>
1044
+ <ref name="input.attrs.autocomplete"/>
1045
+ </optional>
1046
+ <optional>
1047
+ <ref name="shared-form.attrs.autofocus"/>
1048
+ </optional>
1049
+ <optional>
1050
+ <ref name="input.attrs.list"/>
1051
+ </optional>
1052
+ <optional>
1053
+ <ref name="shared-form.attrs.maxlength"/>
1054
+ </optional>
1055
+ <optional>
1056
+ <ref name="shared-form.attrs.pattern"/>
1057
+ </optional>
1058
+ <optional>
1059
+ <ref name="shared-form.attrs.readonly"/>
1060
+ </optional>
1061
+ <optional>
1062
+ <ref name="shared-form.attrs.required"/>
1063
+ </optional>
1064
+ <optional>
1065
+ <ref name="shared-form.attrs.size"/>
1066
+ </optional>
1067
+ <optional>
1068
+ <ref name="shared-form.attrs.placeholder"/>
1069
+ </optional>
1070
+ <optional>
1071
+ <ref name="input.tel.attrs.value"/>
1072
+ </optional>
1073
+ <optional>
1074
+ <ref name="common.attrs.aria.implicit.input"/>
1075
+ </optional>
1076
+ </interleave>
1077
+ </define>
1078
+ <define name="input.tel.attrs.type">
1079
+ <attribute name="type">
1080
+ <value type="string">tel</value>
1081
+ </attribute>
1082
+ </define>
1083
+ <define name="input.tel.attrs.value">
1084
+ <attribute name="value">
1085
+ <ref name="form.data.stringwithoutlinebreaks"/>
1086
+ </attribute>
1087
+ </define>
1088
+ <define name="input.elem" combine="choice">
1089
+ <ref name="input.tel.elem"/>
1090
+ </define>
1091
+ <define name="input.color.elem">
1092
+ <a:documentation>Color: &lt;input type='color'&gt;</a:documentation>
1093
+ <element name="input">
1094
+ <ref name="input.color.attrs"/>
1095
+ </element>
1096
+ </define>
1097
+ <define name="input.color.attrs">
1098
+ <interleave>
1099
+ <ref name="common.attrs"/>
1100
+ <ref name="common-form.attrs"/>
1101
+ <ref name="input.color.attrs.type"/>
1102
+ <optional>
1103
+ <ref name="input.attrs.autocomplete"/>
1104
+ </optional>
1105
+ <optional>
1106
+ <ref name="shared-form.attrs.autofocus"/>
1107
+ </optional>
1108
+ <optional>
1109
+ <ref name="input.attrs.list"/>
1110
+ </optional>
1111
+ <optional>
1112
+ <ref name="input.color.attrs.value"/>
1113
+ </optional>
1114
+ <optional>
1115
+ <ref name="common.attrs.aria.implicit.input"/>
1116
+ </optional>
1117
+ </interleave>
1118
+ </define>
1119
+ <define name="input.color.attrs.type">
1120
+ <attribute name="type">
1121
+ <value type="string">color</value>
1122
+ </attribute>
1123
+ </define>
1124
+ <define name="input.color.attrs.value">
1125
+ <attribute name="value">
1126
+ <choice>
1127
+ <value type="string"/>
1128
+ <ref name="form.data.color"/>
1129
+ </choice>
1130
+ </attribute>
1131
+ </define>
1132
+ <define name="input.elem" combine="choice">
1133
+ <ref name="input.color.elem"/>
1134
+ </define>
1135
+ <define name="output.elem">
1136
+ <a:documentation>Form Output: &lt;output&gt;</a:documentation>
1137
+ <element name="output">
1138
+ <interleave>
1139
+ <ref name="output.inner"/>
1140
+ <ref name="output.attrs"/>
1141
+ </interleave>
1142
+ </element>
1143
+ </define>
1144
+ <define name="output.attrs">
1145
+ <interleave>
1146
+ <ref name="common.attrs"/>
1147
+ <optional>
1148
+ <ref name="common-form.attrs.name"/>
1149
+ </optional>
1150
+ <optional>
1151
+ <ref name="common-form.attrs.form"/>
1152
+ </optional>
1153
+ <optional>
1154
+ <ref name="output.attrs.for"/>
1155
+ </optional>
1156
+ <optional>
1157
+ <ref name="common.attrs.aria.implicit.region"/>
1158
+ </optional>
1159
+ </interleave>
1160
+ </define>
1161
+ <define name="output.attrs.for">
1162
+ <attribute name="for">
1163
+ <ref name="common.data.idrefs"/>
1164
+ <!-- REVISIT spec says space- -not whitespace -->
1165
+ </attribute>
1166
+ </define>
1167
+ <define name="output.inner">
1168
+ <ref name="common.inner.phrasing"/>
1169
+ </define>
1170
+ <define name="common.elem.phrasing" combine="choice">
1171
+ <ref name="output.elem"/>
1172
+ </define>
1173
+ <define name="textarea.attrs.rows-and-cols-wf1.inner" combine="interleave">
1174
+ <a:documentation>Text Area: &lt;textarea&gt;, extensions</a:documentation>
1175
+ <notAllowed/>
1176
+ </define>
1177
+ <define name="textarea.attrs.rows-and-cols-wf1" combine="choice">
1178
+ <empty/>
1179
+ </define>
1180
+ <define name="textarea.attrs" combine="interleave">
1181
+ <interleave>
1182
+ <optional>
1183
+ <ref name="shared-form.attrs.maxlength"/>
1184
+ </optional>
1185
+ <optional>
1186
+ <ref name="shared-form.attrs.autofocus"/>
1187
+ </optional>
1188
+ <optional>
1189
+ <ref name="shared-form.attrs.required"/>
1190
+ </optional>
1191
+ <optional>
1192
+ <ref name="shared-form.attrs.placeholder"/>
1193
+ </optional>
1194
+ <optional>
1195
+ <ref name="shared-form.attrs.dirname"/>
1196
+ </optional>
1197
+ <optional>
1198
+ <ref name="textarea.attrs.rows"/>
1199
+ </optional>
1200
+ <choice>
1201
+ <interleave>
1202
+ <ref name="textarea.attrs.wrap.hard"/>
1203
+ <ref name="textarea.attrs.cols"/>
1204
+ </interleave>
1205
+ <interleave>
1206
+ <optional>
1207
+ <ref name="textarea.attrs.wrap.soft"/>
1208
+ </optional>
1209
+ <optional>
1210
+ <ref name="textarea.attrs.cols"/>
1211
+ </optional>
1212
+ </interleave>
1213
+ </choice>
1214
+ </interleave>
1215
+ </define>
1216
+ <define name="textarea.attrs.wrap.hard">
1217
+ <attribute name="wrap">
1218
+ <value type="string">hard</value>
1219
+ </attribute>
1220
+ </define>
1221
+ <define name="textarea.attrs.wrap.soft">
1222
+ <attribute name="wrap">
1223
+ <value type="string">soft</value>
1224
+ </attribute>
1225
+ </define>
1226
+ <!-- REVISIT should the options in datalist be non-selectable? -->
1227
+ <define name="datalist.elem">
1228
+ <a:documentation>List of Prefill Data: &lt;datalist&gt;</a:documentation>
1229
+ <element name="datalist">
1230
+ <interleave>
1231
+ <ref name="datalist.inner"/>
1232
+ <ref name="datalist.attrs"/>
1233
+ </interleave>
1234
+ </element>
1235
+ </define>
1236
+ <define name="datalist.inner">
1237
+ <interleave>
1238
+ <zeroOrMore>
1239
+ <ref name="option.elem"/>
1240
+ </zeroOrMore>
1241
+ <ref name="common.inner.phrasing"/>
1242
+ </interleave>
1243
+ </define>
1244
+ <define name="datalist.attrs">
1245
+ <ref name="common.attrs"/>
1246
+ </define>
1247
+ <define name="common.elem.phrasing" combine="choice">
1248
+ <ref name="datalist.elem"/>
1249
+ </define>
1250
+ <define name="button.submit.attrs" combine="interleave">
1251
+ <a:documentation>Complex Submit Button: &lt;button type='submit'&gt;, extensions</a:documentation>
1252
+ <interleave>
1253
+ <optional>
1254
+ <ref name="shared-form.attrs.formaction"/>
1255
+ </optional>
1256
+ <optional>
1257
+ <ref name="shared-form.attrs.autofocus"/>
1258
+ </optional>
1259
+ <optional>
1260
+ <ref name="shared-form.attrs.formenctype"/>
1261
+ </optional>
1262
+ <optional>
1263
+ <ref name="shared-form.attrs.formmethod"/>
1264
+ </optional>
1265
+ <optional>
1266
+ <ref name="shared-form.attrs.formtarget"/>
1267
+ </optional>
1268
+ <optional>
1269
+ <ref name="shared-form.attrs.formnovalidate"/>
1270
+ </optional>
1271
+ </interleave>
1272
+ </define>
1273
+ <define name="button.reset.attrs" combine="interleave">
1274
+ <a:documentation>Complex Reset Button: &lt;button type='reset'&gt;, extensions</a:documentation>
1275
+ <optional>
1276
+ <ref name="shared-form.attrs.autofocus"/>
1277
+ </optional>
1278
+ </define>
1279
+ <define name="button.button.attrs" combine="interleave">
1280
+ <a:documentation>Complex Push Button: &lt;button type='button'&gt;, extensions</a:documentation>
1281
+ <optional>
1282
+ <ref name="shared-form.attrs.autofocus"/>
1283
+ </optional>
1284
+ </define>
1285
+ <define name="form.attrs" combine="interleave">
1286
+ <a:documentation>Form: &lt;form&gt;, extensions</a:documentation>
1287
+ <interleave>
1288
+ <optional>
1289
+ <ref name="form.attrs.novalidate"/>
1290
+ </optional>
1291
+ <optional>
1292
+ <ref name="form.attrs.target"/>
1293
+ </optional>
1294
+ <optional>
1295
+ <ref name="form.attrs.autocomplete"/>
1296
+ </optional>
1297
+ </interleave>
1298
+ </define>
1299
+ <define name="form.attrs.novalidate">
1300
+ <attribute name="novalidate">
1301
+ <choice>
1302
+ <value type="string">novalidate</value>
1303
+ <value type="string"/>
1304
+ </choice>
1305
+ </attribute>
1306
+ </define>
1307
+ <define name="form.attrs.target">
1308
+ <attribute name="target">
1309
+ <ref name="common.data.browsing-context-or-keyword"/>
1310
+ </attribute>
1311
+ </define>
1312
+ <define name="form.attrs.autocomplete">
1313
+ <attribute name="autocomplete">
1314
+ <choice>
1315
+ <value type="string">on</value>
1316
+ <value type="string">off</value>
1317
+ </choice>
1318
+ </attribute>
1319
+ </define>
1320
+ <!-- REVISIT should this be case-insensitive in conforming XHTML documents? -->
1321
+ <define name="form.attrs.enctype.data" combine="choice">
1322
+ <value type="string">text/plain</value>
1323
+ </define>
1324
+ <define name="fieldset.attrs" combine="interleave">
1325
+ <a:documentation>Fieldset: &lt;fieldset&gt;, extensions</a:documentation>
1326
+ <ref name="common-form.attrs"/>
1327
+ </define>
1328
+ <define name="label.attrs" combine="interleave">
1329
+ <a:documentation>Label: &lt;label&gt;, extensions</a:documentation>
1330
+ <optional>
1331
+ <ref name="common-form.attrs.form"/>
1332
+ </optional>
1333
+ </define>
1334
+ <define name="keygen.elem">
1335
+ <a:documentation>Key-pair generator/input control: &lt;keygen&gt;</a:documentation>
1336
+ <element name="keygen">
1337
+ <interleave>
1338
+ <ref name="keygen.inner"/>
1339
+ <ref name="keygen.attrs"/>
1340
+ </interleave>
1341
+ </element>
1342
+ </define>
1343
+ <define name="keygen.attrs">
1344
+ <interleave>
1345
+ <ref name="common.attrs"/>
1346
+ <optional>
1347
+ <ref name="keygen.attrs.challenge"/>
1348
+ </optional>
1349
+ <optional>
1350
+ <ref name="keygen.attrs.keytype"/>
1351
+ </optional>
1352
+ <optional>
1353
+ <ref name="shared-form.attrs.autofocus"/>
1354
+ </optional>
1355
+ <optional>
1356
+ <ref name="common-form.attrs"/>
1357
+ </optional>
1358
+ </interleave>
1359
+ <!-- REVISIT which ARIA attributes needed here -->
1360
+ </define>
1361
+ <define name="keygen.attrs.challenge">
1362
+ <attribute name="challenge">
1363
+ <data type="string" datatypeLibrary=""/>
1364
+ </attribute>
1365
+ </define>
1366
+ <define name="keygen.attrs.keytype">
1367
+ <attribute name="keytype">
1368
+ <value type="string">rsa</value>
1369
+ </attribute>
1370
+ </define>
1371
+ <define name="keygen.inner">
1372
+ <empty/>
1373
+ </define>
1374
+ <define name="common.elem.phrasing" combine="choice">
1375
+ <ref name="keygen.elem"/>
1376
+ </define>
1377
+ <define name="select.attrs" combine="interleave">
1378
+ <a:documentation>Selection Menu: &lt;select&gt;, Extensions</a:documentation>
1379
+ <interleave>
1380
+ <optional>
1381
+ <ref name="shared-form.attrs.autofocus"/>
1382
+ </optional>
1383
+ <optional>
1384
+ <ref name="shared-form.attrs.required"/>
1385
+ </optional>
1386
+ </interleave>
1387
+ </define>
1388
+ </grammar>