blob: cf412e5f4ace97f4ca894f9da94a2a951e2b1b75 [file] [log] [blame]
# #####################################################################
## RELAX NG Schema for HTML 5: Accessible Rich Internet Applications #
# #####################################################################
#
# history: http://hsivonen.iki.fi/aria-html5-bis/
# #####################################################################
## ARIA
## Global states and properties
aria.global =
( aria.prop.atomic?
& aria.state.busy?
& aria.prop.controls?
& aria.prop.describedby?
& aria.state.disabled?
& aria.state.dropeffect?
& aria.prop.flowto?
& aria.state.grabbed?
& aria.prop.haspopup?
& aria.state.hidden?
& aria.state.invalid?
& aria.prop.label?
& aria.prop.labelledby?
& aria.prop.live?
& aria.prop.owns?
& aria.prop.relevant?
)
common.attrs.other &= aria.global?
## States and Properties for Native Roles
common.attrs.aria.implicit.button |=
( aria.state.expanded?
& aria.state.pressed?
)
common.attrs.aria.implicit.checkbox |=
( aria.state.checked? )
common.attrs.aria.implicit.combobox |=
( aria.state.expanded?
& aria.prop.autocomplete?
& aria.prop.required?
& aria.prop.activedescendant?
)
common.attrs.aria.implicit.dialog |=
( aria.state.expanded? )
common.attrs.aria.implicit.document |=
( aria.state.expanded? )
common.attrs.aria.implicit.group |=
( aria.state.expanded?
& aria.prop.activedescendant?
)
common.attrs.aria.implicit.heading |=
( aria.state.expanded?
& aria.prop.level?
)
common.attrs.aria.implicit.img |=
( aria.state.expanded? )
common.attrs.aria.implicit.link |=
( aria.state.expanded? )
common.attrs.aria.implicit.listbox |=
( aria.prop.multiselectable?
& aria.prop.required?
& aria.prop.activedescendant?
& aria.state.expanded?
)
common.attrs.aria.implicit.listitem |=
( aria.prop.level?
& aria.prop.posinset?
& aria.prop.setsize?
& aria.state.expanded?
)
common.attrs.aria.implicit.option |=
( aria.prop.posinset?
& aria.prop.setsize?
& aria.state.checked?
& aria.state.selected?
)
common.attrs.aria.implicit.progressbar |=
( aria.prop.valuemax?
& aria.prop.valuemin?
& aria.prop.valuenow?
& aria.prop.valuetext?
)
common.attrs.aria.implicit.radio |=
( aria.prop.posinset?
& aria.prop.setsize?
& aria.state.checked?
& aria.state.selected?
)
common.attrs.aria.implicit.slider |=
( aria.prop.valuemax?
& aria.prop.valuemin?
& aria.prop.valuenow?
& aria.prop.valuetext?
& aria.prop.orientation?
)
common.attrs.aria.implicit.spinbutton |=
( aria.prop.valuemax?
& aria.prop.valuemin?
& aria.prop.valuenow?
& aria.prop.valuetext?
& aria.prop.required?
)
common.attrs.aria.implicit.textbox |=
( aria.prop.activedescendant?
& aria.prop.autocomplete?
& aria.prop.multiline?
& aria.prop.readonly?
& aria.prop.required?
)
common.attrs.aria.implicit.toolbar |=
( aria.state.expanded?
& aria.prop.activedescendant?
)
common.attrs.aria.implicit.column-or-row-header |=
( aria.prop.sort?
& aria.prop.readonly?
& aria.prop.required?
& aria.state.selected?
& aria.state.expanded?
)
#common.attrs.aria.implicit.select |=
# ( aria.state.invalid?
# & aria.prop.required?
# & aria.prop.atomic?
# & aria.state.busy?
# & aria.prop.channel?
# & aria.prop.controls?
# & aria.prop.live?
# & aria.prop.relevant?
# )
# section
# |
# |_ region
# |
# |_ article
# |
# |_ landmark
# | |_ banner
# | |_ complementary
# | |_ contentinfo
# | |_ main
# | |_ navigation
# |
# |_ list
# |
# |_ status
common.attrs.aria.implicit.section |=
( aria.state.expanded? )
common.attrs.aria.implicit.region |= common.attrs.aria.implicit.section
common.attrs.aria.implicit.article |= common.attrs.aria.implicit.region
common.attrs.aria.implicit.landmark |= common.attrs.aria.implicit.region
common.attrs.aria.implicit.list |= common.attrs.aria.implicit.region
common.attrs.aria.implicit.status |= common.attrs.aria.implicit.region
common.attrs.aria.implicit.banner |= common.attrs.aria.implicit.landmark
common.attrs.aria.implicit.complementary |= common.attrs.aria.implicit.landmark
common.attrs.aria.implicit.contentinfo |= common.attrs.aria.implicit.landmark
common.attrs.aria.implicit.main |= common.attrs.aria.implicit.landmark
common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark
# #####################################################################
## States
## busy
aria.state.busy =
attribute aria-busy
{ string "true"
| string "false" #default
}
## checked
aria.state.checked =
attribute aria-checked
{ string "true"
| string "false"
| string "mixed"
| string "undefined" #default
}
## disabled
aria.state.disabled =
attribute aria-disabled
{ string "true"
| string "false" #default
}
## dropeffect
aria.state.dropeffect =
attribute aria-dropeffect
{ token "none" #default
| token "popup"
| token "execute"
| list
{ ( string "copy" )
, ( string "execute" )?
}
| list
{ ( string "move" )
, ( string "execute" )?
}
| list
{ ( string "link" )
, ( string "execute" )?
}
| list
{ ( string "execute" )
, ( string "copy" )
}
| list
{ ( string "execute" )
, ( string "move" )
}
| list
{ ( string "execute" )
, ( string "link" )
}
}
## expanded
aria.state.expanded =
attribute aria-expanded
{ string "true"
| string "false"
| string "undefined" #default
}
## grabbed
aria.state.grabbed =
attribute aria-grabbed
{ string "true"
| string "false"
| string "undefined" #default
}
## hidden
aria.state.hidden =
attribute aria-hidden
{ string "true"
| string "false" #default
}
## invalid
aria.state.invalid =
attribute aria-invalid
{ string "true"
| string "false" #default
| string "grammar"
| string "spelling"
}
## pressed
aria.state.pressed =
attribute aria-pressed
{ string "true"
| string "false"
| string "mixed"
| string "undefined" #default
}
## selected
aria.state.selected =
attribute aria-selected
{ string "true"
| string "false"
| string "undefined" #default
}
# #####################################################################
## Properties
## activedescendant
aria.prop.activedescendant =
attribute aria-activedescendant {
common.data.idref #REVISIT add Schematron check
}
## atomic
aria.prop.atomic =
attribute aria-atomic
{ string "true"
| string "false" #default
}
## autocomplete
aria.prop.autocomplete =
attribute aria-autocomplete
{ string "inline"
| string "list"
| string "both"
| string "none" #default
}
## controls
aria.prop.controls =
attribute aria-controls {
common.data.idrefs #REVISIT add Schematron check
}
## describedby
aria.prop.describedby =
attribute aria-describedby {
common.data.idrefs #REVISIT add Schematron check
}
## flowto
aria.prop.flowto =
attribute aria-flowto {
common.data.idrefs #REVISIT add Schematron check
}
## haspopup
aria.prop.haspopup =
attribute aria-haspopup
{ string "true" #REVISIT check owns or descendant
| string "false" #default
}
## label
aria.prop.label =
attribute aria-label {
string
}
## labelledby
aria.prop.labelledby =
attribute aria-labelledby {
common.data.idrefs #REVISIT add Schematron check
}
## level
aria.prop.level =
attribute aria-level {
common.data.integer.positive
}
## live
aria.prop.live =
attribute aria-live
{ string "off" #default
| string "polite"
| string "assertive"
}
## multiline
aria.prop.multiline =
attribute aria-multiline
{ string "true"
| string "false" #default
}
## multiselectable
aria.prop.multiselectable =
attribute aria-multiselectable
{ string "true"
| string "false" #default
}
## orientation
aria.prop.orientation =
attribute aria-orientation
{ string "vertical"
| string "horizontal" #default
}
## owns
aria.prop.owns =
attribute aria-owns {
common.data.idrefs #REVISIT add Schematron check
}
## posinset
aria.prop.posinset =
attribute aria-posinset {
common.data.integer.positive
}
## readonly
aria.prop.readonly =
attribute aria-readonly
{ string "true"
| string "false" #default
}
common.attrs.aria.prop.readonly |= aria.prop.readonly
## relevant
aria.prop.relevant =
attribute aria-relevant
{ token "all"
| list
{ ( string "additions" )
, ( string "removals" )?
, ( string "text" )?
}
| list
{ ( string "additions" )
, ( string "text" )?
, ( string "removals" )?
}
| list
{ ( string "removals" )
, ( string "additions" )?
, ( string "text" )?
}
| list
{ ( string "removals" )
, ( string "text" )?
, ( string "additions" )?
}
| list
{ ( string "text" )
, ( string "additions" )?
, ( string "removals" )?
}
| list
{ ( string "text" )
, ( string "removals" )?
, ( string "additions" )?
}
}
## required
aria.prop.required =
attribute aria-required
{ string "true"
| string "false" #default
}
## setsize
aria.prop.setsize =
attribute aria-setsize {
common.data.integer.non-negative
}
## sort
aria.prop.sort =
attribute aria-sort
{ string "ascending"
| string "descending"
| string "none" #default
| string "other"
}
## valuemax
aria.prop.valuemax =
attribute aria-valuemax {
common.data.float #REVISIT
}
## valuemin
aria.prop.valuemin =
attribute aria-valuemin {
common.data.float #REVISIT
}
## valuenow
aria.prop.valuenow =
attribute aria-valuenow {
common.data.float #REVISIT
}
## valuetext
aria.prop.valuetext =
attribute aria-valuetext {
string
}
# #####################################################################
## Roles
## alert
aria.alert =
( aria.role.alert
& aria.state.expanded?
)
aria.role.alert =
attribute role { string "alert" }
common.attrs.aria |= aria.alert
common.attrs.aria.role.alert |= aria.alert
## alertdialog
aria.alertdialog =
( aria.role.alertdialog
& aria.state.expanded?
)
aria.role.alertdialog =
attribute role { string "alertdialog" }
common.attrs.aria |= aria.alertdialog
common.attrs.aria.role.alertdialog |= aria.alertdialog
## application
aria.application =
( aria.role.application
& aria.state.expanded?
)
aria.role.application =
attribute role { string "application" }
common.attrs.aria |= aria.application
common.attrs.aria.landmark.application |= aria.application
## article
aria.article =
( aria.role.article
& aria.state.expanded?
)
aria.role.article =
attribute role { string "article" }
common.attrs.aria |= aria.article
common.attrs.aria.landmark.article |= aria.article
## banner
aria.banner =
( aria.role.banner
& aria.state.expanded?
)
aria.role.banner =
attribute role { string "banner" }
common.attrs.aria |= aria.banner
common.attrs.aria.landmark.banner |= aria.banner
## button
aria.button =
( aria.role.button
& aria.state.expanded?
& aria.state.pressed? # not inherited
)
aria.role.button =
attribute role { string "button" }
common.attrs.aria |= aria.button
common.attrs.aria.role.button |= aria.button
## checkbox
aria.checkbox =
( aria.role.checkbox
& aria.state.checked #required!
)
aria.role.checkbox =
attribute role { string "checkbox" }
common.attrs.aria |= aria.checkbox
common.attrs.aria.role.checkbox |= aria.checkbox
# columnheader
aria.columnheader =
( aria.role.columnheader
& aria.prop.sort? # not inherited
& aria.prop.readonly? # not inherited
& aria.state.selected? # not inherited
& aria.state.expanded?
& aria.prop.required?
)
aria.role.columnheader =
attribute role { string "columnheader" }
common.attrs.aria |= aria.columnheader
## combobox
aria.combobox =
( aria.role.combobox
& aria.prop.activedescendant?
& aria.state.expanded #required!
& aria.prop.autocomplete?
& aria.prop.required?
)
aria.role.combobox =
attribute role { string "combobox" }
common.attrs.aria |= aria.combobox
common.attrs.aria.role.combobox |= aria.combobox
## complementary
aria.complementary =
( aria.role.complementary
& aria.state.expanded?
)
aria.role.complementary =
attribute role { string "complementary" }
common.attrs.aria |= aria.complementary
common.attrs.aria.landmark.complementary |= aria.complementary
## contentinfo
aria.contentinfo =
( aria.role.contentinfo
& aria.state.expanded?
)
aria.role.contentinfo =
attribute role { string "contentinfo" }
common.attrs.aria |= aria.contentinfo
common.attrs.aria.landmark.contentinfo |= aria.contentinfo
## definition
aria.definition =
( aria.role.definition
& aria.state.expanded?
)
aria.role.definition =
attribute role { string "definition" }
common.attrs.aria |= aria.definition
## dialog
aria.dialog =
( aria.role.dialog
& aria.state.expanded?
)
aria.role.dialog =
attribute role { string "dialog" }
common.attrs.aria |= aria.dialog
common.attrs.aria.role.dialog |= aria.dialog
## directory
aria.directory =
( aria.role.directory
& aria.state.expanded?
)
aria.role.directory =
attribute role { string "directory" }
common.attrs.aria |= aria.directory
common.attrs.aria.role.directory |= aria.directory
## document
aria.document =
( aria.role.document
& aria.state.expanded?
)
aria.role.document =
attribute role { string "document" }
common.attrs.aria |= aria.document
common.attrs.aria.landmark.document |= aria.document
## form
aria.form =
( aria.role.form
& aria.state.expanded?
)
aria.role.form =
attribute role { string "form" }
common.attrs.aria |= aria.form
common.attrs.aria.landmark.form |= aria.form
## grid
aria.grid =
( aria.role.grid
& aria.prop.level? # not inherited
& aria.prop.multiselectable? # not inherited
& aria.prop.readonly? # not inherited
& aria.prop.activedescendant?
& aria.state.expanded?
)
aria.role.grid =
attribute role { string "grid" }
common.attrs.aria |= aria.grid
## gridcell
aria.gridcell =
( aria.role.gridcell
& aria.prop.level? # net inherited
& aria.prop.readonly? # not inherited
& aria.state.selected? # not inherited
& aria.state.expanded?
& aria.prop.required?
)
aria.role.gridcell =
attribute role { string "gridcell" }
common.attrs.aria |= aria.gridcell
## group
aria.group =
( aria.role.group
& aria.prop.activedescendant? # not inherited
& aria.state.expanded? # not inherited
)
aria.role.group =
attribute role { string "group" }
common.attrs.aria |= aria.group
common.attrs.aria.role.group |= aria.group
## heading
aria.heading =
( aria.role.heading
& aria.prop.level ? # not inherited
& aria.state.expanded?
)
aria.role.heading =
attribute role { string "heading" }
common.attrs.aria |= aria.heading
common.attrs.aria.role.heading |= aria.heading
## img
aria.img =
( aria.role.img
& aria.state.expanded?
)
aria.role.img =
attribute role { string "img" }
common.attrs.aria |= aria.img
common.attrs.aria.role.img |= aria.img
## link
aria.link =
( aria.role.link
& aria.state.expanded?
)
aria.role.link =
attribute role { string "link" }
common.attrs.aria |= aria.link
common.attrs.aria.role.link |= aria.link
## list
aria.list =
( aria.role.list
& aria.state.expanded?
)
aria.role.list =
attribute role { string "list" }
common.attrs.aria |= aria.list
common.attrs.aria.role.list |= aria.list
## listbox
aria.listbox =
( aria.role.listbox
& aria.prop.multiselectable? # not inherited
& aria.prop.required?
& aria.prop.activedescendant?
& aria.state.expanded?
)
aria.role.listbox =
attribute role { string "listbox" }
common.attrs.aria |= aria.listbox
common.attrs.aria.role.listbox |= aria.listbox
## listitem
aria.listitem =
( aria.role.listitem
& aria.prop.posinset? # not inherited
& aria.prop.setsize? # not inherited
& aria.prop.level? # not inherited
& aria.state.expanded?
)
aria.role.listitem =
attribute role { string "listitem" }
common.attrs.aria |= aria.listitem
common.attrs.aria.role.listitem |= aria.listitem
## log
aria.log =
( aria.role.log
& aria.state.expanded?
)
aria.role.log =
attribute role { string "log" }
common.attrs.aria |= aria.log
common.attrs.aria.role.log |= aria.log
## main
aria.main =
( aria.role.main
& aria.state.expanded?
)
aria.role.main =
attribute role { string "main" }
common.attrs.aria |= aria.main
common.attrs.aria.landmark.main |= aria.main
## marquee
aria.marquee =
( aria.role.marquee
& aria.state.expanded?
)
aria.role.marquee =
attribute role { string "marquee" }
common.attrs.aria |= aria.marquee
common.attrs.aria.role.marquee |= aria.marquee
## math
aria.math =
( aria.role.math
& aria.state.expanded?
)
aria.role.math =
attribute role { string "math" }
common.attrs.aria |= aria.math
## menu
aria.menu =
( aria.role.menu
& aria.prop.activedescendant?
& aria.state.expanded?
)
aria.role.menu =
attribute role { string "menu" }
common.attrs.aria |= aria.menu
common.attrs.aria.role.menu |= aria.menu
## menubar
aria.menubar =
( aria.role.menubar
& aria.prop.activedescendant?
& aria.state.expanded?
)
aria.role.menubar =
attribute role { string "menubar" }
common.attrs.aria |= aria.menubar
common.attrs.aria.role.menubar |= aria.menubar
## menuitem
aria.menuitem =
( aria.role.menuitem )
aria.role.menuitem =
attribute role { string "menuitem" }
common.attrs.aria |= aria.menuitem
common.attrs.aria.role.menuitem |= aria.menuitem
## menuitemcheckbox
aria.menuitemcheckbox =
( aria.role.menuitemcheckbox
& aria.state.checked #required
)
aria.role.menuitemcheckbox =
attribute role { string "menuitemcheckbox" }
common.attrs.aria |= aria.menuitemcheckbox
common.attrs.aria.role.menuitemcheckbox |= aria.menuitemcheckbox
## menuitemradio
aria.menuitemradio =
( aria.role.menuitemradio
& aria.state.checked #required
& aria.state.selected?
& aria.prop.posinset?
& aria.prop.setsize?
)
aria.role.menuitemradio =
attribute role { string "menuitemradio" }
common.attrs.aria |= aria.menuitemradio
common.attrs.aria.role.menuitemradio |= aria.menuitemradio
## navigation
aria.navigation =
( aria.role.navigation
& aria.state.expanded?
)
aria.role.navigation =
attribute role { string "navigation" }
common.attrs.aria |= aria.navigation
common.attrs.aria.landmark.navigation |= aria.navigation
## note
aria.note =
( aria.role.note
& aria.state.expanded?
)
aria.role.note =
attribute role { string "note" }
common.attrs.aria |= aria.note
common.attrs.aria.landmark.note |= aria.note
## option
aria.option =
( aria.role.option
& aria.state.checked? # not inherited
& aria.state.selected? # not inherited
& aria.prop.posinset?
& aria.prop.setsize?
)
aria.role.option =
attribute role { string "option" }
common.attrs.aria |= aria.option
common.attrs.aria.role.option |= aria.option
## presentation
aria.presentation =
( aria.role.presentation
& aria.state.expanded?
)
aria.role.presentation =
attribute role { string "presentation" }
common.attrs.aria |= aria.presentation
common.attrs.aria.role.presentation |= aria.presentation
## progressbar
aria.progressbar =
( aria.role.progressbar
& aria.prop.valuemax? # not inherited
& aria.prop.valuemin? # not inherited
& aria.prop.valuenow? # not inherited
& aria.prop.valuetext? # not inherited
)
aria.role.progressbar =
attribute role { string "progressbar" }
common.attrs.aria |= aria.progressbar
common.attrs.aria.role.progressbar |= aria.progressbar
## radio
aria.radio =
( aria.role.radio
& aria.state.checked #required!
& aria.state.selected?
& aria.prop.posinset?
& aria.prop.setsize?
)
aria.role.radio =
attribute role { string "radio" }
common.attrs.aria |= aria.radio
common.attrs.aria.role.radio |= aria.radio
## radiogroup
aria.radiogroup =
( aria.role.radiogroup
& aria.prop.activedescendant?
& aria.state.expanded?
& aria.prop.required?
)
aria.role.radiogroup =
attribute role { string "radiogroup" }
common.attrs.aria |= aria.radiogroup
## region
aria.region =
( aria.role.region
& aria.state.expanded?
)
aria.role.region =
attribute role { string "region" }
common.attrs.aria |= aria.region
common.attrs.aria.role.region |= aria.region
## row
aria.row =
( aria.role.row
& aria.prop.level? # not inherited
& aria.state.selected? # not inherited
& aria.prop.activedescendant?
& aria.state.expanded?
)
aria.role.row =
attribute role { string "row" }
common.attrs.aria |= aria.row
## rowgroup
aria.rowgroup =
( aria.role.rowgroup
& aria.prop.activedescendant?
& aria.state.expanded?
)
aria.role.rowgroup =
attribute role { string "rowgroup" }
common.attrs.aria |= aria.rowgroup
# rowheader
aria.rowheader =
( aria.role.rowheader
& aria.prop.sort? # not inherited
& aria.prop.readonly? # not inherited
& aria.state.selected? # not inherited
& aria.state.expanded?
& aria.prop.required?
)
aria.role.rowheader =
attribute role { string "rowheader" }
common.attrs.aria |= aria.rowheader
## scrollbar
aria.scrollbar =
( aria.role.scrollbar
& aria.prop.orientation
& aria.prop.valuemax
& aria.prop.valuemin
& aria.prop.valuenow
& aria.prop.valuetext?
)
aria.role.scrollbar =
attribute role { string "scrollbar" }
common.attrs.aria |= aria.scrollbar
## search
aria.search =
( aria.role.search
& aria.state.expanded?
)
aria.role.search =
attribute role { string "search" }
common.attrs.aria |= aria.search
common.attrs.aria.landmark.search |= aria.search
## separator
aria.separator =
( aria.role.separator
& aria.state.expanded?
& aria.prop.orientation?
)
aria.role.separator =
attribute role { string "separator" }
common.attrs.aria |= aria.separator
common.attrs.aria.role.separator |= aria.separator
## slider
aria.slider =
( aria.role.slider
& aria.prop.valuemax
& aria.prop.valuemin
& aria.prop.valuenow
& aria.prop.valuetext?
& aria.prop.orientation?
)
aria.role.slider =
attribute role { string "slider" }
common.attrs.aria |= aria.slider
common.attrs.aria.role.slider |= aria.slider
## spinbutton
aria.spinbutton =
( aria.role.spinbutton
& aria.prop.valuemax
& aria.prop.valuemin
& aria.prop.valuenow
& aria.prop.valuetext?
& aria.prop.required?
)
aria.role.spinbutton =
attribute role { string "spinbutton" }
common.attrs.aria |= aria.spinbutton
common.attrs.aria.role.spinbutton |= aria.spinbutton
## status
aria.status =
( aria.role.status
& aria.state.expanded?
)
aria.role.status =
attribute role { string "status" }
common.attrs.aria |= aria.status
common.attrs.aria.role.status |= aria.status
## tab
aria.tab =
( aria.role.tab
& aria.state.selected?
& aria.state.expanded?
)
aria.role.tab =
attribute role { string "tab" }
common.attrs.aria |= aria.tab
common.attrs.aria.role.tab |= aria.tab
## tablist
aria.tablist =
( aria.role.tablist
& aria.prop.activedescendant?
& aria.state.expanded?
& aria.prop.level?
& aria.prop.multiselectable?
)
aria.role.tablist =
attribute role { string "tablist" }
common.attrs.aria |= aria.tablist
common.attrs.aria.role.tablist |= aria.tablist
## tabpanel
aria.tabpanel =
( aria.role.tabpanel
& aria.state.expanded?
)
aria.role.tabpanel =
attribute role { string "tabpanel" }
common.attrs.aria |= aria.tabpanel
common.attrs.aria.role.tabpanel |= aria.tabpanel
## textbox
aria.textbox =
( aria.role.textbox
& aria.prop.activedescendant?
& aria.prop.autocomplete? # not inherited
& aria.prop.multiline? # not inherited
& aria.prop.readonly? # not inherited
& aria.prop.required?
)
aria.role.textbox =
attribute role { string "textbox" }
common.attrs.aria |= aria.textbox
common.attrs.aria.role.textbox |= aria.textbox
## timer
aria.timer =
( aria.role.timer
& aria.prop.activedescendant?
& aria.state.expanded?
)
aria.role.timer =
attribute role { string "timer" }
common.attrs.aria |= aria.timer
## toolbar
aria.toolbar =
( aria.role.toolbar
& aria.prop.activedescendant?
& aria.state.expanded?
)
aria.role.toolbar =
attribute role { string "toolbar" }
common.attrs.aria |= aria.toolbar
common.attrs.aria.role.toolbar |= aria.toolbar
## tooltip
aria.tooltip =
( aria.role.tooltip
& aria.state.expanded?
)
aria.role.tooltip =
attribute role { string "tooltip" }
common.attrs.aria |= aria.tooltip
## tree
aria.tree =
( aria.role.tree
& aria.prop.multiselectable? # not inherited
& aria.prop.activedescendant?
& aria.state.expanded?
& aria.prop.required?
)
aria.role.tree =
attribute role { string "tree" }
common.attrs.aria |= aria.tree
common.attrs.aria.role.tree |= aria.tree
## treegrid
aria.treegrid =
( aria.role.treegrid
& aria.prop.activedescendant?
& aria.state.expanded?
& aria.prop.level?
& aria.prop.multiselectable?
& aria.prop.readonly?
& aria.prop.required?
)
aria.role.treegrid =
attribute role { string "treegrid" }
common.attrs.aria |= aria.treegrid
## treeitem
aria.treeitem =
( aria.role.treeitem
& aria.state.checked?
& aria.state.expanded?
& aria.prop.level?
& aria.prop.posinset?
& aria.state.selected?
& aria.prop.setsize?
)
aria.role.treeitem =
attribute role { string "treeitem" }
common.attrs.aria |= aria.treeitem
common.attrs.aria.role.treeitem |= aria.treeitem