]> code.delx.au - gnu-emacs-elpa/blob - packages/html5-schema/aria.rnc
Add 'packages/html5-schema/' from commit '6e7c7c331e7f6692be6c7d39fb9485792f0d3513'
[gnu-emacs-elpa] / packages / html5-schema / aria.rnc
1 # #####################################################################
2 ## RELAX NG Schema for HTML 5: Accessible Rich Internet Applications #
3 # #####################################################################
4 #
5 # history: http://hsivonen.iki.fi/aria-html5-bis/
6
7 # #####################################################################
8 ## ARIA
9
10 ## Global states and properties
11
12 aria.global =
13 ( aria.prop.atomic?
14 & aria.state.busy?
15 & aria.prop.controls?
16 & aria.prop.describedby?
17 & aria.state.disabled?
18 & aria.state.dropeffect?
19 & aria.prop.flowto?
20 & aria.state.grabbed?
21 & aria.prop.haspopup?
22 & aria.state.hidden?
23 & aria.state.invalid?
24 & aria.prop.label?
25 & aria.prop.labelledby?
26 & aria.prop.live?
27 & aria.prop.owns?
28 & aria.prop.relevant?
29 )
30
31 common.attrs.other &= aria.global?
32
33 ## States and Properties for Native Roles
34
35 common.attrs.aria.implicit.button |=
36 ( aria.state.expanded?
37 & aria.state.pressed?
38 )
39
40 common.attrs.aria.implicit.checkbox |=
41 ( aria.state.checked? )
42
43 common.attrs.aria.implicit.combobox |=
44 ( aria.state.expanded?
45 & aria.prop.autocomplete?
46 & aria.prop.required?
47 & aria.prop.activedescendant?
48 )
49
50 common.attrs.aria.implicit.dialog |=
51 ( aria.state.expanded? )
52
53 common.attrs.aria.implicit.document |=
54 ( aria.state.expanded? )
55
56 common.attrs.aria.implicit.form |=
57 ( aria.state.expanded? )
58
59 common.attrs.aria.implicit.group |=
60 ( aria.state.expanded?
61 & aria.prop.activedescendant?
62 )
63
64 common.attrs.aria.implicit.heading |=
65 ( aria.state.expanded?
66 & aria.prop.level?
67 )
68
69 common.attrs.aria.implicit.img |=
70 ( aria.state.expanded? )
71
72 common.attrs.aria.implicit.link |=
73 ( aria.state.expanded? )
74
75 common.attrs.aria.implicit.listbox |=
76 ( aria.prop.multiselectable?
77 & aria.prop.required?
78 & aria.prop.activedescendant?
79 & aria.state.expanded?
80 )
81
82 common.attrs.aria.implicit.listitem |=
83 ( aria.prop.level?
84 & aria.prop.posinset?
85 & aria.prop.setsize?
86 & aria.state.expanded?
87 )
88
89 common.attrs.aria.implicit.option |=
90 ( aria.prop.posinset?
91 & aria.prop.setsize?
92 & aria.state.checked?
93 & aria.state.selected?
94 )
95
96 common.attrs.aria.implicit.progressbar |=
97 ( aria.prop.valuemax?
98 & aria.prop.valuemin?
99 & aria.prop.valuenow?
100 & aria.prop.valuetext?
101 )
102
103 common.attrs.aria.implicit.radio |=
104 ( aria.prop.posinset?
105 & aria.prop.setsize?
106 & aria.state.checked?
107 & aria.state.selected?
108 )
109
110 common.attrs.aria.implicit.slider |=
111 ( aria.prop.valuemax?
112 & aria.prop.valuemin?
113 & aria.prop.valuenow?
114 & aria.prop.valuetext?
115 & aria.prop.orientation?
116 )
117
118 common.attrs.aria.implicit.spinbutton |=
119 ( aria.prop.valuemax?
120 & aria.prop.valuemin?
121 & aria.prop.valuenow?
122 & aria.prop.valuetext?
123 & aria.prop.required?
124 )
125
126 common.attrs.aria.implicit.textbox |=
127 ( aria.prop.activedescendant?
128 & aria.prop.autocomplete?
129 & aria.prop.multiline?
130 & aria.prop.readonly?
131 & aria.prop.required?
132 )
133
134 common.attrs.aria.implicit.toolbar |=
135 ( aria.state.expanded?
136 & aria.prop.activedescendant?
137 )
138
139 common.attrs.aria.implicit.column-or-row-header |=
140 ( aria.prop.sort?
141 & aria.prop.readonly?
142 & aria.prop.required?
143 & aria.state.selected?
144 & aria.state.expanded?
145 )
146
147 #common.attrs.aria.implicit.select |=
148 # ( aria.state.invalid?
149 # & aria.prop.required?
150 # & aria.prop.atomic?
151 # & aria.state.busy?
152 # & aria.prop.channel?
153 # & aria.prop.controls?
154 # & aria.prop.live?
155 # & aria.prop.relevant?
156 # )
157
158 # section
159 # |
160 # |_ region
161 # |
162 # |_ article
163 # |
164 # |_ landmark
165 # | |_ banner
166 # | |_ complementary
167 # | |_ contentinfo
168 # | |_ main
169 # | |_ navigation
170 # |
171 # |_ list
172 # |
173 # |_ status
174
175 common.attrs.aria.implicit.section |=
176 ( aria.state.expanded? )
177
178 common.attrs.aria.implicit.region |= common.attrs.aria.implicit.section
179
180 common.attrs.aria.implicit.article |= common.attrs.aria.implicit.region
181 common.attrs.aria.implicit.landmark |= common.attrs.aria.implicit.region
182 common.attrs.aria.implicit.list |= common.attrs.aria.implicit.region
183 common.attrs.aria.implicit.status |= common.attrs.aria.implicit.region
184
185 common.attrs.aria.implicit.banner |= common.attrs.aria.implicit.landmark
186 common.attrs.aria.implicit.complementary |= common.attrs.aria.implicit.landmark
187 common.attrs.aria.implicit.contentinfo |= common.attrs.aria.implicit.landmark
188 common.attrs.aria.implicit.main |= common.attrs.aria.implicit.landmark
189 common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark
190
191 # #####################################################################
192 ## States
193
194 ## busy
195 aria.state.busy =
196 attribute aria-busy
197 { string "true"
198 | string "false" #default
199 }
200
201 ## checked
202 aria.state.checked =
203 attribute aria-checked
204 { string "true"
205 | string "false"
206 | string "mixed"
207 | string "undefined" #default
208 }
209
210 ## disabled
211 aria.state.disabled =
212 attribute aria-disabled
213 { string "true"
214 | string "false" #default
215 }
216
217 ## dropeffect
218 aria.state.dropeffect =
219 attribute aria-dropeffect
220 { token "none" #default
221 | token "popup"
222 | token "execute"
223 | list
224 { ( string "copy" )
225 , ( string "execute" )?
226 }
227 | list
228 { ( string "move" )
229 , ( string "execute" )?
230 }
231 | list
232 { ( string "link" )
233 , ( string "execute" )?
234 }
235 | list
236 { ( string "execute" )
237 , ( string "copy" )
238 }
239 | list
240 { ( string "execute" )
241 , ( string "move" )
242 }
243 | list
244 { ( string "execute" )
245 , ( string "link" )
246 }
247 }
248
249 ## expanded
250 aria.state.expanded =
251 attribute aria-expanded
252 { string "true"
253 | string "false"
254 | string "undefined" #default
255 }
256
257 ## grabbed
258 aria.state.grabbed =
259 attribute aria-grabbed
260 { string "true"
261 | string "false"
262 | string "undefined" #default
263 }
264
265 ## hidden
266 aria.state.hidden =
267 attribute aria-hidden
268 { string "true"
269 | string "false" #default
270 }
271
272 ## invalid
273 aria.state.invalid =
274 attribute aria-invalid
275 { string "true"
276 | string "false" #default
277 | string "grammar"
278 | string "spelling"
279 }
280
281 ## pressed
282 aria.state.pressed =
283 attribute aria-pressed
284 { string "true"
285 | string "false"
286 | string "mixed"
287 | string "undefined" #default
288 }
289
290 ## selected
291 aria.state.selected =
292 attribute aria-selected
293 { string "true"
294 | string "false"
295 | string "undefined" #default
296 }
297
298
299
300 # #####################################################################
301 ## Properties
302
303 ## activedescendant
304 aria.prop.activedescendant =
305 attribute aria-activedescendant {
306 common.data.idref #REVISIT add Schematron check
307 }
308
309 ## atomic
310 aria.prop.atomic =
311 attribute aria-atomic
312 { string "true"
313 | string "false" #default
314 }
315
316 ## autocomplete
317 aria.prop.autocomplete =
318 attribute aria-autocomplete
319 { string "inline"
320 | string "list"
321 | string "both"
322 | string "none" #default
323 }
324
325 ## controls
326 aria.prop.controls =
327 attribute aria-controls {
328 common.data.idrefs #REVISIT add Schematron check
329 }
330
331 ## describedby
332 aria.prop.describedby =
333 attribute aria-describedby {
334 common.data.idrefs #REVISIT add Schematron check
335 }
336
337 ## flowto
338 aria.prop.flowto =
339 attribute aria-flowto {
340 common.data.idrefs #REVISIT add Schematron check
341 }
342
343 ## haspopup
344 aria.prop.haspopup =
345 attribute aria-haspopup
346 { string "true" #REVISIT check owns or descendant
347 | string "false" #default
348 }
349
350 ## label
351 aria.prop.label =
352 attribute aria-label {
353 string
354 }
355
356 ## labelledby
357 aria.prop.labelledby =
358 attribute aria-labelledby {
359 common.data.idrefs #REVISIT add Schematron check
360 }
361
362 ## level
363 aria.prop.level =
364 attribute aria-level {
365 common.data.integer.positive
366 }
367
368 ## live
369 aria.prop.live =
370 attribute aria-live
371 { string "off" #default
372 | string "polite"
373 | string "assertive"
374 }
375
376 ## multiline
377 aria.prop.multiline =
378 attribute aria-multiline
379 { string "true"
380 | string "false" #default
381 }
382
383 ## multiselectable
384 aria.prop.multiselectable =
385 attribute aria-multiselectable
386 { string "true"
387 | string "false" #default
388 }
389
390 ## orientation
391 aria.prop.orientation =
392 attribute aria-orientation
393 { string "vertical"
394 | string "horizontal" #default
395 }
396
397 ## owns
398 aria.prop.owns =
399 attribute aria-owns {
400 common.data.idrefs #REVISIT add Schematron check
401 }
402
403 ## posinset
404 aria.prop.posinset =
405 attribute aria-posinset {
406 common.data.integer.positive
407 }
408
409 ## readonly
410 aria.prop.readonly =
411 attribute aria-readonly
412 { string "true"
413 | string "false" #default
414 }
415 common.attrs.aria.prop.readonly |= aria.prop.readonly
416
417 ## relevant
418 aria.prop.relevant =
419 attribute aria-relevant
420 { token "all"
421 | list
422 { ( string "additions" )
423 , ( string "removals" )?
424 , ( string "text" )?
425 }
426 | list
427 { ( string "additions" )
428 , ( string "text" )?
429 , ( string "removals" )?
430 }
431 | list
432 { ( string "removals" )
433 , ( string "additions" )?
434 , ( string "text" )?
435 }
436 | list
437 { ( string "removals" )
438 , ( string "text" )?
439 , ( string "additions" )?
440 }
441 | list
442 { ( string "text" )
443 , ( string "additions" )?
444 , ( string "removals" )?
445 }
446 | list
447 { ( string "text" )
448 , ( string "removals" )?
449 , ( string "additions" )?
450 }
451 }
452
453 ## required
454 aria.prop.required =
455 attribute aria-required
456 { string "true"
457 | string "false" #default
458 }
459
460 ## setsize
461 aria.prop.setsize =
462 attribute aria-setsize {
463 common.data.integer.non-negative
464 }
465
466 ## sort
467 aria.prop.sort =
468 attribute aria-sort
469 { string "ascending"
470 | string "descending"
471 | string "none" #default
472 | string "other"
473 }
474
475 ## valuemax
476 aria.prop.valuemax =
477 attribute aria-valuemax {
478 common.data.float #REVISIT
479 }
480
481 ## valuemin
482 aria.prop.valuemin =
483 attribute aria-valuemin {
484 common.data.float #REVISIT
485 }
486
487 ## valuenow
488 aria.prop.valuenow =
489 attribute aria-valuenow {
490 common.data.float #REVISIT
491 }
492
493 ## valuetext
494 aria.prop.valuetext =
495 attribute aria-valuetext {
496 string
497 }
498
499 # #####################################################################
500 ## Roles
501
502 ## alert
503 aria.alert =
504 ( aria.role.alert
505 & aria.state.expanded?
506 )
507 aria.role.alert =
508 attribute role { string "alert" }
509
510 common.attrs.aria |= aria.alert
511 common.attrs.aria.role.alert |= aria.alert
512
513 ## alertdialog
514 aria.alertdialog =
515 ( aria.role.alertdialog
516 & aria.state.expanded?
517 )
518 aria.role.alertdialog =
519 attribute role { string "alertdialog" }
520
521 common.attrs.aria |= aria.alertdialog
522 common.attrs.aria.role.alertdialog |= aria.alertdialog
523
524 ## application
525 aria.application =
526 ( aria.role.application
527 & aria.state.expanded?
528 )
529 aria.role.application =
530 attribute role { string "application" }
531
532 common.attrs.aria |= aria.application
533 common.attrs.aria.landmark.application |= aria.application
534
535 ## article
536 aria.article =
537 ( aria.role.article
538 & aria.state.expanded?
539 )
540 aria.role.article =
541 attribute role { string "article" }
542
543 common.attrs.aria |= aria.article
544 common.attrs.aria.landmark.article |= aria.article
545
546 ## banner
547 aria.banner =
548 ( aria.role.banner
549 & aria.state.expanded?
550 )
551 aria.role.banner =
552 attribute role { string "banner" }
553
554 common.attrs.aria |= aria.banner
555 common.attrs.aria.landmark.banner |= aria.banner
556
557 ## button
558 aria.button =
559 ( aria.role.button
560 & aria.state.expanded?
561 & aria.state.pressed? # not inherited
562 )
563 aria.role.button =
564 attribute role { string "button" }
565
566 common.attrs.aria |= aria.button
567 common.attrs.aria.role.button |= aria.button
568
569 ## checkbox
570 aria.checkbox =
571 ( aria.role.checkbox
572 & aria.state.checked #required!
573 )
574 aria.role.checkbox =
575 attribute role { string "checkbox" }
576
577 common.attrs.aria |= aria.checkbox
578 common.attrs.aria.role.checkbox |= aria.checkbox
579
580 # columnheader
581 aria.columnheader =
582 ( aria.role.columnheader
583 & aria.prop.sort? # not inherited
584 & aria.prop.readonly? # not inherited
585 & aria.state.selected? # not inherited
586 & aria.state.expanded?
587 & aria.prop.required?
588 )
589 aria.role.columnheader =
590 attribute role { string "columnheader" }
591
592 common.attrs.aria |= aria.columnheader
593
594 ## combobox
595 aria.combobox =
596 ( aria.role.combobox
597 & aria.prop.activedescendant?
598 & aria.state.expanded #required!
599 & aria.prop.autocomplete?
600 & aria.prop.required?
601 )
602 aria.role.combobox =
603 attribute role { string "combobox" }
604
605 common.attrs.aria |= aria.combobox
606 common.attrs.aria.role.combobox |= aria.combobox
607
608 ## complementary
609 aria.complementary =
610 ( aria.role.complementary
611 & aria.state.expanded?
612 )
613 aria.role.complementary =
614 attribute role { string "complementary" }
615
616 common.attrs.aria |= aria.complementary
617 common.attrs.aria.landmark.complementary |= aria.complementary
618
619 ## contentinfo
620 aria.contentinfo =
621 ( aria.role.contentinfo
622 & aria.state.expanded?
623 )
624 aria.role.contentinfo =
625 attribute role { string "contentinfo" }
626
627 common.attrs.aria |= aria.contentinfo
628 common.attrs.aria.landmark.contentinfo |= aria.contentinfo
629
630 ## definition
631 aria.definition =
632 ( aria.role.definition
633 & aria.state.expanded?
634 )
635 aria.role.definition =
636 attribute role { string "definition" }
637
638 common.attrs.aria |= aria.definition
639
640 ## dialog
641 aria.dialog =
642 ( aria.role.dialog
643 & aria.state.expanded?
644 )
645 aria.role.dialog =
646 attribute role { string "dialog" }
647
648 common.attrs.aria |= aria.dialog
649 common.attrs.aria.role.dialog |= aria.dialog
650
651 ## directory
652 aria.directory =
653 ( aria.role.directory
654 & aria.state.expanded?
655 )
656 aria.role.directory =
657 attribute role { string "directory" }
658
659 common.attrs.aria |= aria.directory
660 common.attrs.aria.role.directory |= aria.directory
661
662 ## document
663 aria.document =
664 ( aria.role.document
665 & aria.state.expanded?
666 )
667 aria.role.document =
668 attribute role { string "document" }
669
670 common.attrs.aria |= aria.document
671 common.attrs.aria.landmark.document |= aria.document
672
673 ## form
674 aria.form =
675 ( aria.role.form
676 & aria.state.expanded?
677 )
678 aria.role.form =
679 attribute role { string "form" }
680
681 common.attrs.aria |= aria.form
682 common.attrs.aria.landmark.form |= aria.form
683
684 ## grid
685 aria.grid =
686 ( aria.role.grid
687 & aria.prop.level? # not inherited
688 & aria.prop.multiselectable? # not inherited
689 & aria.prop.readonly? # not inherited
690 & aria.prop.activedescendant?
691 & aria.state.expanded?
692 )
693 aria.role.grid =
694 attribute role { string "grid" }
695
696 common.attrs.aria |= aria.grid
697
698 ## gridcell
699 aria.gridcell =
700 ( aria.role.gridcell
701 & aria.prop.level? # net inherited
702 & aria.prop.readonly? # not inherited
703 & aria.state.selected? # not inherited
704 & aria.state.expanded?
705 & aria.prop.required?
706 )
707 aria.role.gridcell =
708 attribute role { string "gridcell" }
709
710 common.attrs.aria |= aria.gridcell
711
712 ## group
713 aria.group =
714 ( aria.role.group
715 & aria.prop.activedescendant? # not inherited
716 & aria.state.expanded? # not inherited
717 )
718 aria.role.group =
719 attribute role { string "group" }
720
721 common.attrs.aria |= aria.group
722 common.attrs.aria.role.group |= aria.group
723
724 ## heading
725 aria.heading =
726 ( aria.role.heading
727 & aria.prop.level ? # not inherited
728 & aria.state.expanded?
729 )
730 aria.role.heading =
731 attribute role { string "heading" }
732
733 common.attrs.aria |= aria.heading
734 common.attrs.aria.role.heading |= aria.heading
735
736 ## img
737 aria.img =
738 ( aria.role.img
739 & aria.state.expanded?
740 )
741 aria.role.img =
742 attribute role { string "img" }
743
744 common.attrs.aria |= aria.img
745 common.attrs.aria.role.img |= aria.img
746
747 ## link
748 aria.link =
749 ( aria.role.link
750 & aria.state.expanded?
751 )
752 aria.role.link =
753 attribute role { string "link" }
754
755 common.attrs.aria |= aria.link
756 common.attrs.aria.role.link |= aria.link
757
758 ## list
759 aria.list =
760 ( aria.role.list
761 & aria.state.expanded?
762 )
763 aria.role.list =
764 attribute role { string "list" }
765
766 common.attrs.aria |= aria.list
767 common.attrs.aria.role.list |= aria.list
768
769 ## listbox
770 aria.listbox =
771 ( aria.role.listbox
772 & aria.prop.multiselectable? # not inherited
773 & aria.prop.required?
774 & aria.prop.activedescendant?
775 & aria.state.expanded?
776 )
777 aria.role.listbox =
778 attribute role { string "listbox" }
779
780 common.attrs.aria |= aria.listbox
781 common.attrs.aria.role.listbox |= aria.listbox
782
783 ## listitem
784 aria.listitem =
785 ( aria.role.listitem
786 & aria.prop.posinset? # not inherited
787 & aria.prop.setsize? # not inherited
788 & aria.prop.level? # not inherited
789 & aria.state.expanded?
790 )
791 aria.role.listitem =
792 attribute role { string "listitem" }
793
794 common.attrs.aria |= aria.listitem
795 common.attrs.aria.role.listitem |= aria.listitem
796
797 ## log
798 aria.log =
799 ( aria.role.log
800 & aria.state.expanded?
801 )
802 aria.role.log =
803 attribute role { string "log" }
804
805 common.attrs.aria |= aria.log
806 common.attrs.aria.role.log |= aria.log
807
808 ## main
809 aria.main =
810 ( aria.role.main
811 & aria.state.expanded?
812 )
813 aria.role.main =
814 attribute role { string "main" }
815
816 common.attrs.aria |= aria.main
817 common.attrs.aria.landmark.main |= aria.main
818
819 ## marquee
820 aria.marquee =
821 ( aria.role.marquee
822 & aria.state.expanded?
823 )
824 aria.role.marquee =
825 attribute role { string "marquee" }
826
827 common.attrs.aria |= aria.marquee
828 common.attrs.aria.role.marquee |= aria.marquee
829
830 ## math
831 aria.math =
832 ( aria.role.math
833 & aria.state.expanded?
834 )
835 aria.role.math =
836 attribute role { string "math" }
837
838 common.attrs.aria |= aria.math
839
840 ## menu
841 aria.menu =
842 ( aria.role.menu
843 & aria.prop.activedescendant?
844 & aria.state.expanded?
845 )
846 aria.role.menu =
847 attribute role { string "menu" }
848
849 common.attrs.aria |= aria.menu
850 common.attrs.aria.role.menu |= aria.menu
851
852 ## menubar
853 aria.menubar =
854 ( aria.role.menubar
855 & aria.prop.activedescendant?
856 & aria.state.expanded?
857 )
858 aria.role.menubar =
859 attribute role { string "menubar" }
860
861 common.attrs.aria |= aria.menubar
862 common.attrs.aria.role.menubar |= aria.menubar
863
864
865 ## menuitem
866 aria.menuitem =
867 ( aria.role.menuitem )
868 aria.role.menuitem =
869 attribute role { string "menuitem" }
870
871 common.attrs.aria |= aria.menuitem
872 common.attrs.aria.role.menuitem |= aria.menuitem
873
874 ## menuitemcheckbox
875 aria.menuitemcheckbox =
876 ( aria.role.menuitemcheckbox
877 & aria.state.checked #required
878 )
879 aria.role.menuitemcheckbox =
880 attribute role { string "menuitemcheckbox" }
881
882 common.attrs.aria |= aria.menuitemcheckbox
883 common.attrs.aria.role.menuitemcheckbox |= aria.menuitemcheckbox
884
885 ## menuitemradio
886 aria.menuitemradio =
887 ( aria.role.menuitemradio
888 & aria.state.checked #required
889 & aria.state.selected?
890 & aria.prop.posinset?
891 & aria.prop.setsize?
892 )
893 aria.role.menuitemradio =
894 attribute role { string "menuitemradio" }
895
896 common.attrs.aria |= aria.menuitemradio
897 common.attrs.aria.role.menuitemradio |= aria.menuitemradio
898
899 ## navigation
900 aria.navigation =
901 ( aria.role.navigation
902 & aria.state.expanded?
903 )
904 aria.role.navigation =
905 attribute role { string "navigation" }
906
907 common.attrs.aria |= aria.navigation
908 common.attrs.aria.landmark.navigation |= aria.navigation
909
910 ## note
911 aria.note =
912 ( aria.role.note
913 & aria.state.expanded?
914 )
915 aria.role.note =
916 attribute role { string "note" }
917
918 common.attrs.aria |= aria.note
919 common.attrs.aria.landmark.note |= aria.note
920
921 ## option
922 aria.option =
923 ( aria.role.option
924 & aria.state.checked? # not inherited
925 & aria.state.selected? # not inherited
926 & aria.prop.posinset?
927 & aria.prop.setsize?
928 )
929 aria.role.option =
930 attribute role { string "option" }
931
932 common.attrs.aria |= aria.option
933 common.attrs.aria.role.option |= aria.option
934
935
936 ## presentation
937 aria.presentation =
938 ( aria.role.presentation
939 & aria.state.expanded?
940 )
941 aria.role.presentation =
942 attribute role { string "presentation" }
943
944 common.attrs.aria |= aria.presentation
945 common.attrs.aria.role.presentation |= aria.presentation
946
947 ## progressbar
948 aria.progressbar =
949 ( aria.role.progressbar
950 & aria.prop.valuemax? # not inherited
951 & aria.prop.valuemin? # not inherited
952 & aria.prop.valuenow? # not inherited
953 & aria.prop.valuetext? # not inherited
954 )
955 aria.role.progressbar =
956 attribute role { string "progressbar" }
957
958 common.attrs.aria |= aria.progressbar
959 common.attrs.aria.role.progressbar |= aria.progressbar
960
961 ## radio
962 aria.radio =
963 ( aria.role.radio
964 & aria.state.checked #required!
965 & aria.state.selected?
966 & aria.prop.posinset?
967 & aria.prop.setsize?
968 )
969 aria.role.radio =
970 attribute role { string "radio" }
971
972 common.attrs.aria |= aria.radio
973 common.attrs.aria.role.radio |= aria.radio
974
975 ## radiogroup
976 aria.radiogroup =
977 ( aria.role.radiogroup
978 & aria.prop.activedescendant?
979 & aria.state.expanded?
980 & aria.prop.required?
981 )
982 aria.role.radiogroup =
983 attribute role { string "radiogroup" }
984
985 common.attrs.aria |= aria.radiogroup
986
987 ## region
988 aria.region =
989 ( aria.role.region
990 & aria.state.expanded?
991 )
992 aria.role.region =
993 attribute role { string "region" }
994
995 common.attrs.aria |= aria.region
996 common.attrs.aria.role.region |= aria.region
997
998 ## row
999 aria.row =
1000 ( aria.role.row
1001 & aria.prop.level? # not inherited
1002 & aria.state.selected? # not inherited
1003 & aria.prop.activedescendant?
1004 & aria.state.expanded?
1005 )
1006 aria.role.row =
1007 attribute role { string "row" }
1008
1009 common.attrs.aria |= aria.row
1010
1011 ## rowgroup
1012 aria.rowgroup =
1013 ( aria.role.rowgroup
1014 & aria.prop.activedescendant?
1015 & aria.state.expanded?
1016 )
1017 aria.role.rowgroup =
1018 attribute role { string "rowgroup" }
1019
1020 common.attrs.aria |= aria.rowgroup
1021
1022 # rowheader
1023 aria.rowheader =
1024 ( aria.role.rowheader
1025 & aria.prop.sort? # not inherited
1026 & aria.prop.readonly? # not inherited
1027 & aria.state.selected? # not inherited
1028 & aria.state.expanded?
1029 & aria.prop.required?
1030 )
1031 aria.role.rowheader =
1032 attribute role { string "rowheader" }
1033
1034 common.attrs.aria |= aria.rowheader
1035
1036 ## scrollbar
1037 aria.scrollbar =
1038 ( aria.role.scrollbar
1039 & aria.prop.orientation
1040 & aria.prop.valuemax
1041 & aria.prop.valuemin
1042 & aria.prop.valuenow
1043 & aria.prop.valuetext?
1044 )
1045 aria.role.scrollbar =
1046 attribute role { string "scrollbar" }
1047
1048 common.attrs.aria |= aria.scrollbar
1049
1050 ## search
1051 aria.search =
1052 ( aria.role.search
1053 & aria.state.expanded?
1054 )
1055 aria.role.search =
1056 attribute role { string "search" }
1057
1058 common.attrs.aria |= aria.search
1059 common.attrs.aria.landmark.search |= aria.search
1060
1061 ## separator
1062 aria.separator =
1063 ( aria.role.separator
1064 & aria.state.expanded?
1065 & aria.prop.orientation?
1066 )
1067 aria.role.separator =
1068 attribute role { string "separator" }
1069
1070 common.attrs.aria |= aria.separator
1071 common.attrs.aria.role.separator |= aria.separator
1072
1073 ## slider
1074 aria.slider =
1075 ( aria.role.slider
1076 & aria.prop.valuemax
1077 & aria.prop.valuemin
1078 & aria.prop.valuenow
1079 & aria.prop.valuetext?
1080 & aria.prop.orientation?
1081 )
1082 aria.role.slider =
1083 attribute role { string "slider" }
1084
1085 common.attrs.aria |= aria.slider
1086 common.attrs.aria.role.slider |= aria.slider
1087
1088 ## spinbutton
1089 aria.spinbutton =
1090 ( aria.role.spinbutton
1091 & aria.prop.valuemax
1092 & aria.prop.valuemin
1093 & aria.prop.valuenow
1094 & aria.prop.valuetext?
1095 & aria.prop.required?
1096 )
1097 aria.role.spinbutton =
1098 attribute role { string "spinbutton" }
1099
1100 common.attrs.aria |= aria.spinbutton
1101 common.attrs.aria.role.spinbutton |= aria.spinbutton
1102
1103 ## status
1104 aria.status =
1105 ( aria.role.status
1106 & aria.state.expanded?
1107 )
1108 aria.role.status =
1109 attribute role { string "status" }
1110
1111 common.attrs.aria |= aria.status
1112 common.attrs.aria.role.status |= aria.status
1113
1114 ## switch
1115 aria.switch =
1116 ( aria.role.switch
1117 & aria.state.checked #required!
1118 )
1119 aria.role.switch =
1120 attribute role { string "switch" }
1121
1122 common.attrs.aria |= aria.switch
1123 common.attrs.aria.role.switch |= aria.switch
1124
1125 ## tab
1126 aria.tab =
1127 ( aria.role.tab
1128 & aria.state.selected?
1129 & aria.state.expanded?
1130 )
1131 aria.role.tab =
1132 attribute role { string "tab" }
1133
1134 common.attrs.aria |= aria.tab
1135 common.attrs.aria.role.tab |= aria.tab
1136
1137 ## tablist
1138 aria.tablist =
1139 ( aria.role.tablist
1140 & aria.prop.activedescendant?
1141 & aria.state.expanded?
1142 & aria.prop.level?
1143 & aria.prop.multiselectable?
1144 )
1145 aria.role.tablist =
1146 attribute role { string "tablist" }
1147 common.attrs.aria |= aria.tablist
1148 common.attrs.aria.role.tablist |= aria.tablist
1149
1150 ## tabpanel
1151 aria.tabpanel =
1152 ( aria.role.tabpanel
1153 & aria.state.expanded?
1154 )
1155 aria.role.tabpanel =
1156 attribute role { string "tabpanel" }
1157
1158 common.attrs.aria |= aria.tabpanel
1159 common.attrs.aria.role.tabpanel |= aria.tabpanel
1160
1161 ## textbox
1162 aria.textbox =
1163 ( aria.role.textbox
1164 & aria.prop.activedescendant?
1165 & aria.prop.autocomplete? # not inherited
1166 & aria.prop.multiline? # not inherited
1167 & aria.prop.readonly? # not inherited
1168 & aria.prop.required?
1169 )
1170 aria.role.textbox =
1171 attribute role { string "textbox" }
1172
1173 common.attrs.aria |= aria.textbox
1174 common.attrs.aria.role.textbox |= aria.textbox
1175
1176 ## timer
1177 aria.timer =
1178 ( aria.role.timer
1179 & aria.state.expanded?
1180 )
1181 aria.role.timer =
1182 attribute role { string "timer" }
1183
1184 common.attrs.aria |= aria.timer
1185
1186 ## toolbar
1187 aria.toolbar =
1188 ( aria.role.toolbar
1189 & aria.prop.activedescendant?
1190 & aria.state.expanded?
1191 )
1192 aria.role.toolbar =
1193 attribute role { string "toolbar" }
1194
1195 common.attrs.aria |= aria.toolbar
1196 common.attrs.aria.role.toolbar |= aria.toolbar
1197
1198 ## tooltip
1199 aria.tooltip =
1200 ( aria.role.tooltip
1201 & aria.state.expanded?
1202 )
1203 aria.role.tooltip =
1204 attribute role { string "tooltip" }
1205
1206 common.attrs.aria |= aria.tooltip
1207
1208 ## tree
1209 aria.tree =
1210 ( aria.role.tree
1211 & aria.prop.multiselectable? # not inherited
1212 & aria.prop.activedescendant?
1213 & aria.state.expanded?
1214 & aria.prop.required?
1215 )
1216 aria.role.tree =
1217 attribute role { string "tree" }
1218
1219 common.attrs.aria |= aria.tree
1220 common.attrs.aria.role.tree |= aria.tree
1221
1222 ## treegrid
1223 aria.treegrid =
1224 ( aria.role.treegrid
1225 & aria.prop.activedescendant?
1226 & aria.state.expanded?
1227 & aria.prop.level?
1228 & aria.prop.multiselectable?
1229 & aria.prop.readonly?
1230 & aria.prop.required?
1231 )
1232 aria.role.treegrid =
1233 attribute role { string "treegrid" }
1234
1235 common.attrs.aria |= aria.treegrid
1236
1237 ## treeitem
1238 aria.treeitem =
1239 ( aria.role.treeitem
1240 & aria.state.checked?
1241 & aria.state.expanded?
1242 & aria.prop.level?
1243 & aria.prop.posinset?
1244 & aria.state.selected?
1245 & aria.prop.setsize?
1246 )
1247 aria.role.treeitem =
1248 attribute role { string "treeitem" }
1249
1250 common.attrs.aria |= aria.treeitem
1251 common.attrs.aria.role.treeitem |= aria.treeitem