1 # #####################################################################
2 ## RELAX NG Schema for HTML 5: Accessible Rich Internet Applications #
3 # #####################################################################
5 # history: http://hsivonen.iki.fi/aria-html5-bis/
7 # #####################################################################
10 ## Global states and properties
16 & aria.prop.describedby?
17 & aria.state.disabled?
18 & aria.state.dropeffect?
25 & aria.prop.labelledby?
31 common.attrs.other &= aria.global?
33 ## States and Properties for Native Roles
35 common.attrs.aria.implicit.button |=
36 ( aria.state.expanded?
40 common.attrs.aria.implicit.checkbox |=
41 ( aria.state.checked? )
43 common.attrs.aria.implicit.combobox |=
44 ( aria.state.expanded?
45 & aria.prop.autocomplete?
47 & aria.prop.activedescendant?
50 common.attrs.aria.implicit.dialog |=
51 ( aria.state.expanded? )
53 common.attrs.aria.implicit.document |=
54 ( aria.state.expanded? )
56 common.attrs.aria.implicit.group |=
57 ( aria.state.expanded?
58 & aria.prop.activedescendant?
61 common.attrs.aria.implicit.heading |=
62 ( aria.state.expanded?
66 common.attrs.aria.implicit.img |=
67 ( aria.state.expanded? )
69 common.attrs.aria.implicit.link |=
70 ( aria.state.expanded? )
72 common.attrs.aria.implicit.listbox |=
73 ( aria.prop.multiselectable?
75 & aria.prop.activedescendant?
76 & aria.state.expanded?
79 common.attrs.aria.implicit.listitem |=
83 & aria.state.expanded?
86 common.attrs.aria.implicit.option |=
90 & aria.state.selected?
93 common.attrs.aria.implicit.progressbar |=
97 & aria.prop.valuetext?
100 common.attrs.aria.implicit.radio |=
101 ( aria.prop.posinset?
103 & aria.state.checked?
104 & aria.state.selected?
107 common.attrs.aria.implicit.slider |=
108 ( aria.prop.valuemax?
109 & aria.prop.valuemin?
110 & aria.prop.valuenow?
111 & aria.prop.valuetext?
112 & aria.prop.orientation?
115 common.attrs.aria.implicit.spinbutton |=
116 ( aria.prop.valuemax?
117 & aria.prop.valuemin?
118 & aria.prop.valuenow?
119 & aria.prop.valuetext?
120 & aria.prop.required?
123 common.attrs.aria.implicit.textbox |=
124 ( aria.prop.activedescendant?
125 & aria.prop.autocomplete?
126 & aria.prop.multiline?
127 & aria.prop.readonly?
128 & aria.prop.required?
131 common.attrs.aria.implicit.toolbar |=
132 ( aria.state.expanded?
133 & aria.prop.activedescendant?
136 common.attrs.aria.implicit.column-or-row-header |=
138 & aria.prop.readonly?
139 & aria.prop.required?
140 & aria.state.selected?
141 & aria.state.expanded?
144 #common.attrs.aria.implicit.select |=
145 # ( aria.state.invalid?
146 # & aria.prop.required?
147 # & aria.prop.atomic?
149 # & aria.prop.channel?
150 # & aria.prop.controls?
152 # & aria.prop.relevant?
172 common.attrs.aria.implicit.section |=
173 ( aria.state.expanded? )
175 common.attrs.aria.implicit.region |= common.attrs.aria.implicit.section
177 common.attrs.aria.implicit.article |= common.attrs.aria.implicit.region
178 common.attrs.aria.implicit.landmark |= common.attrs.aria.implicit.region
179 common.attrs.aria.implicit.list |= common.attrs.aria.implicit.region
180 common.attrs.aria.implicit.status |= common.attrs.aria.implicit.region
182 common.attrs.aria.implicit.banner |= common.attrs.aria.implicit.landmark
183 common.attrs.aria.implicit.complementary |= common.attrs.aria.implicit.landmark
184 common.attrs.aria.implicit.contentinfo |= common.attrs.aria.implicit.landmark
185 common.attrs.aria.implicit.main |= common.attrs.aria.implicit.landmark
186 common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark
188 # #####################################################################
195 | string "false" #default
200 attribute aria-checked
204 | string "undefined" #default
208 aria.state.disabled =
209 attribute aria-disabled
211 | string "false" #default
215 aria.state.dropeffect =
216 attribute aria-dropeffect
217 { token "none" #default
222 , ( string "execute" )?
226 , ( string "execute" )?
230 , ( string "execute" )?
233 { ( string "execute" )
237 { ( string "execute" )
241 { ( string "execute" )
247 aria.state.expanded =
248 attribute aria-expanded
251 | string "undefined" #default
256 attribute aria-grabbed
259 | string "undefined" #default
264 attribute aria-hidden
266 | string "false" #default
271 attribute aria-invalid
273 | string "false" #default
280 attribute aria-pressed
284 | string "undefined" #default
288 aria.state.selected =
289 attribute aria-selected
292 | string "undefined" #default
297 # #####################################################################
301 aria.prop.activedescendant =
302 attribute aria-activedescendant {
303 common.data.idref #REVISIT add Schematron check
308 attribute aria-atomic
310 | string "false" #default
314 aria.prop.autocomplete =
315 attribute aria-autocomplete
319 | string "none" #default
324 attribute aria-controls {
325 common.data.idrefs #REVISIT add Schematron check
329 aria.prop.describedby =
330 attribute aria-describedby {
331 common.data.idrefs #REVISIT add Schematron check
336 attribute aria-flowto {
337 common.data.idrefs #REVISIT add Schematron check
342 attribute aria-haspopup
343 { string "true" #REVISIT check owns or descendant
344 | string "false" #default
349 attribute aria-label {
354 aria.prop.labelledby =
355 attribute aria-labelledby {
356 common.data.idrefs #REVISIT add Schematron check
361 attribute aria-level {
362 common.data.integer.positive
368 { string "off" #default
374 aria.prop.multiline =
375 attribute aria-multiline
377 | string "false" #default
381 aria.prop.multiselectable =
382 attribute aria-multiselectable
384 | string "false" #default
388 aria.prop.orientation =
389 attribute aria-orientation
391 | string "horizontal" #default
396 attribute aria-owns {
397 common.data.idrefs #REVISIT add Schematron check
402 attribute aria-posinset {
403 common.data.integer.positive
408 attribute aria-readonly
410 | string "false" #default
412 common.attrs.aria.prop.readonly |= aria.prop.readonly
416 attribute aria-relevant
419 { ( string "additions" )
420 , ( string "removals" )?
424 { ( string "additions" )
426 , ( string "removals" )?
429 { ( string "removals" )
430 , ( string "additions" )?
434 { ( string "removals" )
436 , ( string "additions" )?
440 , ( string "additions" )?
441 , ( string "removals" )?
445 , ( string "removals" )?
446 , ( string "additions" )?
452 attribute aria-required
454 | string "false" #default
459 attribute aria-setsize {
460 common.data.integer.non-negative
467 | string "descending"
468 | string "none" #default
474 attribute aria-valuemax {
475 common.data.float #REVISIT
480 attribute aria-valuemin {
481 common.data.float #REVISIT
486 attribute aria-valuenow {
487 common.data.float #REVISIT
491 aria.prop.valuetext =
492 attribute aria-valuetext {
496 # #####################################################################
502 & aria.state.expanded?
505 attribute role { string "alert" }
507 common.attrs.aria |= aria.alert
508 common.attrs.aria.role.alert |= aria.alert
512 ( aria.role.alertdialog
513 & aria.state.expanded?
515 aria.role.alertdialog =
516 attribute role { string "alertdialog" }
518 common.attrs.aria |= aria.alertdialog
519 common.attrs.aria.role.alertdialog |= aria.alertdialog
523 ( aria.role.application
524 & aria.state.expanded?
526 aria.role.application =
527 attribute role { string "application" }
529 common.attrs.aria |= aria.application
530 common.attrs.aria.landmark.application |= aria.application
535 & aria.state.expanded?
538 attribute role { string "article" }
540 common.attrs.aria |= aria.article
541 common.attrs.aria.landmark.article |= aria.article
546 & aria.state.expanded?
549 attribute role { string "banner" }
551 common.attrs.aria |= aria.banner
552 common.attrs.aria.landmark.banner |= aria.banner
557 & aria.state.expanded?
558 & aria.state.pressed? # not inherited
561 attribute role { string "button" }
563 common.attrs.aria |= aria.button
564 common.attrs.aria.role.button |= aria.button
569 & aria.state.checked #required!
572 attribute role { string "checkbox" }
574 common.attrs.aria |= aria.checkbox
575 common.attrs.aria.role.checkbox |= aria.checkbox
579 ( aria.role.columnheader
580 & aria.prop.sort? # not inherited
581 & aria.prop.readonly? # not inherited
582 & aria.state.selected? # not inherited
583 & aria.state.expanded?
584 & aria.prop.required?
586 aria.role.columnheader =
587 attribute role { string "columnheader" }
589 common.attrs.aria |= aria.columnheader
594 & aria.prop.activedescendant?
595 & aria.state.expanded #required!
596 & aria.prop.autocomplete?
597 & aria.prop.required?
600 attribute role { string "combobox" }
602 common.attrs.aria |= aria.combobox
603 common.attrs.aria.role.combobox |= aria.combobox
607 ( aria.role.complementary
608 & aria.state.expanded?
610 aria.role.complementary =
611 attribute role { string "complementary" }
613 common.attrs.aria |= aria.complementary
614 common.attrs.aria.landmark.complementary |= aria.complementary
618 ( aria.role.contentinfo
619 & aria.state.expanded?
621 aria.role.contentinfo =
622 attribute role { string "contentinfo" }
624 common.attrs.aria |= aria.contentinfo
625 common.attrs.aria.landmark.contentinfo |= aria.contentinfo
629 ( aria.role.definition
630 & aria.state.expanded?
632 aria.role.definition =
633 attribute role { string "definition" }
635 common.attrs.aria |= aria.definition
640 & aria.state.expanded?
643 attribute role { string "dialog" }
645 common.attrs.aria |= aria.dialog
646 common.attrs.aria.role.dialog |= aria.dialog
650 ( aria.role.directory
651 & aria.state.expanded?
653 aria.role.directory =
654 attribute role { string "directory" }
656 common.attrs.aria |= aria.directory
657 common.attrs.aria.role.directory |= aria.directory
662 & aria.state.expanded?
665 attribute role { string "document" }
667 common.attrs.aria |= aria.document
668 common.attrs.aria.landmark.document |= aria.document
673 & aria.state.expanded?
676 attribute role { string "form" }
678 common.attrs.aria |= aria.form
679 common.attrs.aria.landmark.form |= aria.form
684 & aria.prop.level? # not inherited
685 & aria.prop.multiselectable? # not inherited
686 & aria.prop.readonly? # not inherited
687 & aria.prop.activedescendant?
688 & aria.state.expanded?
691 attribute role { string "grid" }
693 common.attrs.aria |= aria.grid
698 & aria.prop.level? # net inherited
699 & aria.prop.readonly? # not inherited
700 & aria.state.selected? # not inherited
701 & aria.state.expanded?
702 & aria.prop.required?
705 attribute role { string "gridcell" }
707 common.attrs.aria |= aria.gridcell
712 & aria.prop.activedescendant? # not inherited
713 & aria.state.expanded? # not inherited
716 attribute role { string "group" }
718 common.attrs.aria |= aria.group
719 common.attrs.aria.role.group |= aria.group
724 & aria.prop.level ? # not inherited
725 & aria.state.expanded?
728 attribute role { string "heading" }
730 common.attrs.aria |= aria.heading
731 common.attrs.aria.role.heading |= aria.heading
736 & aria.state.expanded?
739 attribute role { string "img" }
741 common.attrs.aria |= aria.img
742 common.attrs.aria.role.img |= aria.img
747 & aria.state.expanded?
750 attribute role { string "link" }
752 common.attrs.aria |= aria.link
753 common.attrs.aria.role.link |= aria.link
758 & aria.state.expanded?
761 attribute role { string "list" }
763 common.attrs.aria |= aria.list
764 common.attrs.aria.role.list |= aria.list
769 & aria.prop.multiselectable? # not inherited
770 & aria.prop.required?
771 & aria.prop.activedescendant?
772 & aria.state.expanded?
775 attribute role { string "listbox" }
777 common.attrs.aria |= aria.listbox
778 common.attrs.aria.role.listbox |= aria.listbox
783 & aria.prop.posinset? # not inherited
784 & aria.prop.setsize? # not inherited
785 & aria.prop.level? # not inherited
786 & aria.state.expanded?
789 attribute role { string "listitem" }
791 common.attrs.aria |= aria.listitem
792 common.attrs.aria.role.listitem |= aria.listitem
797 & aria.state.expanded?
800 attribute role { string "log" }
802 common.attrs.aria |= aria.log
803 common.attrs.aria.role.log |= aria.log
808 & aria.state.expanded?
811 attribute role { string "main" }
813 common.attrs.aria |= aria.main
814 common.attrs.aria.landmark.main |= aria.main
819 & aria.state.expanded?
822 attribute role { string "marquee" }
824 common.attrs.aria |= aria.marquee
825 common.attrs.aria.role.marquee |= aria.marquee
830 & aria.state.expanded?
833 attribute role { string "math" }
835 common.attrs.aria |= aria.math
840 & aria.prop.activedescendant?
841 & aria.state.expanded?
844 attribute role { string "menu" }
846 common.attrs.aria |= aria.menu
847 common.attrs.aria.role.menu |= aria.menu
852 & aria.prop.activedescendant?
853 & aria.state.expanded?
856 attribute role { string "menubar" }
858 common.attrs.aria |= aria.menubar
859 common.attrs.aria.role.menubar |= aria.menubar
864 ( aria.role.menuitem )
866 attribute role { string "menuitem" }
868 common.attrs.aria |= aria.menuitem
869 common.attrs.aria.role.menuitem |= aria.menuitem
872 aria.menuitemcheckbox =
873 ( aria.role.menuitemcheckbox
874 & aria.state.checked #required
876 aria.role.menuitemcheckbox =
877 attribute role { string "menuitemcheckbox" }
879 common.attrs.aria |= aria.menuitemcheckbox
880 common.attrs.aria.role.menuitemcheckbox |= aria.menuitemcheckbox
884 ( aria.role.menuitemradio
885 & aria.state.checked #required
886 & aria.state.selected?
887 & aria.prop.posinset?
890 aria.role.menuitemradio =
891 attribute role { string "menuitemradio" }
893 common.attrs.aria |= aria.menuitemradio
894 common.attrs.aria.role.menuitemradio |= aria.menuitemradio
898 ( aria.role.navigation
899 & aria.state.expanded?
901 aria.role.navigation =
902 attribute role { string "navigation" }
904 common.attrs.aria |= aria.navigation
905 common.attrs.aria.landmark.navigation |= aria.navigation
910 & aria.state.expanded?
913 attribute role { string "note" }
915 common.attrs.aria |= aria.note
916 common.attrs.aria.landmark.note |= aria.note
921 & aria.state.checked? # not inherited
922 & aria.state.selected? # not inherited
923 & aria.prop.posinset?
927 attribute role { string "option" }
929 common.attrs.aria |= aria.option
930 common.attrs.aria.role.option |= aria.option
935 ( aria.role.presentation
936 & aria.state.expanded?
938 aria.role.presentation =
939 attribute role { string "presentation" }
941 common.attrs.aria |= aria.presentation
942 common.attrs.aria.role.presentation |= aria.presentation
946 ( aria.role.progressbar
947 & aria.prop.valuemax? # not inherited
948 & aria.prop.valuemin? # not inherited
949 & aria.prop.valuenow? # not inherited
950 & aria.prop.valuetext? # not inherited
952 aria.role.progressbar =
953 attribute role { string "progressbar" }
955 common.attrs.aria |= aria.progressbar
956 common.attrs.aria.role.progressbar |= aria.progressbar
961 & aria.state.checked #required!
962 & aria.state.selected?
963 & aria.prop.posinset?
967 attribute role { string "radio" }
969 common.attrs.aria |= aria.radio
970 common.attrs.aria.role.radio |= aria.radio
974 ( aria.role.radiogroup
975 & aria.prop.activedescendant?
976 & aria.state.expanded?
977 & aria.prop.required?
979 aria.role.radiogroup =
980 attribute role { string "radiogroup" }
982 common.attrs.aria |= aria.radiogroup
987 & aria.state.expanded?
990 attribute role { string "region" }
992 common.attrs.aria |= aria.region
993 common.attrs.aria.role.region |= aria.region
998 & aria.prop.level? # not inherited
999 & aria.state.selected? # not inherited
1000 & aria.prop.activedescendant?
1001 & aria.state.expanded?
1004 attribute role { string "row" }
1006 common.attrs.aria |= aria.row
1010 ( aria.role.rowgroup
1011 & aria.prop.activedescendant?
1012 & aria.state.expanded?
1014 aria.role.rowgroup =
1015 attribute role { string "rowgroup" }
1017 common.attrs.aria |= aria.rowgroup
1021 ( aria.role.rowheader
1022 & aria.prop.sort? # not inherited
1023 & aria.prop.readonly? # not inherited
1024 & aria.state.selected? # not inherited
1025 & aria.state.expanded?
1026 & aria.prop.required?
1028 aria.role.rowheader =
1029 attribute role { string "rowheader" }
1031 common.attrs.aria |= aria.rowheader
1035 ( aria.role.scrollbar
1036 & aria.prop.orientation
1037 & aria.prop.valuemax
1038 & aria.prop.valuemin
1039 & aria.prop.valuenow
1040 & aria.prop.valuetext?
1042 aria.role.scrollbar =
1043 attribute role { string "scrollbar" }
1045 common.attrs.aria |= aria.scrollbar
1050 & aria.state.expanded?
1053 attribute role { string "search" }
1055 common.attrs.aria |= aria.search
1056 common.attrs.aria.landmark.search |= aria.search
1060 ( aria.role.separator
1061 & aria.state.expanded?
1062 & aria.prop.orientation?
1064 aria.role.separator =
1065 attribute role { string "separator" }
1067 common.attrs.aria |= aria.separator
1068 common.attrs.aria.role.separator |= aria.separator
1073 & aria.prop.valuemax
1074 & aria.prop.valuemin
1075 & aria.prop.valuenow
1076 & aria.prop.valuetext?
1077 & aria.prop.orientation?
1080 attribute role { string "slider" }
1082 common.attrs.aria |= aria.slider
1083 common.attrs.aria.role.slider |= aria.slider
1087 ( aria.role.spinbutton
1088 & aria.prop.valuemax
1089 & aria.prop.valuemin
1090 & aria.prop.valuenow
1091 & aria.prop.valuetext?
1092 & aria.prop.required?
1094 aria.role.spinbutton =
1095 attribute role { string "spinbutton" }
1097 common.attrs.aria |= aria.spinbutton
1098 common.attrs.aria.role.spinbutton |= aria.spinbutton
1103 & aria.state.expanded?
1106 attribute role { string "status" }
1108 common.attrs.aria |= aria.status
1109 common.attrs.aria.role.status |= aria.status
1114 & aria.state.selected?
1115 & aria.state.expanded?
1118 attribute role { string "tab" }
1120 common.attrs.aria |= aria.tab
1121 common.attrs.aria.role.tab |= aria.tab
1126 & aria.prop.activedescendant?
1127 & aria.state.expanded?
1129 & aria.prop.multiselectable?
1132 attribute role { string "tablist" }
1133 common.attrs.aria |= aria.tablist
1134 common.attrs.aria.role.tablist |= aria.tablist
1138 ( aria.role.tabpanel
1139 & aria.state.expanded?
1141 aria.role.tabpanel =
1142 attribute role { string "tabpanel" }
1144 common.attrs.aria |= aria.tabpanel
1145 common.attrs.aria.role.tabpanel |= aria.tabpanel
1150 & aria.prop.activedescendant?
1151 & aria.prop.autocomplete? # not inherited
1152 & aria.prop.multiline? # not inherited
1153 & aria.prop.readonly? # not inherited
1154 & aria.prop.required?
1157 attribute role { string "textbox" }
1159 common.attrs.aria |= aria.textbox
1160 common.attrs.aria.role.textbox |= aria.textbox
1165 & aria.state.expanded?
1168 attribute role { string "timer" }
1170 common.attrs.aria |= aria.timer
1175 & aria.prop.activedescendant?
1176 & aria.state.expanded?
1179 attribute role { string "toolbar" }
1181 common.attrs.aria |= aria.toolbar
1182 common.attrs.aria.role.toolbar |= aria.toolbar
1187 & aria.state.expanded?
1190 attribute role { string "tooltip" }
1192 common.attrs.aria |= aria.tooltip
1197 & aria.prop.multiselectable? # not inherited
1198 & aria.prop.activedescendant?
1199 & aria.state.expanded?
1200 & aria.prop.required?
1203 attribute role { string "tree" }
1205 common.attrs.aria |= aria.tree
1206 common.attrs.aria.role.tree |= aria.tree
1210 ( aria.role.treegrid
1211 & aria.prop.activedescendant?
1212 & aria.state.expanded?
1214 & aria.prop.multiselectable?
1215 & aria.prop.readonly?
1216 & aria.prop.required?
1218 aria.role.treegrid =
1219 attribute role { string "treegrid" }
1221 common.attrs.aria |= aria.treegrid
1225 ( aria.role.treeitem
1226 & aria.state.checked?
1227 & aria.state.expanded?
1229 & aria.prop.posinset?
1230 & aria.state.selected?
1231 & aria.prop.setsize?
1233 aria.role.treeitem =
1234 attribute role { string "treeitem" }
1236 common.attrs.aria |= aria.treeitem
1237 common.attrs.aria.role.treeitem |= aria.treeitem