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.form |=
57 ( aria.state.expanded? )
59 common.attrs.aria.implicit.group |=
60 ( aria.state.expanded?
61 & aria.prop.activedescendant?
64 common.attrs.aria.implicit.heading |=
65 ( aria.state.expanded?
69 common.attrs.aria.implicit.img |=
70 ( aria.state.expanded? )
72 common.attrs.aria.implicit.link |=
73 ( aria.state.expanded? )
75 common.attrs.aria.implicit.listbox |=
76 ( aria.prop.multiselectable?
78 & aria.prop.activedescendant?
79 & aria.state.expanded?
82 common.attrs.aria.implicit.listitem |=
86 & aria.state.expanded?
89 common.attrs.aria.implicit.option |=
93 & aria.state.selected?
96 common.attrs.aria.implicit.progressbar |=
100 & aria.prop.valuetext?
103 common.attrs.aria.implicit.radio |=
104 ( aria.prop.posinset?
106 & aria.state.checked?
107 & aria.state.selected?
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?
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?
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?
134 common.attrs.aria.implicit.toolbar |=
135 ( aria.state.expanded?
136 & aria.prop.activedescendant?
139 common.attrs.aria.implicit.column-or-row-header |=
141 & aria.prop.readonly?
142 & aria.prop.required?
143 & aria.state.selected?
144 & aria.state.expanded?
147 #common.attrs.aria.implicit.select |=
148 # ( aria.state.invalid?
149 # & aria.prop.required?
150 # & aria.prop.atomic?
152 # & aria.prop.channel?
153 # & aria.prop.controls?
155 # & aria.prop.relevant?
175 common.attrs.aria.implicit.section |=
176 ( aria.state.expanded? )
178 common.attrs.aria.implicit.region |= common.attrs.aria.implicit.section
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
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
191 # #####################################################################
198 | string "false" #default
203 attribute aria-checked
207 | string "undefined" #default
211 aria.state.disabled =
212 attribute aria-disabled
214 | string "false" #default
218 aria.state.dropeffect =
219 attribute aria-dropeffect
220 { token "none" #default
225 , ( string "execute" )?
229 , ( string "execute" )?
233 , ( string "execute" )?
236 { ( string "execute" )
240 { ( string "execute" )
244 { ( string "execute" )
250 aria.state.expanded =
251 attribute aria-expanded
254 | string "undefined" #default
259 attribute aria-grabbed
262 | string "undefined" #default
267 attribute aria-hidden
269 | string "false" #default
274 attribute aria-invalid
276 | string "false" #default
283 attribute aria-pressed
287 | string "undefined" #default
291 aria.state.selected =
292 attribute aria-selected
295 | string "undefined" #default
300 # #####################################################################
304 aria.prop.activedescendant =
305 attribute aria-activedescendant {
306 common.data.idref #REVISIT add Schematron check
311 attribute aria-atomic
313 | string "false" #default
317 aria.prop.autocomplete =
318 attribute aria-autocomplete
322 | string "none" #default
327 attribute aria-controls {
328 common.data.idrefs #REVISIT add Schematron check
332 aria.prop.describedby =
333 attribute aria-describedby {
334 common.data.idrefs #REVISIT add Schematron check
339 attribute aria-flowto {
340 common.data.idrefs #REVISIT add Schematron check
345 attribute aria-haspopup
346 { string "true" #REVISIT check owns or descendant
347 | string "false" #default
352 attribute aria-label {
357 aria.prop.labelledby =
358 attribute aria-labelledby {
359 common.data.idrefs #REVISIT add Schematron check
364 attribute aria-level {
365 common.data.integer.positive
371 { string "off" #default
377 aria.prop.multiline =
378 attribute aria-multiline
380 | string "false" #default
384 aria.prop.multiselectable =
385 attribute aria-multiselectable
387 | string "false" #default
391 aria.prop.orientation =
392 attribute aria-orientation
394 | string "horizontal" #default
399 attribute aria-owns {
400 common.data.idrefs #REVISIT add Schematron check
405 attribute aria-posinset {
406 common.data.integer.positive
411 attribute aria-readonly
413 | string "false" #default
415 common.attrs.aria.prop.readonly |= aria.prop.readonly
419 attribute aria-relevant
422 { ( string "additions" )
423 , ( string "removals" )?
427 { ( string "additions" )
429 , ( string "removals" )?
432 { ( string "removals" )
433 , ( string "additions" )?
437 { ( string "removals" )
439 , ( string "additions" )?
443 , ( string "additions" )?
444 , ( string "removals" )?
448 , ( string "removals" )?
449 , ( string "additions" )?
455 attribute aria-required
457 | string "false" #default
462 attribute aria-setsize {
463 common.data.integer.non-negative
470 | string "descending"
471 | string "none" #default
477 attribute aria-valuemax {
478 common.data.float #REVISIT
483 attribute aria-valuemin {
484 common.data.float #REVISIT
489 attribute aria-valuenow {
490 common.data.float #REVISIT
494 aria.prop.valuetext =
495 attribute aria-valuetext {
499 # #####################################################################
505 & aria.state.expanded?
508 attribute role { string "alert" }
510 common.attrs.aria |= aria.alert
511 common.attrs.aria.role.alert |= aria.alert
515 ( aria.role.alertdialog
516 & aria.state.expanded?
518 aria.role.alertdialog =
519 attribute role { string "alertdialog" }
521 common.attrs.aria |= aria.alertdialog
522 common.attrs.aria.role.alertdialog |= aria.alertdialog
526 ( aria.role.application
527 & aria.state.expanded?
529 aria.role.application =
530 attribute role { string "application" }
532 common.attrs.aria |= aria.application
533 common.attrs.aria.landmark.application |= aria.application
538 & aria.state.expanded?
541 attribute role { string "article" }
543 common.attrs.aria |= aria.article
544 common.attrs.aria.landmark.article |= aria.article
549 & aria.state.expanded?
552 attribute role { string "banner" }
554 common.attrs.aria |= aria.banner
555 common.attrs.aria.landmark.banner |= aria.banner
560 & aria.state.expanded?
561 & aria.state.pressed? # not inherited
564 attribute role { string "button" }
566 common.attrs.aria |= aria.button
567 common.attrs.aria.role.button |= aria.button
572 & aria.state.checked #required!
575 attribute role { string "checkbox" }
577 common.attrs.aria |= aria.checkbox
578 common.attrs.aria.role.checkbox |= aria.checkbox
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?
589 aria.role.columnheader =
590 attribute role { string "columnheader" }
592 common.attrs.aria |= aria.columnheader
597 & aria.prop.activedescendant?
598 & aria.state.expanded #required!
599 & aria.prop.autocomplete?
600 & aria.prop.required?
603 attribute role { string "combobox" }
605 common.attrs.aria |= aria.combobox
606 common.attrs.aria.role.combobox |= aria.combobox
610 ( aria.role.complementary
611 & aria.state.expanded?
613 aria.role.complementary =
614 attribute role { string "complementary" }
616 common.attrs.aria |= aria.complementary
617 common.attrs.aria.landmark.complementary |= aria.complementary
621 ( aria.role.contentinfo
622 & aria.state.expanded?
624 aria.role.contentinfo =
625 attribute role { string "contentinfo" }
627 common.attrs.aria |= aria.contentinfo
628 common.attrs.aria.landmark.contentinfo |= aria.contentinfo
632 ( aria.role.definition
633 & aria.state.expanded?
635 aria.role.definition =
636 attribute role { string "definition" }
638 common.attrs.aria |= aria.definition
643 & aria.state.expanded?
646 attribute role { string "dialog" }
648 common.attrs.aria |= aria.dialog
649 common.attrs.aria.role.dialog |= aria.dialog
653 ( aria.role.directory
654 & aria.state.expanded?
656 aria.role.directory =
657 attribute role { string "directory" }
659 common.attrs.aria |= aria.directory
660 common.attrs.aria.role.directory |= aria.directory
665 & aria.state.expanded?
668 attribute role { string "document" }
670 common.attrs.aria |= aria.document
671 common.attrs.aria.landmark.document |= aria.document
676 & aria.state.expanded?
679 attribute role { string "form" }
681 common.attrs.aria |= aria.form
682 common.attrs.aria.landmark.form |= aria.form
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?
694 attribute role { string "grid" }
696 common.attrs.aria |= aria.grid
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?
708 attribute role { string "gridcell" }
710 common.attrs.aria |= aria.gridcell
715 & aria.prop.activedescendant? # not inherited
716 & aria.state.expanded? # not inherited
719 attribute role { string "group" }
721 common.attrs.aria |= aria.group
722 common.attrs.aria.role.group |= aria.group
727 & aria.prop.level ? # not inherited
728 & aria.state.expanded?
731 attribute role { string "heading" }
733 common.attrs.aria |= aria.heading
734 common.attrs.aria.role.heading |= aria.heading
739 & aria.state.expanded?
742 attribute role { string "img" }
744 common.attrs.aria |= aria.img
745 common.attrs.aria.role.img |= aria.img
750 & aria.state.expanded?
753 attribute role { string "link" }
755 common.attrs.aria |= aria.link
756 common.attrs.aria.role.link |= aria.link
761 & aria.state.expanded?
764 attribute role { string "list" }
766 common.attrs.aria |= aria.list
767 common.attrs.aria.role.list |= aria.list
772 & aria.prop.multiselectable? # not inherited
773 & aria.prop.required?
774 & aria.prop.activedescendant?
775 & aria.state.expanded?
778 attribute role { string "listbox" }
780 common.attrs.aria |= aria.listbox
781 common.attrs.aria.role.listbox |= aria.listbox
786 & aria.prop.posinset? # not inherited
787 & aria.prop.setsize? # not inherited
788 & aria.prop.level? # not inherited
789 & aria.state.expanded?
792 attribute role { string "listitem" }
794 common.attrs.aria |= aria.listitem
795 common.attrs.aria.role.listitem |= aria.listitem
800 & aria.state.expanded?
803 attribute role { string "log" }
805 common.attrs.aria |= aria.log
806 common.attrs.aria.role.log |= aria.log
811 & aria.state.expanded?
814 attribute role { string "main" }
816 common.attrs.aria |= aria.main
817 common.attrs.aria.landmark.main |= aria.main
822 & aria.state.expanded?
825 attribute role { string "marquee" }
827 common.attrs.aria |= aria.marquee
828 common.attrs.aria.role.marquee |= aria.marquee
833 & aria.state.expanded?
836 attribute role { string "math" }
838 common.attrs.aria |= aria.math
843 & aria.prop.activedescendant?
844 & aria.state.expanded?
847 attribute role { string "menu" }
849 common.attrs.aria |= aria.menu
850 common.attrs.aria.role.menu |= aria.menu
855 & aria.prop.activedescendant?
856 & aria.state.expanded?
859 attribute role { string "menubar" }
861 common.attrs.aria |= aria.menubar
862 common.attrs.aria.role.menubar |= aria.menubar
867 ( aria.role.menuitem )
869 attribute role { string "menuitem" }
871 common.attrs.aria |= aria.menuitem
872 common.attrs.aria.role.menuitem |= aria.menuitem
875 aria.menuitemcheckbox =
876 ( aria.role.menuitemcheckbox
877 & aria.state.checked #required
879 aria.role.menuitemcheckbox =
880 attribute role { string "menuitemcheckbox" }
882 common.attrs.aria |= aria.menuitemcheckbox
883 common.attrs.aria.role.menuitemcheckbox |= aria.menuitemcheckbox
887 ( aria.role.menuitemradio
888 & aria.state.checked #required
889 & aria.state.selected?
890 & aria.prop.posinset?
893 aria.role.menuitemradio =
894 attribute role { string "menuitemradio" }
896 common.attrs.aria |= aria.menuitemradio
897 common.attrs.aria.role.menuitemradio |= aria.menuitemradio
901 ( aria.role.navigation
902 & aria.state.expanded?
904 aria.role.navigation =
905 attribute role { string "navigation" }
907 common.attrs.aria |= aria.navigation
908 common.attrs.aria.landmark.navigation |= aria.navigation
913 & aria.state.expanded?
916 attribute role { string "note" }
918 common.attrs.aria |= aria.note
919 common.attrs.aria.landmark.note |= aria.note
924 & aria.state.checked? # not inherited
925 & aria.state.selected? # not inherited
926 & aria.prop.posinset?
930 attribute role { string "option" }
932 common.attrs.aria |= aria.option
933 common.attrs.aria.role.option |= aria.option
938 ( aria.role.presentation
939 & aria.state.expanded?
941 aria.role.presentation =
942 attribute role { string "presentation" }
944 common.attrs.aria |= aria.presentation
945 common.attrs.aria.role.presentation |= aria.presentation
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
955 aria.role.progressbar =
956 attribute role { string "progressbar" }
958 common.attrs.aria |= aria.progressbar
959 common.attrs.aria.role.progressbar |= aria.progressbar
964 & aria.state.checked #required!
965 & aria.state.selected?
966 & aria.prop.posinset?
970 attribute role { string "radio" }
972 common.attrs.aria |= aria.radio
973 common.attrs.aria.role.radio |= aria.radio
977 ( aria.role.radiogroup
978 & aria.prop.activedescendant?
979 & aria.state.expanded?
980 & aria.prop.required?
982 aria.role.radiogroup =
983 attribute role { string "radiogroup" }
985 common.attrs.aria |= aria.radiogroup
990 & aria.state.expanded?
993 attribute role { string "region" }
995 common.attrs.aria |= aria.region
996 common.attrs.aria.role.region |= aria.region
1001 & aria.prop.level? # not inherited
1002 & aria.state.selected? # not inherited
1003 & aria.prop.activedescendant?
1004 & aria.state.expanded?
1007 attribute role { string "row" }
1009 common.attrs.aria |= aria.row
1013 ( aria.role.rowgroup
1014 & aria.prop.activedescendant?
1015 & aria.state.expanded?
1017 aria.role.rowgroup =
1018 attribute role { string "rowgroup" }
1020 common.attrs.aria |= aria.rowgroup
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?
1031 aria.role.rowheader =
1032 attribute role { string "rowheader" }
1034 common.attrs.aria |= aria.rowheader
1038 ( aria.role.scrollbar
1039 & aria.prop.orientation
1040 & aria.prop.valuemax
1041 & aria.prop.valuemin
1042 & aria.prop.valuenow
1043 & aria.prop.valuetext?
1045 aria.role.scrollbar =
1046 attribute role { string "scrollbar" }
1048 common.attrs.aria |= aria.scrollbar
1053 & aria.state.expanded?
1056 attribute role { string "search" }
1058 common.attrs.aria |= aria.search
1059 common.attrs.aria.landmark.search |= aria.search
1063 ( aria.role.separator
1064 & aria.state.expanded?
1065 & aria.prop.orientation?
1067 aria.role.separator =
1068 attribute role { string "separator" }
1070 common.attrs.aria |= aria.separator
1071 common.attrs.aria.role.separator |= aria.separator
1076 & aria.prop.valuemax
1077 & aria.prop.valuemin
1078 & aria.prop.valuenow
1079 & aria.prop.valuetext?
1080 & aria.prop.orientation?
1083 attribute role { string "slider" }
1085 common.attrs.aria |= aria.slider
1086 common.attrs.aria.role.slider |= aria.slider
1090 ( aria.role.spinbutton
1091 & aria.prop.valuemax
1092 & aria.prop.valuemin
1093 & aria.prop.valuenow
1094 & aria.prop.valuetext?
1095 & aria.prop.required?
1097 aria.role.spinbutton =
1098 attribute role { string "spinbutton" }
1100 common.attrs.aria |= aria.spinbutton
1101 common.attrs.aria.role.spinbutton |= aria.spinbutton
1106 & aria.state.expanded?
1109 attribute role { string "status" }
1111 common.attrs.aria |= aria.status
1112 common.attrs.aria.role.status |= aria.status
1117 & aria.state.checked #required!
1120 attribute role { string "switch" }
1122 common.attrs.aria |= aria.switch
1123 common.attrs.aria.role.switch |= aria.switch
1128 & aria.state.selected?
1129 & aria.state.expanded?
1132 attribute role { string "tab" }
1134 common.attrs.aria |= aria.tab
1135 common.attrs.aria.role.tab |= aria.tab
1140 & aria.prop.activedescendant?
1141 & aria.state.expanded?
1143 & aria.prop.multiselectable?
1146 attribute role { string "tablist" }
1147 common.attrs.aria |= aria.tablist
1148 common.attrs.aria.role.tablist |= aria.tablist
1152 ( aria.role.tabpanel
1153 & aria.state.expanded?
1155 aria.role.tabpanel =
1156 attribute role { string "tabpanel" }
1158 common.attrs.aria |= aria.tabpanel
1159 common.attrs.aria.role.tabpanel |= aria.tabpanel
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?
1171 attribute role { string "textbox" }
1173 common.attrs.aria |= aria.textbox
1174 common.attrs.aria.role.textbox |= aria.textbox
1179 & aria.state.expanded?
1182 attribute role { string "timer" }
1184 common.attrs.aria |= aria.timer
1189 & aria.prop.activedescendant?
1190 & aria.state.expanded?
1193 attribute role { string "toolbar" }
1195 common.attrs.aria |= aria.toolbar
1196 common.attrs.aria.role.toolbar |= aria.toolbar
1201 & aria.state.expanded?
1204 attribute role { string "tooltip" }
1206 common.attrs.aria |= aria.tooltip
1211 & aria.prop.multiselectable? # not inherited
1212 & aria.prop.activedescendant?
1213 & aria.state.expanded?
1214 & aria.prop.required?
1217 attribute role { string "tree" }
1219 common.attrs.aria |= aria.tree
1220 common.attrs.aria.role.tree |= aria.tree
1224 ( aria.role.treegrid
1225 & aria.prop.activedescendant?
1226 & aria.state.expanded?
1228 & aria.prop.multiselectable?
1229 & aria.prop.readonly?
1230 & aria.prop.required?
1232 aria.role.treegrid =
1233 attribute role { string "treegrid" }
1235 common.attrs.aria |= aria.treegrid
1239 ( aria.role.treeitem
1240 & aria.state.checked?
1241 & aria.state.expanded?
1243 & aria.prop.posinset?
1244 & aria.state.selected?
1245 & aria.prop.setsize?
1247 aria.role.treeitem =
1248 attribute role { string "treeitem" }
1250 common.attrs.aria |= aria.treeitem
1251 common.attrs.aria.role.treeitem |= aria.treeitem