Updated html 5 schema

This commit is contained in:
Fedor Korotkov
2013-04-23 12:15:19 +04:00
parent ad3493d93c
commit 68f6068979
43 changed files with 2366 additions and 535 deletions
@@ -2,7 +2,7 @@ The RELAX NG Schema for (X)HTML 5 is licensed under the MIT open source license.
The following legal notice applies to all files in this directory:
Copyright (c) 2005-2007 Elika J. Etemad (fantasai) and Henri Sivonen (hsivonen)
Copyright (c) 2007-2008 Mozilla Foundation
Copyright (c) 2007-2012 Mozilla Foundation
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
@@ -43,8 +43,8 @@ datatypes w = "http://whattf.org/datatype-draft"
common.attrs.dropzone =
attribute dropzone {
list {
( xsd:string { pattern = "[sS]:.+" }
| xsd:string { pattern = "[fF]:.+" }
( xsd:string { pattern = "[sS][tT][rR][iI][nN][gG]:.+" }
| xsd:string { pattern = "[fF][iI][lL][eE]:.+" }
)*
,
( w:string "copy"
@@ -52,8 +52,8 @@ datatypes w = "http://whattf.org/datatype-draft"
| w:string "link"
)?
,
( xsd:string { pattern = "[sS]:.+" }
| xsd:string { pattern = "[fF]:.+" }
( xsd:string { pattern = "[sS][tT][rR][iI][nN][gG]:.+" }
| xsd:string { pattern = "[fF][iI][lL][eE]:.+" }
)*
}
}
@@ -89,6 +89,10 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& progress.attrs.value?
& progress.attrs.max?
& ( common.attrs.aria.role.progressbar
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
progress.attrs.value =
attribute value {
@@ -103,6 +107,34 @@ datatypes w = "http://whattf.org/datatype-draft"
common.elem.phrasing |= progress.elem
## Dialog box, inspector, or window: <dialog>
dialog.elem =
element dialog { dialog.inner & dialog.attrs }
dialog.attrs =
( common.attrs
& dialog.attrs.open?
& ( common.attrs.aria.role.alert
| common.attrs.aria.role.alertdialog
| common.attrs.aria.role.contentinfo
| common.attrs.aria.role.dialog
| common.attrs.aria.role.log
| common.attrs.aria.role.main
| common.attrs.aria.role.marquee
| common.attrs.aria.role.region
| common.attrs.aria.role.status
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.search
)?
)
dialog.attrs.open =
attribute open {
w:string "open" | w:string ""
}
dialog.inner =
( common.inner.flow )
common.elem.flow |= dialog.elem
## Command with an associated action: <command type='command'>
command.command.elem =
@@ -111,6 +143,9 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& command.command.attrs.type?
& common-command.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
command.command.attrs.type =
attribute type {
@@ -124,11 +159,14 @@ datatypes w = "http://whattf.org/datatype-draft"
element command { command.inner & command.radio.attrs }
command.radio.attrs =
( common.attrs
& ( command.radio.attrs.type
& command.radio.attrs.radiogroup #REVISIT taking liberties here
& command.radio.attrs.checked?
)
& common-command.attrs
& ( command.radio.attrs.type
& command.radio.attrs.radiogroup #REVISIT taking liberties here
& command.radio.attrs.checked?
)
& common-command.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
command.radio.attrs.type =
attribute type {
@@ -150,11 +188,14 @@ datatypes w = "http://whattf.org/datatype-draft"
element command { command.inner & command.checkbox.attrs }
command.checkbox.attrs =
( common.attrs
& ( command.checkbox.attrs.type
& command.checkbox.attrs.checked?
)
& common-command.attrs
& ( command.checkbox.attrs.type
& command.checkbox.attrs.checked?
)
& common-command.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
command.checkbox.attrs.type =
attribute type {
w:string "checkbox"
@@ -197,6 +238,7 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& menu.attrs.type?
& menu.attrs.label?
& common.attrs.aria? # some roles only allowed if type is "toolbar" state; check in assertions
)
menu.attrs.type =
attribute type {
@@ -219,7 +261,9 @@ datatypes w = "http://whattf.org/datatype-draft"
mli.elem =
element li { mli.inner & mli.attrs }
mli.attrs =
( common.attrs )
( common.attrs
& common.attrs.aria?
)
mli.inner =
( common.inner.flow )
@@ -244,7 +288,7 @@ datatypes w = "http://whattf.org/datatype-draft"
common.data.integer.non-negative
}
canvas.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
canvas.inner.phrasing =
( common.inner.phrasing )
@@ -258,15 +302,50 @@ datatypes w = "http://whattf.org/datatype-draft"
details.attrs =
( common.attrs
& details.attrs.open?
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region # aria-expanded must be true if open attr present; check by assertions
| common.attrs.aria.role.alertdialog
| common.attrs.aria.role.banner
| common.attrs.aria.role.button
| common.attrs.aria.role.combobox
| common.attrs.aria.role.dialog
| common.attrs.aria.role.directory
| common.attrs.aria.role.heading
| common.attrs.aria.role.img
| common.attrs.aria.role.link
| common.attrs.aria.role.list
| common.attrs.aria.role.listbox
| common.attrs.aria.role.listitem
| common.attrs.aria.role.log
| common.attrs.aria.role.marquee
| common.attrs.aria.role.menu
| common.attrs.aria.role.menubar
| common.attrs.aria.role.note
| common.attrs.aria.role.separator
| common.attrs.aria.role.status
| common.attrs.aria.role.tab
| common.attrs.aria.role.tablist
| common.attrs.aria.role.tabpanel
| common.attrs.aria.role.toolbar
| common.attrs.aria.role.tree
| common.attrs.aria.role.treeitem
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.article
| common.attrs.aria.landmark.complementary
| common.attrs.aria.landmark.contentinfo
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.form
| common.attrs.aria.landmark.main
| common.attrs.aria.landmark.navigation
| common.attrs.aria.landmark.search
)?
)
details.attrs.open =
attribute open {
w:string "open" | w:string ""
}
details.inner =
( summary.elem?
, common.inner.flow
( summary.elem
, common.inner.flow
)
common.elem.flow |= details.elem
@@ -276,6 +355,10 @@ datatypes w = "http://whattf.org/datatype-draft"
summary.elem =
element summary { summary.inner & summary.attrs }
summary.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
summary.inner =
( common.inner.phrasing )
@@ -315,6 +315,7 @@ common.attrs.aria.implicit.listitem |=
{ string "true"
| string "false" #default
}
common.attrs.aria.prop.readonly |= aria.prop.readonly
## relevant
aria.prop.relevant =
@@ -410,6 +411,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "alert" }
common.attrs.aria |= aria.alert
common.attrs.aria.role.alert |= aria.alert
## alertdialog
aria.alertdialog =
@@ -420,6 +422,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "alertdialog" }
common.attrs.aria |= aria.alertdialog
common.attrs.aria.role.alertdialog |= aria.alertdialog
## application
aria.application =
@@ -463,6 +466,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "button" }
common.attrs.aria |= aria.button
common.attrs.aria.role.button |= aria.button
## checkbox
aria.checkbox =
@@ -474,7 +478,18 @@ common.attrs.aria.implicit.listitem |=
common.attrs.aria |= aria.checkbox
# XXX columnheader
# 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.role.columnheader =
attribute role { string "columnheader" }
common.attrs.aria |= aria.columnheader
## combobox
aria.combobox =
@@ -486,6 +501,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "combobox" }
common.attrs.aria |= aria.combobox
common.attrs.aria.role.combobox |= aria.combobox
## complementary
aria.complementary =
@@ -528,6 +544,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "dialog" }
common.attrs.aria |= aria.dialog
common.attrs.aria.role.dialog |= aria.dialog
## directory
aria.directory =
@@ -538,6 +555,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "directory" }
common.attrs.aria |= aria.directory
common.attrs.aria.role.directory |= aria.directory
## document
aria.document =
@@ -550,6 +568,17 @@ common.attrs.aria.implicit.listitem |=
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
@@ -588,7 +617,17 @@ common.attrs.aria.implicit.listitem |=
common.attrs.aria |= aria.group
## XXX heading
## 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 =
@@ -599,6 +638,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "img" }
common.attrs.aria |= aria.img
common.attrs.aria.role.img |= aria.img
## link
aria.link =
@@ -608,6 +648,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "link" }
common.attrs.aria |= aria.link
common.attrs.aria.role.link |= aria.link
## list
aria.list =
@@ -618,6 +659,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "list" }
common.attrs.aria |= aria.list
common.attrs.aria.role.list |= aria.list
## listbox
aria.listbox =
@@ -630,6 +672,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "listbox" }
common.attrs.aria |= aria.listbox
common.attrs.aria.role.listbox |= aria.listbox
## listitem
aria.listitem =
@@ -643,6 +686,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "listitem" }
common.attrs.aria |= aria.listitem
common.attrs.aria.role.listitem |= aria.listitem
## log
aria.log =
@@ -653,6 +697,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "log" }
common.attrs.aria |= aria.log
common.attrs.aria.role.log |= aria.log
## main
aria.main =
@@ -674,6 +719,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "marquee" }
common.attrs.aria |= aria.marquee
common.attrs.aria.role.marquee |= aria.marquee
## math
aria.math =
@@ -695,6 +741,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menu" }
common.attrs.aria |= aria.menu
common.attrs.aria.role.menu |= aria.menu
## menubar
aria.menubar =
@@ -706,6 +753,8 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menubar" }
common.attrs.aria |= aria.menubar
common.attrs.aria.role.menubar |= aria.menubar
## menuitem
aria.menuitem =
@@ -714,6 +763,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menuitem" }
common.attrs.aria |= aria.menuitem
common.attrs.aria.role.menuitem |= aria.menuitem
## menuitemcheckbox
aria.menuitemcheckbox =
@@ -724,6 +774,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menuitemcheckbox" }
common.attrs.aria |= aria.menuitemcheckbox
common.attrs.aria.role.menuitemcheckbox |= aria.menuitemcheckbox
## menuitemradio
aria.menuitemradio =
@@ -735,6 +786,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menuitemradio" }
common.attrs.aria |= aria.menuitemradio
common.attrs.aria.role.menuitemradio |= aria.menuitemradio
## navigation
aria.navigation =
@@ -768,6 +820,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "option" }
common.attrs.aria |= aria.option
common.attrs.aria.role.option |= aria.option
## presentation
@@ -779,6 +832,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "presentation" }
common.attrs.aria |= aria.presentation
common.attrs.aria.role.presentation |= aria.presentation
## progressbar
aria.progressbar =
@@ -792,6 +846,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "progressbar" }
common.attrs.aria |= aria.progressbar
common.attrs.aria.role.progressbar |= aria.progressbar
## radio
aria.radio =
@@ -803,6 +858,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "radio" }
common.attrs.aria |= aria.radio
common.attrs.aria.role.radio |= aria.radio
## radiogroup
aria.radiogroup =
@@ -824,6 +880,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "region" }
common.attrs.aria |= aria.region
common.attrs.aria.role.region |= aria.region
## row
aria.row =
@@ -838,7 +895,18 @@ common.attrs.aria.implicit.listitem |=
common.attrs.aria |= aria.row
# XXX rowheader
# 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.role.rowheader =
attribute role { string "rowheader" }
common.attrs.aria |= aria.rowheader
## search
aria.search =
@@ -860,6 +928,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "separator" }
common.attrs.aria |= aria.separator
common.attrs.aria.role.separator |= aria.separator
## slider
aria.slider =
@@ -873,6 +942,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "slider" }
common.attrs.aria |= aria.slider
common.attrs.aria.role.slider |= aria.slider
## spinbutton
aria.spinbutton =
@@ -887,6 +957,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "spinbutton" }
common.attrs.aria |= aria.spinbutton
common.attrs.aria.role.spinbutton |= aria.spinbutton
## status
aria.status =
@@ -898,6 +969,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "status" }
common.attrs.aria |= aria.status
common.attrs.aria.role.status |= aria.status
## tab
aria.tab =
@@ -909,6 +981,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "tab" }
common.attrs.aria |= aria.tab
common.attrs.aria.role.tab |= aria.tab
## tablist
aria.tablist =
@@ -918,6 +991,8 @@ common.attrs.aria.implicit.listitem |=
)
aria.role.tablist =
attribute role { string "tablist" }
common.attrs.aria |= aria.tablist
common.attrs.aria.role.tablist |= aria.tablist
## tabpanel
aria.tabpanel =
@@ -928,6 +1003,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "tabpanel" }
common.attrs.aria |= aria.tabpanel
common.attrs.aria.role.tabpanel |= aria.tabpanel
## textbox
aria.textbox =
@@ -940,6 +1016,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "textbox" }
common.attrs.aria |= aria.textbox
common.attrs.aria.role.textbox |= aria.textbox
## timer
aria.timer =
@@ -962,6 +1039,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "toolbar" }
common.attrs.aria |= aria.toolbar
common.attrs.aria.role.toolbar |= aria.toolbar
## tooltip
aria.tooltip =
@@ -984,6 +1062,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "tree" }
common.attrs.aria |= aria.tree
common.attrs.aria.role.tree |= aria.tree
## treegrid
aria.treegrid =
@@ -1013,5 +1092,4 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "treeitem" }
common.attrs.aria |= aria.treeitem
common.attrs.aria.role.treeitem |= aria.treeitem
@@ -25,7 +25,12 @@ datatypes w = "http://whattf.org/datatype-draft"
hr.elem =
element hr { hr.inner & hr.attrs }
hr.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.separator
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
hr.inner =
( empty )
@@ -56,8 +61,17 @@ datatypes w = "http://whattf.org/datatype-draft"
element ul { ul.inner & ul.attrs }
ul.attrs =
( common.attrs
& ( common.attrs.aria
| common.attrs.aria.implicit.region
& ( ( common.attrs.aria.role.directory
| common.attrs.aria.role.list
| common.attrs.aria.role.listbox
| common.attrs.aria.role.menu
| common.attrs.aria.role.menubar
| common.attrs.aria.role.tablist
| common.attrs.aria.role.toolbar
| common.attrs.aria.role.tree
| common.attrs.aria.role.presentation
)
| common.attrs.aria.implicit.region
)?
)
ul.inner =
@@ -71,9 +85,7 @@ datatypes w = "http://whattf.org/datatype-draft"
element li { li.inner & li.attrs }
li.attrs =
( common.attrs
& ( common.attrs.aria
| common.attrs.aria.implicit.listitem
)?
& common.attrs.aria?
)
li.inner =
( common.inner.flow )
@@ -87,8 +99,17 @@ datatypes w = "http://whattf.org/datatype-draft"
& ol.attrs.start?
& ol.attrs.reversed?
& ol.attrs.type?
& ( common.attrs.aria
| common.attrs.aria.implicit.region
& ( ( common.attrs.aria.role.directory
| common.attrs.aria.role.list
| common.attrs.aria.role.listbox
| common.attrs.aria.role.menu
| common.attrs.aria.role.menubar
| common.attrs.aria.role.tablist
| common.attrs.aria.role.toolbar
| common.attrs.aria.role.tree
| common.attrs.aria.role.presentation
)
| common.attrs.aria.implicit.region
)?
)
ol.attrs.start =
@@ -115,9 +136,7 @@ datatypes w = "http://whattf.org/datatype-draft"
oli.attrs =
( common.attrs
& oli.attrs.value?
& ( common.attrs.aria
| common.attrs.aria.implicit.listitem
)?
& common.attrs.aria?
)
oli.attrs.value =
attribute value {
@@ -154,7 +173,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.aria?
)
dt.inner =
( common.inner.phrasing )
( common.inner.flow )
## Definition Description: <dd>
@@ -183,9 +202,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.aria?
)
div.inner =
( style.elem.scoped*
, common.inner.flow
)
( common.inner.flow )
common.elem.flow |= div.elem
@@ -195,7 +212,10 @@ datatypes w = "http://whattf.org/datatype-draft"
element legend { legend.inner & legend.attrs }
legend.attrs =
( common.attrs
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
legend.inner =
( common.inner.phrasing )
@@ -29,6 +29,9 @@ datatypes w = "http://whattf.org/datatype-draft"
## XML features that can't be serialized as HTML
nonHTMLizable = empty
## features that are not part of the W3C HTML spec
nonW3C = empty
# #####################################################################
## Wildcards #
# #####################################################################
@@ -86,8 +89,15 @@ datatypes w = "http://whattf.org/datatype-draft"
## Prose Content
common.inner.transparent.flow =
( text & common.elem.flow* )
common.inner.flow =
( text & common.elem.flow* ) # REVISIT <style scoped>
( style.elem.scoped?,
( text
& common.elem.flow*
)
)
# #####################################################################
## Common Attributes #
@@ -110,7 +120,6 @@ common.attrs.basic =
& common.attrs.title?
& common.attrs.base?
& common.attrs.space?
& common.attrs.role?
)
common.attrs.id =
attribute id {
@@ -128,10 +137,6 @@ common.attrs.basic =
attribute title {
text
}
common.attrs.role =
attribute role {
text
}
common.attrs.base =
common.attrs.xmlbase
& nonRoundtrippable
@@ -149,6 +154,7 @@ common.attrs.basic =
common.attrs.i18n =
( common.attrs.dir?
& common.attrs.language?
& common.attrs.translate?
)
common.attrs.dir =
attribute dir {
@@ -181,6 +187,10 @@ common.attrs.i18n =
# attribute xml:lang {
# common.data.langcode
# } & XMLonly
common.attrs.translate =
attribute translate {
w:string "yes" | w:string "no"
}
common.attrs.present =
( common.attrs.style?
@@ -233,7 +243,7 @@ common.attrs.other =
common.data.idref =
w:IDREF
common.data.idrefs =
w:IDREFS
@@ -241,7 +251,7 @@ common.attrs.other =
w:ID #FIXME
common.data.hash-name =
w:hash-name
w:hash-name
# xsd:string {
# pattern = "#.+"
# }
@@ -265,12 +275,12 @@ common.attrs.other =
# xsd:string {
# pattern = "[0-9]+"
# }
# common.data.percent =
# xsd:string {
# pattern = "(100)|([1-9]?[0-9](\.[0-9]+)?)%"
# }
common.data.float =
w:float
# xsd:string {
@@ -282,13 +292,13 @@ common.attrs.other =
# xsd:string {
# pattern = "(0*[1-9][0-9]*(\.[0-9]+)?)|([0-9]+(\.0*[1-9][0-9]*)?)([eE]-?[0-9]+)?"
# }
common.data.float.non-negative =
w:float-non-negative
# xsd:string {
# pattern = "[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?"
# }
## Temporal
common.data.datetime =
@@ -300,6 +310,9 @@ common.attrs.other =
common.data.date =
w:date
common.data.time-datetime =
w:time-datetime
## IRIs
common.data.uri =
@@ -389,7 +402,7 @@ common.attrs.other =
# #####################################################################
## WF2 Module Hook #
# #####################################################################
common-form.attrs.form = ( notAllowed )
# #####################################################################
@@ -397,6 +410,50 @@ common-form.attrs.form = ( notAllowed )
# #####################################################################
common.attrs.aria = ( notAllowed )
common.attrs.aria.role.alert = ( notAllowed )
common.attrs.aria.role.alertdialog = ( notAllowed )
common.attrs.aria.role.application = ( notAllowed )
common.attrs.aria.role.article = ( notAllowed )
common.attrs.aria.role.banner = ( notAllowed )
common.attrs.aria.role.button = ( notAllowed )
common.attrs.aria.role.checkbox = ( notAllowed )
common.attrs.aria.role.combobox = ( notAllowed )
common.attrs.aria.role.complementary = ( notAllowed )
common.attrs.aria.role.contentinfo = ( notAllowed )
common.attrs.aria.role.dialog = ( notAllowed )
common.attrs.aria.role.directory = ( notAllowed )
common.attrs.aria.role.document = ( notAllowed )
common.attrs.aria.role.heading = ( notAllowed )
common.attrs.aria.role.img = ( notAllowed )
common.attrs.aria.role.link = ( notAllowed )
common.attrs.aria.role.list = ( notAllowed )
common.attrs.aria.role.listitem = ( notAllowed )
common.attrs.aria.role.log = ( notAllowed )
common.attrs.aria.role.listbox = ( notAllowed )
common.attrs.aria.role.main = ( notAllowed )
common.attrs.aria.role.marquee = ( notAllowed )
common.attrs.aria.role.menu = ( notAllowed )
common.attrs.aria.role.menubar = ( notAllowed )
common.attrs.aria.role.menuitem = ( notAllowed )
common.attrs.aria.role.menuitemcheckbox = ( notAllowed )
common.attrs.aria.role.menuitemradio = ( notAllowed )
common.attrs.aria.role.note = ( notAllowed )
common.attrs.aria.role.option = ( notAllowed )
common.attrs.aria.role.presentation = ( notAllowed )
common.attrs.aria.role.progressbar = ( notAllowed )
common.attrs.aria.role.radio = ( notAllowed )
common.attrs.aria.role.region = ( notAllowed )
common.attrs.aria.role.search = ( notAllowed )
common.attrs.aria.role.separator = ( notAllowed )
common.attrs.aria.role.slider = ( notAllowed )
common.attrs.aria.role.spinbutton = ( notAllowed )
common.attrs.aria.role.status = ( notAllowed )
common.attrs.aria.role.tab = ( notAllowed )
common.attrs.aria.role.tablist = ( notAllowed )
common.attrs.aria.role.textbox = ( notAllowed )
common.attrs.aria.role.toolbar = ( notAllowed )
common.attrs.aria.role.tree = ( notAllowed )
common.attrs.aria.role.treeitem = ( notAllowed )
common.attrs.aria.implicit.button = ( notAllowed )
common.attrs.aria.implicit.input = ( notAllowed )
common.attrs.aria.implicit.region = ( notAllowed )
@@ -407,6 +464,7 @@ common.attrs.aria.implicit.link = ( notAllowed )
common.attrs.aria.implicit.listitem = ( notAllowed )
common.attrs.aria.implicit.img = ( notAllowed )
common.attrs.aria.implicit.select = ( notAllowed )
common.attrs.aria.prop.readonly = ( notAllowed )
common.attrs.aria.landmark.application = ( notAllowed )
common.attrs.aria.landmark.banner = ( notAllowed )
common.attrs.aria.landmark.complementary = ( notAllowed )
@@ -417,4 +475,4 @@ common.attrs.aria.landmark.search = ( notAllowed )
# per ARIA spec: article, document, and note are not actually landmarks
common.attrs.aria.landmark.article = ( notAllowed )
common.attrs.aria.landmark.document = ( notAllowed )
common.attrs.aria.landmark.note = ( notAllowed )
common.attrs.aria.landmark.note = ( notAllowed )
@@ -15,6 +15,9 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& script.attrs.type?
& script.attrs.language? # restricted in Schematron
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
script.elem.imported =
element script { script.inner.imported & script.attrs.imported }
@@ -26,6 +29,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& script.attrs.type?
& script.attrs.charset?
& script.attrs.language? # restricted in Schematron
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
script.attrs.src =
attribute src {
@@ -86,7 +92,11 @@ datatypes w = "http://whattf.org/datatype-draft"
noscript.inner.flow =
( common.inner.flow )
noscript.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
common.elem.metadata |= noscript.elem.head
common.elem.phrasing |= noscript.elem.phrasing
@@ -136,7 +146,6 @@ datatypes w = "http://whattf.org/datatype-draft"
& scripting.attr.onplaying?
& scripting.attr.onprogress?
& scripting.attr.onratechange?
& scripting.attr.onreadystatechange?
& scripting.attr.onreset?
& scripting.attr.onscroll?
& scripting.attr.onseeked?
@@ -237,8 +246,6 @@ datatypes w = "http://whattf.org/datatype-draft"
attribute onprogress { common.data.functionbody }
scripting.attr.onratechange =
attribute onratechange { common.data.functionbody }
scripting.attr.onreadystatechange =
attribute onreadystatechange { common.data.functionbody }
scripting.attr.onreset =
attribute onreset { common.data.functionbody }
scripting.attr.onscroll =
@@ -10,19 +10,14 @@ datatypes w = "http://whattf.org/datatype-draft"
element time { time.inner & time.attrs }
time.attrs =
( common.attrs
& ( time.attrs.datetime?
|
(
( time.attrs.datetime.dateonly?
| time.attrs.datetime.tz?
)
& time.attrs.pubdate
)
)
& time.attrs.datetime?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
time.attrs.datetime =
attribute datetime {
common.data.date-or-time #REVISIT check format
common.data.time-datetime
}
time.attrs.datetime.dateonly =
attribute datetime {
@@ -32,10 +27,6 @@ datatypes w = "http://whattf.org/datatype-draft"
attribute datetime {
common.data.datetime
}
time.attrs.pubdate =
attribute pubdate {
w:string "pubdate" | w:string ""
}
time.inner =
( common.inner.phrasing ) #Cannot enforce textContent format here
@@ -53,6 +44,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& meter.attrs.high?
& meter.attrs.max?
& meter.attrs.optimum?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meter.attrs.value =
attribute value {
@@ -15,12 +15,12 @@ namespace local = ""
img.attrs =
( common.attrs
& img.attrs.src
& img.attrs.alt?
& img.attrs.alt? # ARIA: if alt empty, only allowed role value is "presentation"; check in assertions
& img.attrs.height?
& img.attrs.width?
& img.attrs.usemap?
& img.attrs.ismap?
& img.attrs.border? # obsolete
& img.attrs.border? # obsolete
& common.attrs.aria?
)
img.attrs.src =
@@ -67,6 +67,10 @@ namespace local = ""
& embed.attrs.height?
& embed.attrs.width?
& embed.attrs.other*
& ( common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.role.img
)?
)
embed.attrs.src =
attribute src {
@@ -94,6 +98,7 @@ namespace local = ""
| title
| dir
| lang
| translate
| style
| tabindex
| contextmenu
@@ -141,7 +146,6 @@ namespace local = ""
| onplaying
| onprogress
| onratechange
| onreadystatechange
| onreset
| onscroll
| onseeked
@@ -174,6 +178,7 @@ namespace local = ""
| aria-describedby
| aria-disabled
| aria-dropeffect
| aria-expanded
| aria-flowto
| aria-grabbed
| aria-haspopup
@@ -184,7 +189,7 @@ namespace local = ""
| aria-live
| aria-owns
| aria-relevant
| aria-required
| aria-required
| spellcheck
| accesskey
| itemref
@@ -194,6 +199,64 @@ namespace local = ""
| itemid
| name
| align
| about
| prefix
| property
| typeof
| vocab
| content
| datatype
| href
| rel
| resource
| rev
| inlist
| its-loc-note
| its-loc-note-type
| its-loc-note-ref
| its-term-info-ref
| its-term
| its-term-confidence
| its-within-text
| its-domain-mapping
| its-disambig-granularity
| its-disambig-confidence
| its-disambig-class-ref
| its-disambig-ident
| its-disambig-ident-ref
| its-disambig-source
| its-locale-filter-list
| its-person
| its-person-ref
| its-org
| its-org-ref
| its-tool
| its-tool-ref
| its-rev-person
| its-rev-person-ref
| its-rev-org
| its-rev-org-ref
| its-rev-tool
| its-rev-tool-ref
| its-prov-ref
| its-provenance-records-ref
| its-loc-quality-issues-ref
| its-loc-quality-issue-type
| its-loc-quality-issue-comment
| its-loc-quality-issue-severity
| its-loc-quality-issue-profile-ref
| its-loc-quality-issue-enabled
| its-loc-quality-rating-score
| its-loc-quality-rating-vote
| its-loc-quality-rating-score-threshold
| its-loc-quality-rating-vote-threshold
| its-loc-quality-rating-profile-ref
| its-mt-confidence
| its-allowed-characters
| its-storage-size
| its-storage-encoding
| its-line-break-type
| its-annotators-ref
)
{
string
@@ -224,7 +287,11 @@ namespace local = ""
& object.attrs.usemap?
& object.attrs.name?
& common-form.attrs.form?
& common.attrs.aria?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.role.img
)?
)
object.attrs.data =
attribute data {
@@ -252,7 +319,7 @@ namespace local = ""
}
object.inner.flow =
( param.elem*
, common.inner.flow
, common.inner.transparent.flow
)
object.inner.phrasing =
( param.elem*
@@ -270,6 +337,9 @@ namespace local = ""
( common.attrs
& param.attrs.name
& param.attrs.value
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
param.attrs.name =
attribute name {
@@ -295,8 +365,11 @@ namespace local = ""
& iframe.attrs.height?
& iframe.attrs.sandbox?
& iframe.attrs.seamless?
& ( common.attrs.aria
| common.attrs.aria.implicit.region
& iframe.attrs.allowfullscreen?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.role.img
)?
)
iframe.attrs.src =
@@ -470,6 +543,10 @@ namespace local = ""
, ( w:string "allow-top-navigation" )?
}
} & v5only
iframe.attrs.allowfullscreen =
attribute allowfullscreen {
w:string "allowfullscreen" | w:string ""
} & v5only
iframe.inner =
( text )
@@ -487,13 +564,16 @@ namespace local = ""
map.attrs =
( common.attrs
& map.attrs.name
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
) # REVISIT make id required in Schematron
map.attrs.name =
attribute name {
common.data.name
}
map.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
map.inner.phrasing =
( common.inner.phrasing )
@@ -505,7 +585,10 @@ namespace local = ""
area.elem =
element area { area.inner & area.attrs }
area.attrs =
( common.attrs
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& ( area.attrs.alt
& shared-hyperlink.attrs.href
)?
@@ -516,6 +599,10 @@ namespace local = ""
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.type?
& area.attrs.shape?
& ( common.attrs.aria.role.link
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
area.attrs.alt =
attribute alt {
@@ -1,4 +1,4 @@
default namespace = "http://www.w3.org/1999/html"
default namespace = "http://www.w3.org/1999/xhtml"
# #####################################################################
## RELAX NG Schema for HTML 5 #
# #####################################################################
@@ -49,6 +49,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& source.attrs.src
& source.attrs.type?
& source.attrs.media?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
source.attrs.src =
attribute src {
@@ -65,7 +68,12 @@ datatypes w = "http://whattf.org/datatype-draft"
source.inner =
( empty )
## Media src attribute
## Media Source
media.source =
( media.attrs.src
| source.elem*
)
media.attrs.src =
attribute src {
@@ -84,6 +92,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& video.attrs.poster?
& video.attrs.height?
& video.attrs.width?
& common.attrs.aria.landmark.application?
)
video.attrs.poster =
attribute poster {
@@ -98,19 +107,15 @@ datatypes w = "http://whattf.org/datatype-draft"
common.data.integer.non-negative
}
video.inner.flow =
( video.source
( media.source
, track.elem*
, common.inner.flow
, common.inner.transparent.flow
)
video.inner.phrasing =
( video.source
( media.source
, track.elem*
, common.inner.phrasing
)
video.source =
( media.attrs.src
| source.elem*
)
common.elem.flow |= video.elem.flow
common.elem.phrasing |= video.elem.phrasing
@@ -124,21 +129,18 @@ datatypes w = "http://whattf.org/datatype-draft"
audio.attrs =
( common.attrs
& media.attrs
& common.attrs.aria.landmark.application?
)
audio.inner.flow =
( audio.source
( media.source
, track.elem*
, common.inner.flow
, common.inner.transparent.flow
)
audio.inner.phrasing =
( audio.source
( media.source
, track.elem*
, common.inner.phrasing
)
audio.source =
( media.attrs.src
| source.elem+
)
common.elem.flow |= audio.elem.flow
common.elem.phrasing |= audio.elem.phrasing
@@ -155,6 +157,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& track.attrs.srclang?
& track.attrs.label?
& track.attrs.default?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
track.attrs.kind =
attribute kind {
@@ -186,10 +191,10 @@ datatypes w = "http://whattf.org/datatype-draft"
element figure { figure.inner & figure.attrs }
figure.attrs =
( common.attrs
& common.attrs.aria.implicit.img?
& common.attrs.aria?
)
figure.inner =
( ( figcaption.elem, common.inner.flow )
( ( figcaption.elem?, common.inner.flow )
| ( common.inner.flow, figcaption.elem? )
)
@@ -200,6 +205,10 @@ datatypes w = "http://whattf.org/datatype-draft"
figcaption.elem =
element figcaption { figcaption.inner & figcaption.attrs }
figcaption.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
figcaption.inner =
( common.inner.flow )
+53 -12
View File
@@ -9,7 +9,11 @@ datatypes w = "http://whattf.org/datatype-draft"
html.elem =
element html { html.inner & html.attrs }
html.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
html.inner =
( head.elem
, body.elem
@@ -22,6 +26,9 @@ datatypes w = "http://whattf.org/datatype-draft"
head.attrs =
( common.attrs
# & head.attrs.profile?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
# head.attrs.profile =
# attribute profile {
@@ -49,6 +56,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& ( common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.implicit.structure
| common.attrs.aria.role.presentation
)?
& body.attrs.onafterprint?
& body.attrs.onbeforeprint?
@@ -57,11 +65,11 @@ datatypes w = "http://whattf.org/datatype-draft"
& body.attrs.onmessage?
& body.attrs.onoffline?
& body.attrs.ononline?
& body.attrs.onpagehide?
& body.attrs.onpageshow?
& body.attrs.onpopstate?
& body.attrs.onredo?
& body.attrs.onresize?
& body.attrs.onstorage?
& body.attrs.onundo?
& body.attrs.onunload?
)
body.inner =
@@ -83,6 +91,10 @@ datatypes w = "http://whattf.org/datatype-draft"
attribute ononline { common.data.functionbody }
body.attrs.onpopstate =
attribute onpopstate { common.data.functionbody }
body.attrs.onpagehide =
attribute onpagehide { common.data.functionbody }
body.attrs.onpageshow =
attribute onpageshow { common.data.functionbody }
body.attrs.onredo =
attribute onredo { common.data.functionbody }
body.attrs.onresize =
@@ -99,7 +111,11 @@ datatypes w = "http://whattf.org/datatype-draft"
title.elem =
element title { title.inner & title.attrs }
title.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
title.inner =
( text )
@@ -108,12 +124,18 @@ datatypes w = "http://whattf.org/datatype-draft"
base.elem =
element base { base.inner & base.attrs }
base.attrs =
( common.attrs
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& ( ( base.attrs.href
& base.attrs.target?
)
| base.attrs.target
)
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
base.attrs.href =
attribute href {
@@ -135,19 +157,17 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& common.attrs.microdata.itemref?
& common.attrs.microdata.itemscope?
& common.attrs.microdata.itemtype?
& common.attrs.microdata.itemid?
& link.attrs.href
& ( link.attrs.rel
| common.attrs.microdata.itemprop
)
& link.attrs.rel
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& link.attrs.sizes?
# link.attrs.title included in common.attrs
& ( common.attrs.aria.role.link
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
link.attrs.href =
attribute href {
@@ -175,6 +195,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& style.attrs.type?
& style.attrs.media?
# style.attrs.title included in common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
style.attrs.type =
attribute type {
@@ -199,6 +222,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& style.attrs.media?
& style.attrs.scoped
# style.attrs.title included in common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
style.attrs.scoped =
attribute scoped {
@@ -216,6 +242,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.other
& meta.name.attrs.name
& meta.name.attrs.content
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.name.attrs.name =
attribute name {
@@ -241,6 +270,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.refresh
& meta.http-equiv.attrs.content.refresh
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.http-equiv.attrs.http-equiv.refresh =
attribute http-equiv {
@@ -265,6 +297,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.default-style
& meta.http-equiv.attrs.content.default-style
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.http-equiv.attrs.http-equiv.default-style =
attribute http-equiv {
@@ -289,6 +324,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.present
& common.attrs.other
& meta.charset.attrs.charset
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.charset.attrs.charset =
attribute charset {
@@ -310,6 +348,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.content-type
& meta.http-equiv.attrs.content.content-type
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.http-equiv.attrs.http-equiv.content-type =
attribute http-equiv {
@@ -34,6 +34,10 @@ common.attrs.microdata =
common.attrs &= common.attrs.microdata
a.attrs &= common.attrs.microdata
area.attrs &= common.attrs.microdata
base.attrs &= common.attrs.microdata
## URL-valued Property Metadata: <link itemprop>
link.elem.phrasing =
@@ -54,9 +58,21 @@ common.attrs &= common.attrs.microdata
& shared-hyperlink.attrs.type?
& link.attrs.sizes?
# link.attrs.title included in common.attrs
& ( common.attrs.aria.role.link
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
common.elem.phrasing |= link.elem.phrasing
## <link> element in head, extensions
link.attrs.rel |= common.attrs.microdata.itemprop
link.attrs &= common.attrs.microdata.itemref?
link.attrs &= common.attrs.microdata.itemscope?
link.attrs &= common.attrs.microdata.itemtype?
link.attrs &= common.attrs.microdata.itemid?
## Property Metadata: <meta itemprop>
meta.itemprop.elem =
@@ -72,6 +88,9 @@ common.attrs &= common.attrs.microdata
& common.attrs.microdata.itemtype?
& common.attrs.microdata.itemid?
& meta.itemprop.attrs.content
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.itemprop.attrs.content =
attribute content {
@@ -11,8 +11,11 @@ datatypes w = "http://whattf.org/datatype-draft"
a.elem.flow =
element a { a.inner.flow & a.attrs }
a.attrs =
( common.attrs
& a.attrs.name?
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& a.attrs.name?
& shared-hyperlink.attrs.href?
& shared-hyperlink.attrs.target?
& shared-hyperlink.attrs.rel?
@@ -20,8 +23,16 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& shared-hyperlink.attrs.ping?
& ( common.attrs.aria
| common.attrs.aria.implicit.link
& ( ( common.attrs.aria.role.button
| common.attrs.aria.role.checkbox
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.tab
| common.attrs.aria.role.treeitem
)
| common.attrs.aria.implicit.link
)?
)
a.attrs.name =
@@ -31,7 +42,7 @@ datatypes w = "http://whattf.org/datatype-draft"
a.inner.phrasing =
( common.inner.phrasing )
a.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
common.elem.phrasing |= a.elem.phrasing
common.elem.flow |= a.elem.flow
@@ -65,7 +76,7 @@ datatypes w = "http://whattf.org/datatype-draft"
shared-hyperlink.attrs.ping =
attribute ping {
common.data.uris
} & v5only
} & v5only & nonW3C
## Emphatic Stress: <em>
@@ -112,7 +123,11 @@ datatypes w = "http://whattf.org/datatype-draft"
element mark { mark.inner & mark.attrs }
& v5only
mark.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
mark.inner =
( common.inner.phrasing )
@@ -255,7 +270,11 @@ datatypes w = "http://whattf.org/datatype-draft"
sup.elem =
element sup { sup.inner & sup.attrs }
sup.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
sup.inner =
( common.inner.phrasing )
@@ -266,7 +285,11 @@ datatypes w = "http://whattf.org/datatype-draft"
sub.elem =
element sub { sub.inner & sub.attrs }
sub.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
sub.inner =
( common.inner.phrasing )
@@ -321,7 +344,11 @@ datatypes w = "http://whattf.org/datatype-draft"
bdo.elem =
element bdo { bdo.inner & bdo.attrs }
bdo.attrs =
( common.attrs ) # dir required in Schematron
( common.attrs # dir required in Schematron
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
bdo.inner =
( common.inner.phrasing )
@@ -332,7 +359,11 @@ datatypes w = "http://whattf.org/datatype-draft"
bdi.elem =
element bdi { bdi.inner & bdi.attrs }
bdi.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
bdi.inner =
( common.inner.phrasing )
@@ -343,7 +374,11 @@ datatypes w = "http://whattf.org/datatype-draft"
br.elem =
element br { br.inner & br.attrs }
br.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
br.inner =
( empty )
@@ -354,7 +389,11 @@ datatypes w = "http://whattf.org/datatype-draft"
wbr.elem =
element wbr { wbr.inner & wbr.attrs }
wbr.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
wbr.inner =
( empty )
@@ -0,0 +1,240 @@
# #####################################################################
## RELAX NG Schema for HTML 5: RDFa 1.1 and RDFa Lite 1.1 #
# #####################################################################
# #####################################################################
## RDFa Datatypes #
# #####################################################################
common.data.rdfa.safecurie =
xsd:string {
pattern = "\[(([\i-[:]][\c-[:]]*)?:)?[^\s]+\]"
minLength = "3"
}
common.data.rdfa.curie =
xsd:string {
pattern = "(([\i-[:]][\c-[:]]*)?:)?[^\s]+"
minLength = "1"
}
common.data.rdfa.term =
xsd:string {
pattern = "[\i-[:]][/\c-[:]]*"
}
# #####################################################################
## RDFa Attributes #
# #####################################################################
common.attrs.rdfa &=
( common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.property?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.rel?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.rev?
& common.attrs.rdfa.inlist?
)
common.attrs.rdfa.prefix =
attribute prefix {
(
xsd:string {
pattern = "([\i-[:]][\c-[:]]*: [^ ]+)(\s+[\i-[:]][\c-[:]]*: [^ ]+)*"
}
| string ""
)
}
common.attrs.rdfa.property =
attribute property {
(
list {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
)+
}
| string ""
)
}
common.attrs.rdfa.resource =
attribute resource {
( common.data.rdfa.safecurie
| common.data.rdfa.curie
| common.data.uri
)
}
common.attrs.rdfa.typeof =
attribute typeof {
(
list {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
)+
}
| string ""
)
}
common.attrs.rdfa.vocab =
attribute vocab {
( common.data.uri.absolute
| string ""
)
}
common.attrs.rdfa.about =
attribute about {
( common.data.rdfa.safecurie
| common.data.rdfa.curie
| common.data.uri
)
} & nonRDFaLite
common.attrs.rdfa.content =
attribute content {
string
} & nonRDFaLite
common.attrs.rdfa.datatype =
attribute datatype {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
| string ""
)
} & nonRDFaLite
common.attrs.rdfa.rel =
attribute rel {
(
list {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
)+
}
| string ""
)
} & nonRDFaLite
common.attrs.rdfa.rev =
attribute rev {
(
list {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
)+
}
| string ""
)
} & nonRDFaLite
common.attrs.rdfa.inlist =
attribute inlist {
string
} & nonRDFaLite
common.attrs.rdfa.no-rel &=
( common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.property?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.rev?
& common.attrs.rdfa.inlist?
)
common.attrs.rdfa.no-rel-rev &=
( common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.property?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.inlist?
)
common.attrs.rdfa.no-content-noproperty &=
( common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.inlist?
)
common.attrs &= common.attrs.rdfa
a.attrs &= common.attrs.rdfa.no-rel-rev
area.attrs &= common.attrs.rdfa.no-rel
base.attrs &= common.attrs.rdfa.no-rel
link.rdfa.elem.metadata =
element link { link.inner & link.rdfa.attrs.metadata }
link.rdfa.elem.phrasing =
element link { link.inner & link.rdfa.attrs.phrasing }
link.rdfa.attrs.metadata =
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& ( ( common.attrs.rdfa.property
& ( link.attrs.rel
| common.attrs.rdfa.rel
)?
)
|
( common.attrs.rdfa.property?
& ( link.attrs.rel
| common.attrs.rdfa.rel
)
)
)
& link.attrs.href
& common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.rev?
& common.attrs.rdfa.inlist?
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& link.attrs.sizes?
# link.attrs.title included in common.attrs
)
link.rdfa.attrs.phrasing =
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& common.attrs.rdfa.property
& ( link.attrs.rel
| common.attrs.rdfa.rel
)?
& link.attrs.href
& common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.rev?
& common.attrs.rdfa.inlist?
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& link.attrs.sizes?
# link.attrs.title included in common.attrs
)
common.elem.metadata |= link.rdfa.elem.metadata
common.elem.phrasing |= link.rdfa.elem.phrasing
meta.name.attrs.name |= common.attrs.rdfa.property
meta.name.attrs &= common.attrs.rdfa.no-content-noproperty
@@ -23,9 +23,12 @@
( common.attrs
& edit.attrs.cite?
& edit.attrs.datetime?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
ins.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
ins.inner.phrasing =
( common.inner.phrasing )
@@ -42,9 +45,12 @@
( common.attrs
& edit.attrs.cite?
& edit.attrs.datetime?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
del.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
del.inner.phrasing =
( common.inner.phrasing )
@@ -11,7 +11,11 @@
element h1 { h1.inner & h1.attrs }
h1.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h1.inner =
( common.inner.phrasing )
@@ -24,7 +28,11 @@
element h2 { h2.inner & h2.attrs }
h2.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h2.inner =
( common.inner.phrasing )
@@ -37,7 +45,11 @@
element h3 { h3.inner & h3.attrs }
h3.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h3.inner =
( common.inner.phrasing )
@@ -50,7 +62,11 @@
element h4 { h4.inner & h4.attrs }
h4.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h4.inner =
( common.inner.phrasing )
@@ -63,7 +79,11 @@
element h5 { h5.inner & h5.attrs }
h5.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h5.inner =
( common.inner.phrasing )
@@ -76,7 +96,11 @@
element h6 { h6.inner & h6.attrs }
h6.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h6.inner =
( common.inner.phrasing )
@@ -89,7 +113,11 @@
element hgroup { hgroup.inner & hgroup.attrs }
hgroup.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure # not implementing "aria-level property set to the element's outline depth", nor heading role; see http://hsivonen.iki.fi/aria-html5-bis/
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
hgroup.inner =
( h1.elem
@@ -111,7 +139,10 @@
element address { address.inner & address.attrs }
address.attrs =
( common.attrs
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.contentinfo
| common.attrs.aria.role.presentation
)?
)
address.inner =
( common.inner.flow )
@@ -8,14 +8,24 @@
element section { section.inner & section.attrs }
section.attrs =
( common.attrs
& ( common.attrs.aria
| common.attrs.aria.implicit.region
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.alert
| common.attrs.aria.role.alertdialog
| common.attrs.aria.role.contentinfo
| common.attrs.aria.role.dialog
| common.attrs.aria.role.log
| common.attrs.aria.role.main
| common.attrs.aria.role.marquee
| common.attrs.aria.role.region
| common.attrs.aria.role.status
| common.attrs.aria.role.presentation
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.search
)?
)
section.inner =
( style.elem.scoped*
, common.inner.flow
)
( common.inner.flow )
common.elem.flow |= section.elem
@@ -25,9 +35,11 @@
element nav { nav.inner & nav.attrs }
nav.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.navigation
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.navigation
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.presentation
)?
)
nav.inner =
( common.inner.flow )
@@ -40,12 +52,13 @@
element article { article.inner & article.attrs }
article.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.article
| common.attrs.aria.landmark.main
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.application
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.article
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.main
| common.attrs.aria.role.presentation
)?
)
article.inner =
( style.elem*
@@ -60,11 +73,12 @@
element aside { aside.inner & aside.attrs }
aside.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.complementary
| common.attrs.aria.landmark.search
| common.attrs.aria.landmark.note
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.note
| common.attrs.aria.landmark.complementary
| common.attrs.aria.landmark.search
| common.attrs.aria.role.presentation
)?
)
aside.inner =
( style.elem*
@@ -79,9 +93,10 @@
element header { header.inner & header.attrs }
header.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.banner
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.banner
| common.attrs.aria.role.presentation
)?
)
header.inner =
( common.inner.flow )
@@ -94,12 +109,27 @@
element footer { footer.inner & footer.attrs }
footer.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.contentinfo
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.contentinfo
| common.attrs.aria.role.presentation
)?
)
footer.inner =
( common.inner.flow )
common.elem.flow |= footer.elem
## main content: <main>
main.elem =
element main { main.inner & main.attrs }
main.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.main
)?
)
main.inner =
( common.inner.flow )
common.elem.flow |= main.elem
@@ -78,7 +78,10 @@ datatypes w = "http://whattf.org/datatype-draft"
element caption { caption.inner & caption.attrs }
caption.attrs =
( common.attrs
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
caption.inner =
( common.inner.flow )
@@ -91,7 +94,11 @@ datatypes w = "http://whattf.org/datatype-draft"
colgroup.elem =
element colgroup { colgroup.inner & colgroup.attrs }
colgroup.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
colgroup.attrs.span =
attribute span {
common.data.integer.positive
@@ -108,6 +115,9 @@ datatypes w = "http://whattf.org/datatype-draft"
col.attrs =
( common.attrs
& col.attrs.span?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
col.attrs.span =
attribute span {
@@ -121,7 +131,11 @@ datatypes w = "http://whattf.org/datatype-draft"
thead.elem =
element thead { thead.inner & thead.attrs }
thead.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
thead.inner =
( tr.elem* )
@@ -130,7 +144,11 @@ datatypes w = "http://whattf.org/datatype-draft"
tfoot.elem =
element tfoot { tfoot.inner & tfoot.attrs }
tfoot.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
tfoot.inner =
( tr.elem* )
@@ -139,7 +157,11 @@ datatypes w = "http://whattf.org/datatype-draft"
tbody.elem =
element tbody { tbody.inner & tbody.attrs }
tbody.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
tbody.inner =
( tr.elem* )
@@ -218,7 +240,10 @@ datatypes w = "http://whattf.org/datatype-draft"
& tables.attrs.scope?
& tables.attrs.headers?
# & tables.attrs.alignment
& common.attrs.aria.implicit.th?
& ( common.attrs.aria.implicit.th
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
th.inner =
( common.inner.phrasing )
( common.inner.flow )
@@ -54,10 +54,10 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.text.attrs.type?
& shared-form.attrs.maxlength?
& shared-form.attrs.readonly?
& shared-form.attrs.readonly?
& shared-form.attrs.size?
& input.text.attrs.value?
& ( common.attrs.aria
& ( common.attrs.aria?
| common.attrs.aria.implicit.input
)?
)
@@ -84,7 +84,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.size?
& input.password.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.password.attrs.type =
attribute type {
@@ -107,7 +107,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.checkbox.attrs.type
& input.attrs.checked?
& input.checkbox.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.checkbox.attrs.type =
attribute type {
@@ -130,7 +130,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.radio.attrs.type
& input.attrs.checked?
& input.radio.attrs.value?
& common.attrs.aria.implicit.input?
& ( common.attrs.aria.role.radio
| common.attrs.aria.role.menuitemradio
)?
)
input.radio.attrs.type =
attribute type {
@@ -152,8 +154,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.button.attrs.type
& input.button.attrs.value?
& ( common.attrs.aria
| common.attrs.aria.implicit.button
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
input.button.attrs.type =
@@ -177,7 +184,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.submit.attrs.type
& input.submit.attrs.value?
& common.attrs.aria.implicit.button?
& common.attrs.aria?
)
input.submit.attrs.type =
attribute type {
@@ -199,7 +206,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.reset.attrs.type
& input.reset.attrs.value?
& common.attrs.aria.implicit.button?
& common.attrs.aria?
)
input.reset.attrs.type =
attribute type {
@@ -222,7 +229,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.file.attrs.type
& input.file.attrs.accept?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.file.attrs.type =
attribute type {
@@ -244,6 +251,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.hidden.attrs.type
& input.hidden.attrs.value?
& common.attrs.aria?
)
input.hidden.attrs.type =
attribute type {
@@ -266,8 +274,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.image.attrs.type
& input.image.attrs.alt
& input.image.attrs.src?
& ( common.attrs.aria
| common.attrs.aria.implicit.button
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
input.image.attrs.type =
@@ -296,7 +309,12 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& shared-form.attrs.readonly?
& textarea.attrs.rows-and-cols-wf1
& common.attrs.aria.implicit.input?
& ( common.attrs.aria.implicit.input
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.combobox
| common.attrs.aria.role.textbox
)?
#FIXME onfocus, onblur, onselect,onchange
)
# This is ugly.
@@ -333,7 +351,12 @@ datatypes w = "http://whattf.org/datatype-draft"
& option.attrs.selected?
& option.attrs.label?
& option.attrs.value?
& common.attrs.aria.implicit.input?
& ( common.attrs.aria.implicit.input
| common.attrs.aria.role.option
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.menuitemcheckbox
)?
)
option.attrs.selected =
attribute selected {
@@ -358,6 +381,9 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& optgroup.attrs.label
& common-form.attrs.disabled?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
optgroup.attrs.label =
attribute label {
@@ -369,13 +395,17 @@ datatypes w = "http://whattf.org/datatype-draft"
## Selection Menu: <select>
select.elem =
element select { select.inner & select.attrs }
element select { select.inner & select.attrs }
select.attrs =
( common.attrs
& common-form.attrs
& select.attrs.size?
& select.attrs.multiple?
# FIXME onfocus, onblur, onchange
& ( common.attrs.aria.role.listbox # aria-multiselectable depends on "multiple" value; check in assertions
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
select.attrs.size =
attribute size {
@@ -410,7 +440,14 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& button.submit.attrs.type?
& button.attrs.value?
& common.attrs.aria.implicit.button?
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
button.submit.attrs.type =
attribute type {
@@ -428,7 +465,14 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& button.reset.attrs.type
& button.attrs.value? #REVISIT I guess this still affects the DOM
& common.attrs.aria.implicit.button?
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
button.reset.attrs.type =
attribute type {
@@ -446,8 +490,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& button.button.attrs.type
& button.attrs.value? #REVISIT I guess this still affects the DOM
& ( common.attrs.aria
| common.attrs.aria.implicit.button
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
button.button.attrs.type =
@@ -470,7 +519,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& form.attrs.enctype?
& common-form.attrs.name?
& form.attrs.accept-charset?
& ( common.attrs.aria
& ( common.attrs.aria?
| common.attrs.aria.implicit.region
)?
)
@@ -507,7 +556,9 @@ datatypes w = "http://whattf.org/datatype-draft"
element fieldset { fieldset.inner & fieldset.attrs }
fieldset.attrs =
( common.attrs
& common.attrs.aria.implicit.group?
& ( common.attrs.aria?
| common.attrs.aria.implicit.region
)?
)
fieldset.inner =
( legend.elem? #REVISIT should this be required?
@@ -523,7 +574,10 @@ datatypes w = "http://whattf.org/datatype-draft"
label.attrs =
( common.attrs
& label.attrs.for?
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
label.attrs.for =
attribute for {
@@ -194,7 +194,7 @@ datatypes w = "http://whattf.org/datatype-draft"
## Global Date and Time: <input type='datetime'>
input.datetime.elem =
element input { input.datetime.attrs }
element input { input.datetime.attrs }
input.datetime.attrs =
( common.attrs
& common-form.attrs
@@ -208,7 +208,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.datetime.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.datetime.attrs.type =
attribute type {
@@ -224,7 +224,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.datetime.attrs.value =
attribute value {
common.data.datetime
w:string "" | common.data.datetime
}
input.elem |= input.datetime.elem
@@ -246,7 +246,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.datetime-local.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.datetime-local.attrs.type =
attribute type {
@@ -262,7 +262,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.datetime-local.attrs.value =
attribute value {
form.data.datetime-local
w:string "" | form.data.datetime-local
}
input.elem |= input.datetime-local.elem
@@ -284,7 +284,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.date.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.date.attrs.type =
attribute type {
@@ -300,7 +300,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.date.attrs.value =
attribute value {
form.data.date
w:string "" | form.data.date
}
input.elem |= input.date.elem
@@ -322,7 +322,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.month.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.month.attrs.type =
attribute type {
@@ -338,7 +338,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.month.attrs.value =
attribute value {
form.data.month
w:string "" | form.data.month
}
input.elem |= input.month.elem
@@ -360,7 +360,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.time.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.time.attrs.type =
attribute type {
@@ -376,7 +376,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.time.attrs.value =
attribute value {
form.data.time
w:string "" | form.data.time
}
input.elem |= input.time.elem
@@ -398,7 +398,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.week.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.week.attrs.type =
attribute type {
@@ -414,7 +414,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.week.attrs.value =
attribute value {
form.data.week
w:string "" | form.data.week
}
input.elem |= input.week.elem
@@ -435,8 +435,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.attrs.step.float?
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& shared-form.attrs.placeholder?
& input.number.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.number.attrs.type =
attribute type {
@@ -452,7 +453,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.number.attrs.value =
attribute value {
common.data.float
w:string "" | common.data.float
}
input.elem |= input.number.elem
@@ -472,7 +473,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.range.attrs.max?
& input.attrs.step.float?
& input.range.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.range.attrs.type =
attribute type {
@@ -515,7 +516,7 @@ datatypes w = "http://whattf.org/datatype-draft"
)
| input.email.attrs.value.single?
)?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.email.attrs.type =
attribute type {
@@ -535,7 +536,7 @@ datatypes w = "http://whattf.org/datatype-draft"
## IRI: <input type='url'>
input.url.elem =
element input { input.url.attrs }
element input { input.url.attrs }
input.url.attrs =
( common.attrs
& common-form.attrs
@@ -550,7 +551,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.size?
& shared-form.attrs.placeholder?
& input.url.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.url.attrs.type =
attribute type {
@@ -566,7 +567,7 @@ datatypes w = "http://whattf.org/datatype-draft"
## Search: <input type='search'>
input.search.elem =
element input { input.search.attrs }
element input { input.search.attrs }
input.search.attrs =
( common.attrs
& common-form.attrs
@@ -582,7 +583,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.placeholder?
& shared-form.attrs.dirname?
& input.search.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.search.attrs.type =
attribute type {
@@ -613,7 +614,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.size?
& shared-form.attrs.placeholder?
& input.tel.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.tel.attrs.type =
attribute type {
@@ -638,7 +639,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.autofocus?
& input.attrs.list?
& input.color.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.color.attrs.type =
attribute type {
@@ -646,7 +647,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.color.attrs.value =
attribute value {
form.data.color
w:string "" | form.data.color
}
input.elem |= input.color.elem
@@ -660,7 +661,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs.name?
& common-form.attrs.form?
& output.attrs.for?
& common.attrs.aria.implicit.region?
& common.attrs.aria?
)
output.attrs.for =
attribute for {
@@ -710,7 +711,12 @@ datatypes w = "http://whattf.org/datatype-draft"
datalist.inner =
( option.elem* & common.inner.phrasing )
datalist.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.listbox # aria-multiselectable must be false; check by assertions
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
common.elem.phrasing |= datalist.elem
@@ -777,7 +783,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& keygen.attrs.keytype?
& shared-form.attrs.autofocus?
& common-form.attrs?
#REVISIT which ARIA attributes needed here
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
keygen.attrs.challenge =
attribute challenge {
@@ -2,7 +2,7 @@ The RELAX NG Schema for (X)HTML 5 is licensed under the MIT open source license.
The following legal notice applies to all files in this directory:
Copyright (c) 2005-2007 Elika J. Etemad (fantasai) and Henri Sivonen (hsivonen)
Copyright (c) 2007-2008 Mozilla Foundation
Copyright (c) 2007-2012 Mozilla Foundation
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
@@ -10,6 +10,7 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs.contextmenu?
& common.attrs.contenteditable?
& common.attrs.draggable?
& common.attrs.dropzone?
& common.attrs.hidden?
& common.attrs.spellcheck?
)
@@ -37,6 +38,26 @@ datatypes w = "http://whattf.org/datatype-draft"
w:string "true" | w:string "false"
}
## Dropzone: dropzone
common.attrs.dropzone =
attribute dropzone {
list {
( xsd:string { pattern = "[sS][tT][rR][iI][nN][gG]:.+" }
| xsd:string { pattern = "[fF][iI][lL][eE]:.+" }
)*
,
( w:string "copy"
| w:string "move"
| w:string "link"
)?
,
( xsd:string { pattern = "[sS][tT][rR][iI][nN][gG]:.+" }
| xsd:string { pattern = "[fF][iI][lL][eE]:.+" }
)*
}
}
## Hidden Element: hidden
common.attrs.hidden =
@@ -55,7 +76,7 @@ datatypes w = "http://whattf.org/datatype-draft"
html.attrs.manifest =
attribute manifest {
common.data.uri
common.data.uri.non-empty
}
html.attrs &= html.attrs.manifest?
@@ -68,6 +89,10 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& progress.attrs.value?
& progress.attrs.max?
& ( common.attrs.aria.role.progressbar
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
progress.attrs.value =
attribute value {
@@ -82,6 +107,34 @@ datatypes w = "http://whattf.org/datatype-draft"
common.elem.phrasing |= progress.elem
## Dialog box, inspector, or window: <dialog>
dialog.elem =
element dialog { dialog.inner & dialog.attrs }
dialog.attrs =
( common.attrs
& dialog.attrs.open?
& ( common.attrs.aria.role.alert
| common.attrs.aria.role.alertdialog
| common.attrs.aria.role.contentinfo
| common.attrs.aria.role.dialog
| common.attrs.aria.role.log
| common.attrs.aria.role.main
| common.attrs.aria.role.marquee
| common.attrs.aria.role.region
| common.attrs.aria.role.status
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.search
)?
)
dialog.attrs.open =
attribute open {
w:string "open" | w:string ""
}
dialog.inner =
( common.inner.flow )
common.elem.flow |= dialog.elem
## Command with an associated action: <command type='command'>
command.command.elem =
@@ -90,6 +143,9 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& command.command.attrs.type?
& common-command.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
command.command.attrs.type =
attribute type {
@@ -103,11 +159,14 @@ datatypes w = "http://whattf.org/datatype-draft"
element command { command.inner & command.radio.attrs }
command.radio.attrs =
( common.attrs
& ( command.radio.attrs.type
& command.radio.attrs.radiogroup #REVISIT taking liberties here
& command.radio.attrs.checked?
)
& common-command.attrs
& ( command.radio.attrs.type
& command.radio.attrs.radiogroup #REVISIT taking liberties here
& command.radio.attrs.checked?
)
& common-command.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
command.radio.attrs.type =
attribute type {
@@ -129,11 +188,14 @@ datatypes w = "http://whattf.org/datatype-draft"
element command { command.inner & command.checkbox.attrs }
command.checkbox.attrs =
( common.attrs
& ( command.checkbox.attrs.type
& command.checkbox.attrs.checked?
)
& common-command.attrs
& ( command.checkbox.attrs.type
& command.checkbox.attrs.checked?
)
& common-command.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
command.checkbox.attrs.type =
attribute type {
w:string "checkbox"
@@ -155,7 +217,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
command.attrs.icon =
attribute icon {
common.data.uri
common.data.uri.non-empty
}
command.attrs.disabled =
attribute disabled {
@@ -176,6 +238,7 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& menu.attrs.type?
& menu.attrs.label?
& common.attrs.aria? # some roles only allowed if type is "toolbar" state; check in assertions
)
menu.attrs.type =
attribute type {
@@ -198,7 +261,9 @@ datatypes w = "http://whattf.org/datatype-draft"
mli.elem =
element li { mli.inner & mli.attrs }
mli.attrs =
( common.attrs )
( common.attrs
& common.attrs.aria?
)
mli.inner =
( common.inner.flow )
@@ -223,7 +288,7 @@ datatypes w = "http://whattf.org/datatype-draft"
common.data.integer.non-negative
}
canvas.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
canvas.inner.phrasing =
( common.inner.phrasing )
@@ -237,15 +302,50 @@ datatypes w = "http://whattf.org/datatype-draft"
details.attrs =
( common.attrs
& details.attrs.open?
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region # aria-expanded must be true if open attr present; check by assertions
| common.attrs.aria.role.alertdialog
| common.attrs.aria.role.banner
| common.attrs.aria.role.button
| common.attrs.aria.role.combobox
| common.attrs.aria.role.dialog
| common.attrs.aria.role.directory
| common.attrs.aria.role.heading
| common.attrs.aria.role.img
| common.attrs.aria.role.link
| common.attrs.aria.role.list
| common.attrs.aria.role.listbox
| common.attrs.aria.role.listitem
| common.attrs.aria.role.log
| common.attrs.aria.role.marquee
| common.attrs.aria.role.menu
| common.attrs.aria.role.menubar
| common.attrs.aria.role.note
| common.attrs.aria.role.separator
| common.attrs.aria.role.status
| common.attrs.aria.role.tab
| common.attrs.aria.role.tablist
| common.attrs.aria.role.tabpanel
| common.attrs.aria.role.toolbar
| common.attrs.aria.role.tree
| common.attrs.aria.role.treeitem
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.article
| common.attrs.aria.landmark.complementary
| common.attrs.aria.landmark.contentinfo
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.form
| common.attrs.aria.landmark.main
| common.attrs.aria.landmark.navigation
| common.attrs.aria.landmark.search
)?
)
details.attrs.open =
attribute open {
w:string "open" | w:string ""
}
details.inner =
( summary.elem?
, common.inner.flow
( summary.elem
, common.inner.flow
)
common.elem.flow |= details.elem
@@ -255,6 +355,10 @@ datatypes w = "http://whattf.org/datatype-draft"
summary.elem =
element summary { summary.inner & summary.attrs }
summary.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
summary.inner =
( common.inner.phrasing )
@@ -315,6 +315,7 @@ common.attrs.aria.implicit.listitem |=
{ string "true"
| string "false" #default
}
common.attrs.aria.prop.readonly |= aria.prop.readonly
## relevant
aria.prop.relevant =
@@ -410,6 +411,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "alert" }
common.attrs.aria |= aria.alert
common.attrs.aria.role.alert |= aria.alert
## alertdialog
aria.alertdialog =
@@ -420,6 +422,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "alertdialog" }
common.attrs.aria |= aria.alertdialog
common.attrs.aria.role.alertdialog |= aria.alertdialog
## application
aria.application =
@@ -463,6 +466,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "button" }
common.attrs.aria |= aria.button
common.attrs.aria.role.button |= aria.button
## checkbox
aria.checkbox =
@@ -474,7 +478,18 @@ common.attrs.aria.implicit.listitem |=
common.attrs.aria |= aria.checkbox
# XXX columnheader
# 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.role.columnheader =
attribute role { string "columnheader" }
common.attrs.aria |= aria.columnheader
## combobox
aria.combobox =
@@ -486,6 +501,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "combobox" }
common.attrs.aria |= aria.combobox
common.attrs.aria.role.combobox |= aria.combobox
## complementary
aria.complementary =
@@ -528,6 +544,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "dialog" }
common.attrs.aria |= aria.dialog
common.attrs.aria.role.dialog |= aria.dialog
## directory
aria.directory =
@@ -538,6 +555,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "directory" }
common.attrs.aria |= aria.directory
common.attrs.aria.role.directory |= aria.directory
## document
aria.document =
@@ -550,6 +568,17 @@ common.attrs.aria.implicit.listitem |=
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
@@ -588,7 +617,17 @@ common.attrs.aria.implicit.listitem |=
common.attrs.aria |= aria.group
## XXX heading
## 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 =
@@ -599,6 +638,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "img" }
common.attrs.aria |= aria.img
common.attrs.aria.role.img |= aria.img
## link
aria.link =
@@ -608,6 +648,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "link" }
common.attrs.aria |= aria.link
common.attrs.aria.role.link |= aria.link
## list
aria.list =
@@ -618,6 +659,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "list" }
common.attrs.aria |= aria.list
common.attrs.aria.role.list |= aria.list
## listbox
aria.listbox =
@@ -630,6 +672,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "listbox" }
common.attrs.aria |= aria.listbox
common.attrs.aria.role.listbox |= aria.listbox
## listitem
aria.listitem =
@@ -643,6 +686,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "listitem" }
common.attrs.aria |= aria.listitem
common.attrs.aria.role.listitem |= aria.listitem
## log
aria.log =
@@ -653,6 +697,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "log" }
common.attrs.aria |= aria.log
common.attrs.aria.role.log |= aria.log
## main
aria.main =
@@ -674,6 +719,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "marquee" }
common.attrs.aria |= aria.marquee
common.attrs.aria.role.marquee |= aria.marquee
## math
aria.math =
@@ -695,6 +741,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menu" }
common.attrs.aria |= aria.menu
common.attrs.aria.role.menu |= aria.menu
## menubar
aria.menubar =
@@ -706,6 +753,8 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menubar" }
common.attrs.aria |= aria.menubar
common.attrs.aria.role.menubar |= aria.menubar
## menuitem
aria.menuitem =
@@ -714,6 +763,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menuitem" }
common.attrs.aria |= aria.menuitem
common.attrs.aria.role.menuitem |= aria.menuitem
## menuitemcheckbox
aria.menuitemcheckbox =
@@ -724,6 +774,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menuitemcheckbox" }
common.attrs.aria |= aria.menuitemcheckbox
common.attrs.aria.role.menuitemcheckbox |= aria.menuitemcheckbox
## menuitemradio
aria.menuitemradio =
@@ -735,6 +786,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "menuitemradio" }
common.attrs.aria |= aria.menuitemradio
common.attrs.aria.role.menuitemradio |= aria.menuitemradio
## navigation
aria.navigation =
@@ -768,6 +820,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "option" }
common.attrs.aria |= aria.option
common.attrs.aria.role.option |= aria.option
## presentation
@@ -779,6 +832,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "presentation" }
common.attrs.aria |= aria.presentation
common.attrs.aria.role.presentation |= aria.presentation
## progressbar
aria.progressbar =
@@ -792,6 +846,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "progressbar" }
common.attrs.aria |= aria.progressbar
common.attrs.aria.role.progressbar |= aria.progressbar
## radio
aria.radio =
@@ -803,6 +858,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "radio" }
common.attrs.aria |= aria.radio
common.attrs.aria.role.radio |= aria.radio
## radiogroup
aria.radiogroup =
@@ -824,6 +880,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "region" }
common.attrs.aria |= aria.region
common.attrs.aria.role.region |= aria.region
## row
aria.row =
@@ -838,7 +895,18 @@ common.attrs.aria.implicit.listitem |=
common.attrs.aria |= aria.row
# XXX rowheader
# 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.role.rowheader =
attribute role { string "rowheader" }
common.attrs.aria |= aria.rowheader
## search
aria.search =
@@ -860,6 +928,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "separator" }
common.attrs.aria |= aria.separator
common.attrs.aria.role.separator |= aria.separator
## slider
aria.slider =
@@ -873,6 +942,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "slider" }
common.attrs.aria |= aria.slider
common.attrs.aria.role.slider |= aria.slider
## spinbutton
aria.spinbutton =
@@ -887,6 +957,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "spinbutton" }
common.attrs.aria |= aria.spinbutton
common.attrs.aria.role.spinbutton |= aria.spinbutton
## status
aria.status =
@@ -898,6 +969,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "status" }
common.attrs.aria |= aria.status
common.attrs.aria.role.status |= aria.status
## tab
aria.tab =
@@ -909,6 +981,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "tab" }
common.attrs.aria |= aria.tab
common.attrs.aria.role.tab |= aria.tab
## tablist
aria.tablist =
@@ -918,6 +991,8 @@ common.attrs.aria.implicit.listitem |=
)
aria.role.tablist =
attribute role { string "tablist" }
common.attrs.aria |= aria.tablist
common.attrs.aria.role.tablist |= aria.tablist
## tabpanel
aria.tabpanel =
@@ -928,6 +1003,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "tabpanel" }
common.attrs.aria |= aria.tabpanel
common.attrs.aria.role.tabpanel |= aria.tabpanel
## textbox
aria.textbox =
@@ -940,6 +1016,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "textbox" }
common.attrs.aria |= aria.textbox
common.attrs.aria.role.textbox |= aria.textbox
## timer
aria.timer =
@@ -962,6 +1039,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "toolbar" }
common.attrs.aria |= aria.toolbar
common.attrs.aria.role.toolbar |= aria.toolbar
## tooltip
aria.tooltip =
@@ -984,6 +1062,7 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "tree" }
common.attrs.aria |= aria.tree
common.attrs.aria.role.tree |= aria.tree
## treegrid
aria.treegrid =
@@ -1013,5 +1092,4 @@ common.attrs.aria.implicit.listitem |=
attribute role { string "treeitem" }
common.attrs.aria |= aria.treeitem
common.attrs.aria.role.treeitem |= aria.treeitem
@@ -25,7 +25,12 @@ datatypes w = "http://whattf.org/datatype-draft"
hr.elem =
element hr { hr.inner & hr.attrs }
hr.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.separator
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
hr.inner =
( empty )
@@ -56,8 +61,17 @@ datatypes w = "http://whattf.org/datatype-draft"
element ul { ul.inner & ul.attrs }
ul.attrs =
( common.attrs
& ( common.attrs.aria
| common.attrs.aria.implicit.region
& ( ( common.attrs.aria.role.directory
| common.attrs.aria.role.list
| common.attrs.aria.role.listbox
| common.attrs.aria.role.menu
| common.attrs.aria.role.menubar
| common.attrs.aria.role.tablist
| common.attrs.aria.role.toolbar
| common.attrs.aria.role.tree
| common.attrs.aria.role.presentation
)
| common.attrs.aria.implicit.region
)?
)
ul.inner =
@@ -71,9 +85,7 @@ datatypes w = "http://whattf.org/datatype-draft"
element li { li.inner & li.attrs }
li.attrs =
( common.attrs
& ( common.attrs.aria
| common.attrs.aria.implicit.listitem
)?
& common.attrs.aria?
)
li.inner =
( common.inner.flow )
@@ -86,8 +98,18 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& ol.attrs.start?
& ol.attrs.reversed?
& ( common.attrs.aria
| common.attrs.aria.implicit.region
& ol.attrs.type?
& ( ( common.attrs.aria.role.directory
| common.attrs.aria.role.list
| common.attrs.aria.role.listbox
| common.attrs.aria.role.menu
| common.attrs.aria.role.menubar
| common.attrs.aria.role.tablist
| common.attrs.aria.role.toolbar
| common.attrs.aria.role.tree
| common.attrs.aria.role.presentation
)
| common.attrs.aria.implicit.region
)?
)
ol.attrs.start =
@@ -98,6 +120,10 @@ datatypes w = "http://whattf.org/datatype-draft"
attribute reversed {
w:string "reversed" | w:string ""
}
ol.attrs.type =
attribute type {
w:string "1" | w:string "a" | w:string "A" | w:string "i" | w:string "I"
}
ol.inner =
( oli.elem* )
@@ -110,9 +136,7 @@ datatypes w = "http://whattf.org/datatype-draft"
oli.attrs =
( common.attrs
& oli.attrs.value?
& ( common.attrs.aria
| common.attrs.aria.implicit.listitem
)?
& common.attrs.aria?
)
oli.attrs.value =
attribute value {
@@ -149,7 +173,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.aria?
)
dt.inner =
( common.inner.phrasing )
( common.inner.flow )
## Definition Description: <dd>
@@ -178,9 +202,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.aria?
)
div.inner =
( style.elem.scoped*
, common.inner.flow
)
( common.inner.flow )
common.elem.flow |= div.elem
@@ -190,7 +212,10 @@ datatypes w = "http://whattf.org/datatype-draft"
element legend { legend.inner & legend.attrs }
legend.attrs =
( common.attrs
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
legend.inner =
( common.inner.phrasing )
@@ -29,6 +29,9 @@ datatypes w = "http://whattf.org/datatype-draft"
## XML features that can't be serialized as HTML
nonHTMLizable = empty
## features that are not part of the W3C HTML spec
nonW3C = empty
# #####################################################################
## Wildcards #
# #####################################################################
@@ -86,8 +89,15 @@ datatypes w = "http://whattf.org/datatype-draft"
## Prose Content
common.inner.transparent.flow =
( text & common.elem.flow* )
common.inner.flow =
( text & common.elem.flow* ) # REVISIT <style scoped>
( style.elem.scoped?,
( text
& common.elem.flow*
)
)
# #####################################################################
## Common Attributes #
@@ -138,16 +148,17 @@ common.attrs.basic =
common.attrs.xmlspace
common.attrs.xmlspace =
attribute xml:space {
string "preserve" # REVISIT this is not allowed per spec
string "preserve" | string "default"
} & XMLonly
common.attrs.i18n =
( common.attrs.dir?
& common.attrs.language?
& common.attrs.translate?
)
common.attrs.dir =
attribute dir {
w:string "ltr" | w:string "rtl"
w:string "ltr" | w:string "rtl" | w:string "auto"
}
# This lang definition is a hack for enviroments where
# the HTML5 parser maps lang to xml:lang.
@@ -176,6 +187,10 @@ common.attrs.i18n =
# attribute xml:lang {
# common.data.langcode
# } & XMLonly
common.attrs.translate =
attribute translate {
w:string "yes" | w:string "no"
}
common.attrs.present =
( common.attrs.style?
@@ -292,10 +307,31 @@ common.attrs.other =
common.data.date-or-time =
w:date-or-time
common.data.date =
w:date
common.data.time-datetime =
w:time-datetime
## IRIs
common.data.uri =
w:string "" | w:iri-ref
# allow either a non-empty IRI ref or zero or more HTML
# space characters (which are: space, tab, LF, FF, CR)
( w:iri-ref
| xsd:string {
pattern = "[ \x{0A}-\x{0D}]*"
# NOTE The range above incorrectly allows U+000B
# in addition to the HTML space characters; but
# that's not a problem in practice because HTML
# and XML parsers will both catch any U+000B
# and report an error for it before that pattern
# ever gets evaluated.
}
)
common.data.uri.non-empty =
w:iri-ref
common.data.uris =
list { w:iri-ref* }
@@ -351,14 +387,18 @@ common.attrs.other =
common.data.keylabellist =
w:keylabellist
## Microdata Identifier
common.data.microdata-identifier =
w:microdata-identifier
## Microdata Properties
common.data.microdata-properties =
list { w:microdata-property+ }
## Zero
common.data.zero =
w:zero
## ECMAScript FunctionBody
common.data.functionbody =
w:functionbody
# #####################################################################
## WF2 Module Hook #
# #####################################################################
@@ -370,6 +410,50 @@ common-form.attrs.form = ( notAllowed )
# #####################################################################
common.attrs.aria = ( notAllowed )
common.attrs.aria.role.alert = ( notAllowed )
common.attrs.aria.role.alertdialog = ( notAllowed )
common.attrs.aria.role.application = ( notAllowed )
common.attrs.aria.role.article = ( notAllowed )
common.attrs.aria.role.banner = ( notAllowed )
common.attrs.aria.role.button = ( notAllowed )
common.attrs.aria.role.checkbox = ( notAllowed )
common.attrs.aria.role.combobox = ( notAllowed )
common.attrs.aria.role.complementary = ( notAllowed )
common.attrs.aria.role.contentinfo = ( notAllowed )
common.attrs.aria.role.dialog = ( notAllowed )
common.attrs.aria.role.directory = ( notAllowed )
common.attrs.aria.role.document = ( notAllowed )
common.attrs.aria.role.heading = ( notAllowed )
common.attrs.aria.role.img = ( notAllowed )
common.attrs.aria.role.link = ( notAllowed )
common.attrs.aria.role.list = ( notAllowed )
common.attrs.aria.role.listitem = ( notAllowed )
common.attrs.aria.role.log = ( notAllowed )
common.attrs.aria.role.listbox = ( notAllowed )
common.attrs.aria.role.main = ( notAllowed )
common.attrs.aria.role.marquee = ( notAllowed )
common.attrs.aria.role.menu = ( notAllowed )
common.attrs.aria.role.menubar = ( notAllowed )
common.attrs.aria.role.menuitem = ( notAllowed )
common.attrs.aria.role.menuitemcheckbox = ( notAllowed )
common.attrs.aria.role.menuitemradio = ( notAllowed )
common.attrs.aria.role.note = ( notAllowed )
common.attrs.aria.role.option = ( notAllowed )
common.attrs.aria.role.presentation = ( notAllowed )
common.attrs.aria.role.progressbar = ( notAllowed )
common.attrs.aria.role.radio = ( notAllowed )
common.attrs.aria.role.region = ( notAllowed )
common.attrs.aria.role.search = ( notAllowed )
common.attrs.aria.role.separator = ( notAllowed )
common.attrs.aria.role.slider = ( notAllowed )
common.attrs.aria.role.spinbutton = ( notAllowed )
common.attrs.aria.role.status = ( notAllowed )
common.attrs.aria.role.tab = ( notAllowed )
common.attrs.aria.role.tablist = ( notAllowed )
common.attrs.aria.role.textbox = ( notAllowed )
common.attrs.aria.role.toolbar = ( notAllowed )
common.attrs.aria.role.tree = ( notAllowed )
common.attrs.aria.role.treeitem = ( notAllowed )
common.attrs.aria.implicit.button = ( notAllowed )
common.attrs.aria.implicit.input = ( notAllowed )
common.attrs.aria.implicit.region = ( notAllowed )
@@ -380,6 +464,7 @@ common.attrs.aria.implicit.link = ( notAllowed )
common.attrs.aria.implicit.listitem = ( notAllowed )
common.attrs.aria.implicit.img = ( notAllowed )
common.attrs.aria.implicit.select = ( notAllowed )
common.attrs.aria.prop.readonly = ( notAllowed )
common.attrs.aria.landmark.application = ( notAllowed )
common.attrs.aria.landmark.banner = ( notAllowed )
common.attrs.aria.landmark.complementary = ( notAllowed )
@@ -15,21 +15,27 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& script.attrs.type?
& script.attrs.language? # restricted in Schematron
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
script.elem.imported =
element script { script.inner.imported & script.attrs.imported }
script.attrs.imported =
( common.attrs
& script.attrs.src
& script.attrs.src?
& script.attrs.defer?
& script.attrs.async?
& script.attrs.type?
& script.attrs.charset?
& script.attrs.language? # restricted in Schematron
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
script.attrs.src =
attribute src {
common.data.uri
common.data.uri.non-empty
}
script.attrs.defer =
attribute defer {
@@ -86,7 +92,11 @@ datatypes w = "http://whattf.org/datatype-draft"
noscript.inner.flow =
( common.inner.flow )
noscript.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
common.elem.metadata |= noscript.elem.head
common.elem.phrasing |= noscript.elem.phrasing
@@ -116,8 +126,6 @@ datatypes w = "http://whattf.org/datatype-draft"
& scripting.attr.onended?
& scripting.attr.onerror?
& scripting.attr.onfocus?
& scripting.attr.onformchange?
& scripting.attr.onforminput?
& scripting.attr.oninput?
& scripting.attr.oninvalid?
& scripting.attr.onkeydown?
@@ -138,7 +146,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& scripting.attr.onplaying?
& scripting.attr.onprogress?
& scripting.attr.onratechange?
& scripting.attr.onreadystatechange?
& scripting.attr.onreset?
& scripting.attr.onscroll?
& scripting.attr.onseeked?
& scripting.attr.onseeking?
@@ -155,113 +163,113 @@ datatypes w = "http://whattf.org/datatype-draft"
common.attrs.other &= common.attrs.scripting
scripting.attr.onabort =
attribute onabort { string }
attribute onabort { common.data.functionbody }
scripting.attr.onblur =
attribute onblur { string }
attribute onblur { common.data.functionbody }
scripting.attr.oncanplay =
attribute oncanplay { string }
attribute oncanplay { common.data.functionbody }
scripting.attr.oncanplaythrough =
attribute oncanplaythrough { string }
attribute oncanplaythrough { common.data.functionbody }
scripting.attr.onchange =
attribute onchange { string }
attribute onchange { common.data.functionbody }
scripting.attr.onclick =
attribute onclick { string }
attribute onclick { common.data.functionbody }
scripting.attr.oncontextmenu =
attribute oncontextmenu { string }
attribute oncontextmenu { common.data.functionbody }
scripting.attr.ondblclick =
attribute ondblclick { string }
attribute ondblclick { common.data.functionbody }
scripting.attr.ondrag =
attribute ondrag { string }
attribute ondrag { common.data.functionbody }
scripting.attr.ondragend =
attribute ondragend { string }
attribute ondragend { common.data.functionbody }
scripting.attr.ondragenter =
attribute ondragenter { string }
attribute ondragenter { common.data.functionbody }
scripting.attr.ondragleave =
attribute ondragleave { string }
attribute ondragleave { common.data.functionbody }
scripting.attr.ondragover =
attribute ondragover { string }
attribute ondragover { common.data.functionbody }
scripting.attr.ondragstart =
attribute ondragstart { string }
attribute ondragstart { common.data.functionbody }
scripting.attr.ondrop =
attribute ondrop { string }
attribute ondrop { common.data.functionbody }
scripting.attr.ondurationchange =
attribute ondurationchange { string }
attribute ondurationchange { common.data.functionbody }
scripting.attr.onemptied =
attribute onemptied { string }
attribute onemptied { common.data.functionbody }
scripting.attr.onended =
attribute onended { string }
attribute onended { common.data.functionbody }
scripting.attr.onerror =
attribute onerror { string }
attribute onerror { common.data.functionbody }
scripting.attr.onfocus =
attribute onfocus { string }
attribute onfocus { common.data.functionbody }
scripting.attr.onformchange =
attribute onformchange { string }
attribute onformchange { common.data.functionbody }
scripting.attr.onforminput =
attribute onforminput { string }
attribute onforminput { common.data.functionbody }
scripting.attr.oninput =
attribute oninput { string }
attribute oninput { common.data.functionbody }
scripting.attr.oninvalid =
attribute oninvalid { string }
attribute oninvalid { common.data.functionbody }
scripting.attr.onkeydown =
attribute onkeydown { string }
attribute onkeydown { common.data.functionbody }
scripting.attr.onkeypress =
attribute onkeypress { string }
attribute onkeypress { common.data.functionbody }
scripting.attr.onkeyup =
attribute onkeyup { string }
attribute onkeyup { common.data.functionbody }
scripting.attr.onload =
attribute onload { string }
attribute onload { common.data.functionbody }
scripting.attr.onloadeddata =
attribute onloadeddata { string }
attribute onloadeddata { common.data.functionbody }
scripting.attr.onloadedmetadata =
attribute onloadedmetadata { string }
attribute onloadedmetadata { common.data.functionbody }
scripting.attr.onloadstart =
attribute onloadstart { string }
attribute onloadstart { common.data.functionbody }
scripting.attr.onmousedown =
attribute onmousedown { string }
attribute onmousedown { common.data.functionbody }
scripting.attr.onmousemove =
attribute onmousemove { string }
attribute onmousemove { common.data.functionbody }
scripting.attr.onmouseout =
attribute onmouseout { string }
attribute onmouseout { common.data.functionbody }
scripting.attr.onmouseover =
attribute onmouseover { string }
attribute onmouseover { common.data.functionbody }
scripting.attr.onmouseup =
attribute onmouseup { string }
attribute onmouseup { common.data.functionbody }
scripting.attr.onmousewheel =
attribute onmousewheel { string }
attribute onmousewheel { common.data.functionbody }
scripting.attr.onpause =
attribute onpause { string }
attribute onpause { common.data.functionbody }
scripting.attr.onplay =
attribute onplay { string }
attribute onplay { common.data.functionbody }
scripting.attr.onplaying =
attribute onplaying { string }
attribute onplaying { common.data.functionbody }
scripting.attr.onprogress =
attribute onprogress { string }
attribute onprogress { common.data.functionbody }
scripting.attr.onratechange =
attribute onratechange { string }
scripting.attr.onreadystatechange =
attribute onreadystatechange { string }
attribute onratechange { common.data.functionbody }
scripting.attr.onreset =
attribute onreset { common.data.functionbody }
scripting.attr.onscroll =
attribute onscroll { string }
attribute onscroll { common.data.functionbody }
scripting.attr.onseeked =
attribute onseeked { string }
attribute onseeked { common.data.functionbody }
scripting.attr.onseeking =
attribute onseeking { string }
attribute onseeking { common.data.functionbody }
scripting.attr.onselect =
attribute onselect { string }
attribute onselect { common.data.functionbody }
scripting.attr.onshow =
attribute onshow { string }
attribute onshow { common.data.functionbody }
scripting.attr.onstalled =
attribute onstalled { string }
attribute onstalled { common.data.functionbody }
scripting.attr.onsubmit =
attribute onsubmit { string }
attribute onsubmit { common.data.functionbody }
scripting.attr.onsuspend =
attribute onsuspend { string }
attribute onsuspend { common.data.functionbody }
scripting.attr.ontimeupdate =
attribute ontimeupdate { string }
attribute ontimeupdate { common.data.functionbody }
scripting.attr.onvolumechange =
attribute onvolumechange { string }
attribute onvolumechange { common.data.functionbody }
scripting.attr.onwaiting =
attribute onwaiting { string }
attribute onwaiting { common.data.functionbody }
# scripting.attr.common =
# ( scripting.attr.mouse
@@ -11,15 +11,21 @@ datatypes w = "http://whattf.org/datatype-draft"
time.attrs =
( common.attrs
& time.attrs.datetime?
& time.attrs.pubdate?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
time.attrs.datetime =
attribute datetime {
common.data.date-or-time #REVISIT check format
common.data.time-datetime
}
time.attrs.pubdate =
attribute pubdate {
w:string "pubdate" | w:string ""
time.attrs.datetime.dateonly =
attribute datetime {
common.data.date
}
time.attrs.datetime.tz =
attribute datetime {
common.data.datetime
}
time.inner =
( common.inner.phrasing ) #Cannot enforce textContent format here
@@ -38,6 +44,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& meter.attrs.high?
& meter.attrs.max?
& meter.attrs.optimum?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meter.attrs.value =
attribute value {
+108 -16
View File
@@ -15,17 +15,17 @@ namespace local = ""
img.attrs =
( common.attrs
& img.attrs.src
& img.attrs.alt?
& img.attrs.alt? # ARIA: if alt empty, only allowed role value is "presentation"; check in assertions
& img.attrs.height?
& img.attrs.width?
& img.attrs.usemap?
& img.attrs.ismap?
& img.attrs.border? # obsolete
& img.attrs.border? # obsolete
& common.attrs.aria?
)
img.attrs.src =
attribute src {
common.data.uri
common.data.uri.non-empty
}
img.attrs.alt =
attribute alt {
@@ -67,10 +67,14 @@ namespace local = ""
& embed.attrs.height?
& embed.attrs.width?
& embed.attrs.other*
& ( common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.role.img
)?
)
embed.attrs.src =
attribute src {
common.data.uri
common.data.uri.non-empty
}
embed.attrs.type =
attribute type {
@@ -94,11 +98,13 @@ namespace local = ""
| title
| dir
| lang
| translate
| style
| tabindex
| contextmenu
| contenteditable
| draggable
| dropzone
| hidden
| onabort
| onblur
@@ -120,8 +126,6 @@ namespace local = ""
| onended
| onerror
| onfocus
| onformchange
| onforminput
| oninput
| oninvalid
| onkeydown
@@ -142,7 +146,7 @@ namespace local = ""
| onplaying
| onprogress
| onratechange
| onreadystatechange
| onreset
| onscroll
| onseeked
| onseeking
@@ -174,6 +178,7 @@ namespace local = ""
| aria-describedby
| aria-disabled
| aria-dropeffect
| aria-expanded
| aria-flowto
| aria-grabbed
| aria-haspopup
@@ -184,7 +189,7 @@ namespace local = ""
| aria-live
| aria-owns
| aria-relevant
| aria-required
| aria-required
| spellcheck
| accesskey
| itemref
@@ -194,6 +199,64 @@ namespace local = ""
| itemid
| name
| align
| about
| prefix
| property
| typeof
| vocab
| content
| datatype
| href
| rel
| resource
| rev
| inlist
| its-loc-note
| its-loc-note-type
| its-loc-note-ref
| its-term-info-ref
| its-term
| its-term-confidence
| its-within-text
| its-domain-mapping
| its-disambig-granularity
| its-disambig-confidence
| its-disambig-class-ref
| its-disambig-ident
| its-disambig-ident-ref
| its-disambig-source
| its-locale-filter-list
| its-person
| its-person-ref
| its-org
| its-org-ref
| its-tool
| its-tool-ref
| its-rev-person
| its-rev-person-ref
| its-rev-org
| its-rev-org-ref
| its-rev-tool
| its-rev-tool-ref
| its-prov-ref
| its-provenance-records-ref
| its-loc-quality-issues-ref
| its-loc-quality-issue-type
| its-loc-quality-issue-comment
| its-loc-quality-issue-severity
| its-loc-quality-issue-profile-ref
| its-loc-quality-issue-enabled
| its-loc-quality-rating-score
| its-loc-quality-rating-vote
| its-loc-quality-rating-score-threshold
| its-loc-quality-rating-vote-threshold
| its-loc-quality-rating-profile-ref
| its-mt-confidence
| its-allowed-characters
| its-storage-size
| its-storage-encoding
| its-line-break-type
| its-annotators-ref
)
{
string
@@ -224,11 +287,15 @@ namespace local = ""
& object.attrs.usemap?
& object.attrs.name?
& common-form.attrs.form?
& common.attrs.aria?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.role.img
)?
)
object.attrs.data =
attribute data {
common.data.uri
common.data.uri.non-empty
}
object.attrs.type =
attribute type {
@@ -252,7 +319,7 @@ namespace local = ""
}
object.inner.flow =
( param.elem*
, common.inner.flow
, common.inner.transparent.flow
)
object.inner.phrasing =
( param.elem*
@@ -270,6 +337,9 @@ namespace local = ""
( common.attrs
& param.attrs.name
& param.attrs.value
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
param.attrs.name =
attribute name {
@@ -289,18 +359,26 @@ namespace local = ""
iframe.attrs =
( common.attrs
& iframe.attrs.src?
& iframe.attrs.srcdoc?
& iframe.attrs.name?
& iframe.attrs.width?
& iframe.attrs.height?
& iframe.attrs.sandbox?
& iframe.attrs.seamless?
& ( common.attrs.aria
| common.attrs.aria.implicit.region
& iframe.attrs.allowfullscreen?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.role.img
)?
)
iframe.attrs.src =
attribute src {
common.data.uri
common.data.uri.non-empty
}
iframe.attrs.srcdoc =
attribute srcdoc {
string #FIXME
}
iframe.attrs.name =
attribute name {
@@ -465,6 +543,10 @@ namespace local = ""
, ( w:string "allow-top-navigation" )?
}
} & v5only
iframe.attrs.allowfullscreen =
attribute allowfullscreen {
w:string "allowfullscreen" | w:string ""
} & v5only
iframe.inner =
( text )
@@ -482,13 +564,16 @@ namespace local = ""
map.attrs =
( common.attrs
& map.attrs.name
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
) # REVISIT make id required in Schematron
map.attrs.name =
attribute name {
common.data.name
}
map.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
map.inner.phrasing =
( common.inner.phrasing )
@@ -500,7 +585,10 @@ namespace local = ""
area.elem =
element area { area.inner & area.attrs }
area.attrs =
( common.attrs
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& ( area.attrs.alt
& shared-hyperlink.attrs.href
)?
@@ -511,6 +599,10 @@ namespace local = ""
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.type?
& area.attrs.shape?
& ( common.attrs.aria.role.link
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
area.attrs.alt =
attribute alt {
@@ -46,7 +46,18 @@ datatypes w = "http://whattf.org/datatype-draft"
## Color
form.data.color =
w:color
w:simple-color
# xsd:string {
# pattern = "#[a-fA-F0-9]{6}"
# }
## Text without line breaks
form.data.stringwithoutlinebreaks =
w:string-without-line-breaks
## Non-empty string
form.data.nonemptystring =
w:non-empty-string
@@ -1,4 +1,4 @@
default namespace = "http://www.w3.org/1999/xhtml/html5"
default namespace = "http://www.w3.org/1999/xhtml"
# #####################################################################
## RELAX NG Schema for HTML 5 #
# #####################################################################
@@ -12,6 +12,8 @@ datatypes w = "http://whattf.org/datatype-draft"
& media.attrs.preload?
& media.attrs.controls?
& media.attrs.loop?
& media.attrs.mediagroup?
& media.attrs.muted?
)
media.attrs.autoplay =
attribute autoplay {
@@ -29,6 +31,14 @@ datatypes w = "http://whattf.org/datatype-draft"
attribute loop {
w:string "loop" | w:string ""
}
media.attrs.mediagroup =
attribute mediagroup {
string
}
media.attrs.muted =
attribute muted {
w:string "muted" | w:string ""
}
## Source: <source>
@@ -39,10 +49,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& source.attrs.src
& source.attrs.type?
& source.attrs.media?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
source.attrs.src =
attribute src {
common.data.uri
common.data.uri.non-empty
}
source.attrs.type =
attribute type {
@@ -64,7 +77,7 @@ datatypes w = "http://whattf.org/datatype-draft"
media.attrs.src =
attribute src {
common.data.uri
common.data.uri.non-empty
}
## Video: <video>
@@ -79,10 +92,11 @@ datatypes w = "http://whattf.org/datatype-draft"
& video.attrs.poster?
& video.attrs.height?
& video.attrs.width?
& common.attrs.aria.landmark.application?
)
video.attrs.poster =
attribute poster {
common.data.uri
common.data.uri.non-empty
}
video.attrs.height =
attribute height {
@@ -94,10 +108,12 @@ datatypes w = "http://whattf.org/datatype-draft"
}
video.inner.flow =
( media.source
, common.inner.flow
, track.elem*
, common.inner.transparent.flow
)
video.inner.phrasing =
( media.source
, track.elem*
, common.inner.phrasing
)
@@ -113,29 +129,72 @@ datatypes w = "http://whattf.org/datatype-draft"
audio.attrs =
( common.attrs
& media.attrs
& common.attrs.aria.landmark.application?
)
audio.inner.flow =
( media.source
, common.inner.flow
, track.elem*
, common.inner.transparent.flow
)
audio.inner.phrasing =
( media.source
, track.elem*
, common.inner.phrasing
)
common.elem.flow |= audio.elem.flow
common.elem.phrasing |= audio.elem.phrasing
## supplementary media track: <track>
#
track.elem =
element track { track.inner & track.attrs }
track.attrs =
( common.attrs
& track.attrs.kind?
& track.attrs.src
& track.attrs.srclang?
& track.attrs.label?
& track.attrs.default?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
track.attrs.kind =
attribute kind {
w:string "subtitles" | w:string "captions" | w:string "descriptions" | w:string "chapters" | w:string "metadata"
}
track.attrs.src =
attribute src {
common.data.uri.non-empty
}
track.attrs.srclang =
attribute srclang {
common.data.langcode
}
track.attrs.label =
attribute label {
string # must be non-empty value; check is in assertions code
}
track.attrs.default =
attribute default {
w:string "default" | w:string ""
}
track.inner =
( empty )
## Captioned Content: <figure>
figure.elem =
element figure { figure.inner & figure.attrs }
figure.attrs =
( common.attrs
& common.attrs.aria.implicit.img?
& common.attrs.aria?
)
figure.inner =
( ( figcaption.elem, common.inner.flow )
( ( figcaption.elem?, common.inner.flow )
| ( common.inner.flow, figcaption.elem? )
)
@@ -146,6 +205,10 @@ datatypes w = "http://whattf.org/datatype-draft"
figcaption.elem =
element figcaption { figcaption.inner & figcaption.attrs }
figcaption.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
figcaption.inner =
( common.inner.flow )
@@ -9,7 +9,11 @@ datatypes w = "http://whattf.org/datatype-draft"
html.elem =
element html { html.inner & html.attrs }
html.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
html.inner =
( head.elem
, body.elem
@@ -22,6 +26,9 @@ datatypes w = "http://whattf.org/datatype-draft"
head.attrs =
( common.attrs
# & head.attrs.profile?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
# head.attrs.profile =
# attribute profile {
@@ -49,6 +56,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& ( common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.implicit.structure
| common.attrs.aria.role.presentation
)?
& body.attrs.onafterprint?
& body.attrs.onbeforeprint?
@@ -57,49 +65,57 @@ datatypes w = "http://whattf.org/datatype-draft"
& body.attrs.onmessage?
& body.attrs.onoffline?
& body.attrs.ononline?
& body.attrs.onpagehide?
& body.attrs.onpageshow?
& body.attrs.onpopstate?
& body.attrs.onredo?
& body.attrs.onresize?
& body.attrs.onstorage?
& body.attrs.onundo?
& body.attrs.onunload?
)
body.inner =
( common.inner.flow )
body.attrs.onafterprint =
attribute onafterprint { string }
attribute onafterprint { common.data.functionbody }
body.attrs.onbeforeprint =
attribute onbeforeprint { string }
attribute onbeforeprint { common.data.functionbody }
body.attrs.onbeforeunload =
attribute onbeforeunload { string }
attribute onbeforeunload { common.data.functionbody }
body.attrs.onhashchange =
attribute onhashchange { string }
attribute onhashchange { common.data.functionbody }
body.attrs.onmessage =
attribute onmessage { string }
attribute onmessage { common.data.functionbody }
body.attrs.onoffline =
attribute onoffline { string }
attribute onoffline { common.data.functionbody }
body.attrs.ononline =
attribute ononline { string }
attribute ononline { common.data.functionbody }
body.attrs.onpopstate =
attribute onpopstate { string }
attribute onpopstate { common.data.functionbody }
body.attrs.onpagehide =
attribute onpagehide { common.data.functionbody }
body.attrs.onpageshow =
attribute onpageshow { common.data.functionbody }
body.attrs.onredo =
attribute onredo { string }
attribute onredo { common.data.functionbody }
body.attrs.onresize =
attribute onresize { string }
attribute onresize { common.data.functionbody }
body.attrs.onstorage =
attribute onstorage { string }
attribute onstorage { common.data.functionbody }
body.attrs.onundo =
attribute onundo { string }
attribute onundo { common.data.functionbody }
body.attrs.onunload =
attribute onunload { string }
attribute onunload { common.data.functionbody }
## Document Title: <title>
title.elem =
element title { title.inner & title.attrs }
title.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
title.inner =
( text )
@@ -108,12 +124,18 @@ datatypes w = "http://whattf.org/datatype-draft"
base.elem =
element base { base.inner & base.attrs }
base.attrs =
( common.attrs
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& ( ( base.attrs.href
& base.attrs.target?
)
| base.attrs.target
)
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
base.attrs.href =
attribute href {
@@ -131,15 +153,30 @@ datatypes w = "http://whattf.org/datatype-draft"
link.elem =
element link { link.inner & link.attrs }
link.attrs =
( common.attrs
& shared-hyperlink.attrs.href
& shared-hyperlink.attrs.rel
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& link.attrs.href
& link.attrs.rel
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& link.attrs.sizes?
# link.attrs.title included in common.attrs
& ( common.attrs.aria.role.link
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
link.attrs.href =
attribute href {
common.data.uri.non-empty
}
link.attrs.rel =
attribute rel {
w:link-rel
}
link.attrs.sizes =
attribute sizes {
w:string "any" | common.data.sizes
@@ -158,6 +195,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& style.attrs.type?
& style.attrs.media?
# style.attrs.title included in common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
style.attrs.type =
attribute type {
@@ -182,6 +222,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& style.attrs.media?
& style.attrs.scoped
# style.attrs.title included in common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
style.attrs.scoped =
attribute scoped {
@@ -199,10 +242,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.other
& meta.name.attrs.name
& meta.name.attrs.content
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.name.attrs.name =
attribute name {
string
w:meta-name
}
meta.name.attrs.content =
attribute content {
@@ -224,6 +270,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.refresh
& meta.http-equiv.attrs.content.refresh
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.http-equiv.attrs.http-equiv.refresh =
attribute http-equiv {
@@ -248,6 +297,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.default-style
& meta.http-equiv.attrs.content.default-style
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.http-equiv.attrs.http-equiv.default-style =
attribute http-equiv {
@@ -262,31 +314,6 @@ datatypes w = "http://whattf.org/datatype-draft"
# if the definition is
# reused in another language
## "content-language" pragma directive: <meta http-equiv='content-language'> (obsolete)
meta.http-equiv.content-language.elem =
element meta { meta.inner & meta.http-equiv.content-language.attrs }
meta.http-equiv.content-language.attrs =
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.content-language
& meta.http-equiv.attrs.content.content-language
)
meta.http-equiv.attrs.http-equiv.content-language =
attribute http-equiv {
w:string "content-language"
}
meta.http-equiv.attrs.content.content-language =
attribute content {
common.data.langcode
}
common.elem.metadata |= meta.http-equiv.content-language.elem # not quite right per spec
# if the definition is
# reused in another language
## Inline Character Encoding Statement for HTML: <meta charset>
meta.charset.elem =
@@ -297,6 +324,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.present
& common.attrs.other
& meta.charset.attrs.charset
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.charset.attrs.charset =
attribute charset {
@@ -318,6 +348,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.content-type
& meta.http-equiv.attrs.content.content-type
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.http-equiv.attrs.http-equiv.content-type =
attribute http-equiv {
@@ -17,7 +17,7 @@ common.attrs.microdata =
}
common.attrs.microdata.itemprop =
attribute itemprop {
common.data.microdata-identifier
common.data.microdata-properties
}
common.attrs.microdata.itemscope =
attribute itemscope {
@@ -25,7 +25,7 @@ common.attrs.microdata =
}
common.attrs.microdata.itemtype =
attribute itemtype {
common.data.uri
common.data.uri.absolute
}
common.attrs.microdata.itemid =
attribute itemid {
@@ -34,6 +34,12 @@ common.attrs.microdata =
common.attrs &= common.attrs.microdata
a.attrs &= common.attrs.microdata
area.attrs &= common.attrs.microdata
base.attrs &= common.attrs.microdata
## URL-valued Property Metadata: <link itemprop>
link.elem.phrasing =
element link { link.inner & link.phrasing.attrs }
link.phrasing.attrs =
@@ -47,15 +53,26 @@ common.attrs &= common.attrs.microdata
& common.attrs.microdata.itemtype?
& common.attrs.microdata.itemid?
& shared-hyperlink.attrs.href
& shared-hyperlink.attrs.rel
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& link.attrs.sizes?
# link.attrs.title included in common.attrs
& ( common.attrs.aria.role.link
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
common.elem.phrasing |= link.elem.phrasing
## <link> element in head, extensions
link.attrs.rel |= common.attrs.microdata.itemprop
link.attrs &= common.attrs.microdata.itemref?
link.attrs &= common.attrs.microdata.itemscope?
link.attrs &= common.attrs.microdata.itemtype?
link.attrs &= common.attrs.microdata.itemid?
## Property Metadata: <meta itemprop>
meta.itemprop.elem =
@@ -71,6 +88,9 @@ common.attrs &= common.attrs.microdata
& common.attrs.microdata.itemtype?
& common.attrs.microdata.itemid?
& meta.itemprop.attrs.content
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.itemprop.attrs.content =
attribute content {
@@ -11,8 +11,11 @@ datatypes w = "http://whattf.org/datatype-draft"
a.elem.flow =
element a { a.inner.flow & a.attrs }
a.attrs =
( common.attrs
& a.attrs.name?
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& a.attrs.name?
& shared-hyperlink.attrs.href?
& shared-hyperlink.attrs.target?
& shared-hyperlink.attrs.rel?
@@ -20,8 +23,16 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& shared-hyperlink.attrs.ping?
& ( common.attrs.aria
| common.attrs.aria.implicit.link
& ( ( common.attrs.aria.role.button
| common.attrs.aria.role.checkbox
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.tab
| common.attrs.aria.role.treeitem
)
| common.attrs.aria.implicit.link
)?
)
a.attrs.name =
@@ -31,7 +42,7 @@ datatypes w = "http://whattf.org/datatype-draft"
a.inner.phrasing =
( common.inner.phrasing )
a.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
common.elem.phrasing |= a.elem.phrasing
common.elem.flow |= a.elem.flow
@@ -48,7 +59,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
shared-hyperlink.attrs.rel =
attribute rel {
common.data.tokens
w:a-rel
}
shared-hyperlink.attrs.hreflang =
attribute hreflang {
@@ -65,7 +76,7 @@ datatypes w = "http://whattf.org/datatype-draft"
shared-hyperlink.attrs.ping =
attribute ping {
common.data.uris
} & v5only
} & v5only & nonW3C
## Emphatic Stress: <em>
@@ -112,7 +123,11 @@ datatypes w = "http://whattf.org/datatype-draft"
element mark { mark.inner & mark.attrs }
& v5only
mark.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
mark.inner =
( common.inner.phrasing )
@@ -172,6 +187,32 @@ datatypes w = "http://whattf.org/datatype-draft"
common.elem.phrasing |= b.elem
## Struck Text: <s>
s.elem =
element s { s.inner & s.attrs }
s.attrs =
( common.attrs
& common.attrs.aria?
)
s.inner =
( common.inner.phrasing )
common.elem.phrasing |= s.elem
## Underline: <u>
u.elem =
element u { u.inner & u.attrs }
u.attrs =
( common.attrs
& common.attrs.aria?
)
u.inner =
( common.inner.phrasing )
common.elem.phrasing |= u.elem
## Code Fragment: <code>
code.elem =
@@ -229,7 +270,11 @@ datatypes w = "http://whattf.org/datatype-draft"
sup.elem =
element sup { sup.inner & sup.attrs }
sup.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
sup.inner =
( common.inner.phrasing )
@@ -240,7 +285,11 @@ datatypes w = "http://whattf.org/datatype-draft"
sub.elem =
element sub { sub.inner & sub.attrs }
sub.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
sub.inner =
( common.inner.phrasing )
@@ -295,18 +344,41 @@ datatypes w = "http://whattf.org/datatype-draft"
bdo.elem =
element bdo { bdo.inner & bdo.attrs }
bdo.attrs =
( common.attrs ) # dir required in Schematron
( common.attrs # dir required in Schematron
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
bdo.inner =
( common.inner.phrasing )
common.elem.phrasing |= bdo.elem
## Bidirectional Isolate: <bdi>
bdi.elem =
element bdi { bdi.inner & bdi.attrs }
bdi.attrs =
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
bdi.inner =
( common.inner.phrasing )
common.elem.phrasing |= bdi.elem
## Line Break: <br>
br.elem =
element br { br.inner & br.attrs }
br.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
br.inner =
( empty )
@@ -317,7 +389,11 @@ datatypes w = "http://whattf.org/datatype-draft"
wbr.elem =
element wbr { wbr.inner & wbr.attrs }
wbr.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
wbr.inner =
( empty )
@@ -0,0 +1,240 @@
# #####################################################################
## RELAX NG Schema for HTML 5: RDFa 1.1 and RDFa Lite 1.1 #
# #####################################################################
# #####################################################################
## RDFa Datatypes #
# #####################################################################
common.data.rdfa.safecurie =
xsd:string {
pattern = "\[(([\i-[:]][\c-[:]]*)?:)?[^\s]+\]"
minLength = "3"
}
common.data.rdfa.curie =
xsd:string {
pattern = "(([\i-[:]][\c-[:]]*)?:)?[^\s]+"
minLength = "1"
}
common.data.rdfa.term =
xsd:string {
pattern = "[\i-[:]][/\c-[:]]*"
}
# #####################################################################
## RDFa Attributes #
# #####################################################################
common.attrs.rdfa &=
( common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.property?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.rel?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.rev?
& common.attrs.rdfa.inlist?
)
common.attrs.rdfa.prefix =
attribute prefix {
(
xsd:string {
pattern = "([\i-[:]][\c-[:]]*: [^ ]+)(\s+[\i-[:]][\c-[:]]*: [^ ]+)*"
}
| string ""
)
}
common.attrs.rdfa.property =
attribute property {
(
list {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
)+
}
| string ""
)
}
common.attrs.rdfa.resource =
attribute resource {
( common.data.rdfa.safecurie
| common.data.rdfa.curie
| common.data.uri
)
}
common.attrs.rdfa.typeof =
attribute typeof {
(
list {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
)+
}
| string ""
)
}
common.attrs.rdfa.vocab =
attribute vocab {
( common.data.uri.absolute
| string ""
)
}
common.attrs.rdfa.about =
attribute about {
( common.data.rdfa.safecurie
| common.data.rdfa.curie
| common.data.uri
)
} & nonRDFaLite
common.attrs.rdfa.content =
attribute content {
string
} & nonRDFaLite
common.attrs.rdfa.datatype =
attribute datatype {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
| string ""
)
} & nonRDFaLite
common.attrs.rdfa.rel =
attribute rel {
(
list {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
)+
}
| string ""
)
} & nonRDFaLite
common.attrs.rdfa.rev =
attribute rev {
(
list {
( common.data.rdfa.term
| common.data.rdfa.curie
| common.data.uri.absolute
)+
}
| string ""
)
} & nonRDFaLite
common.attrs.rdfa.inlist =
attribute inlist {
string
} & nonRDFaLite
common.attrs.rdfa.no-rel &=
( common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.property?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.rev?
& common.attrs.rdfa.inlist?
)
common.attrs.rdfa.no-rel-rev &=
( common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.property?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.inlist?
)
common.attrs.rdfa.no-content-noproperty &=
( common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.inlist?
)
common.attrs &= common.attrs.rdfa
a.attrs &= common.attrs.rdfa.no-rel-rev
area.attrs &= common.attrs.rdfa.no-rel
base.attrs &= common.attrs.rdfa.no-rel
link.rdfa.elem.metadata =
element link { link.inner & link.rdfa.attrs.metadata }
link.rdfa.elem.phrasing =
element link { link.inner & link.rdfa.attrs.phrasing }
link.rdfa.attrs.metadata =
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& ( ( common.attrs.rdfa.property
& ( link.attrs.rel
| common.attrs.rdfa.rel
)?
)
|
( common.attrs.rdfa.property?
& ( link.attrs.rel
| common.attrs.rdfa.rel
)
)
)
& link.attrs.href
& common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.rev?
& common.attrs.rdfa.inlist?
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& link.attrs.sizes?
# link.attrs.title included in common.attrs
)
link.rdfa.attrs.phrasing =
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& common.attrs.rdfa.property
& ( link.attrs.rel
| common.attrs.rdfa.rel
)?
& link.attrs.href
& common.attrs.rdfa.about?
& common.attrs.rdfa.prefix?
& common.attrs.rdfa.typeof?
& common.attrs.rdfa.vocab?
& common.attrs.rdfa.content?
& common.attrs.rdfa.datatype?
& common.attrs.rdfa.resource?
& common.attrs.rdfa.rev?
& common.attrs.rdfa.inlist?
& shared-hyperlink.attrs.hreflang?
& shared-hyperlink.attrs.media?
& shared-hyperlink.attrs.type?
& link.attrs.sizes?
# link.attrs.title included in common.attrs
)
common.elem.metadata |= link.rdfa.elem.metadata
common.elem.phrasing |= link.rdfa.elem.phrasing
meta.name.attrs.name |= common.attrs.rdfa.property
meta.name.attrs &= common.attrs.rdfa.no-content-noproperty
@@ -10,7 +10,7 @@
}
edit.attrs.datetime =
attribute datetime {
common.data.datetime
common.data.datetime | common.data.date
}
## Inserts: <ins>
@@ -23,9 +23,12 @@
( common.attrs
& edit.attrs.cite?
& edit.attrs.datetime?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
ins.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
ins.inner.phrasing =
( common.inner.phrasing )
@@ -42,9 +45,12 @@
( common.attrs
& edit.attrs.cite?
& edit.attrs.datetime?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
del.inner.flow =
( common.inner.flow )
( common.inner.transparent.flow )
del.inner.phrasing =
( common.inner.phrasing )
@@ -11,7 +11,11 @@
element h1 { h1.inner & h1.attrs }
h1.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h1.inner =
( common.inner.phrasing )
@@ -24,7 +28,11 @@
element h2 { h2.inner & h2.attrs }
h2.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h2.inner =
( common.inner.phrasing )
@@ -37,7 +45,11 @@
element h3 { h3.inner & h3.attrs }
h3.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h3.inner =
( common.inner.phrasing )
@@ -50,7 +62,11 @@
element h4 { h4.inner & h4.attrs }
h4.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h4.inner =
( common.inner.phrasing )
@@ -63,7 +79,11 @@
element h5 { h5.inner & h5.attrs }
h5.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h5.inner =
( common.inner.phrasing )
@@ -76,7 +96,11 @@
element h6 { h6.inner & h6.attrs }
h6.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h6.inner =
( common.inner.phrasing )
@@ -89,7 +113,11 @@
element hgroup { hgroup.inner & hgroup.attrs }
hgroup.attrs =
( common.attrs
& common.attrs.aria.implicit.structure?
& ( common.attrs.aria.implicit.structure # not implementing "aria-level property set to the element's outline depth", nor heading role; see http://hsivonen.iki.fi/aria-html5-bis/
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
hgroup.inner =
( h1.elem
@@ -111,7 +139,10 @@
element address { address.inner & address.attrs }
address.attrs =
( common.attrs
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.contentinfo
| common.attrs.aria.role.presentation
)?
)
address.inner =
( common.inner.flow )
@@ -8,14 +8,24 @@
element section { section.inner & section.attrs }
section.attrs =
( common.attrs
& ( common.attrs.aria
| common.attrs.aria.implicit.region
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.alert
| common.attrs.aria.role.alertdialog
| common.attrs.aria.role.contentinfo
| common.attrs.aria.role.dialog
| common.attrs.aria.role.log
| common.attrs.aria.role.main
| common.attrs.aria.role.marquee
| common.attrs.aria.role.region
| common.attrs.aria.role.status
| common.attrs.aria.role.presentation
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.search
)?
)
section.inner =
( style.elem.scoped*
, common.inner.flow
)
( common.inner.flow )
common.elem.flow |= section.elem
@@ -25,9 +35,11 @@
element nav { nav.inner & nav.attrs }
nav.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.navigation
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.navigation
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.presentation
)?
)
nav.inner =
( common.inner.flow )
@@ -40,12 +52,13 @@
element article { article.inner & article.attrs }
article.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.article
| common.attrs.aria.landmark.main
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.application
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.article
| common.attrs.aria.landmark.document
| common.attrs.aria.landmark.application
| common.attrs.aria.landmark.main
| common.attrs.aria.role.presentation
)?
)
article.inner =
( style.elem*
@@ -60,11 +73,12 @@
element aside { aside.inner & aside.attrs }
aside.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.complementary
| common.attrs.aria.landmark.search
| common.attrs.aria.landmark.note
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.note
| common.attrs.aria.landmark.complementary
| common.attrs.aria.landmark.search
| common.attrs.aria.role.presentation
)?
)
aside.inner =
( style.elem*
@@ -79,9 +93,10 @@
element header { header.inner & header.attrs }
header.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.banner
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.banner
| common.attrs.aria.role.presentation
)?
)
header.inner =
( common.inner.flow )
@@ -94,12 +109,27 @@
element footer { footer.inner & footer.attrs }
footer.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.contentinfo
)?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.contentinfo
| common.attrs.aria.role.presentation
)?
)
footer.inner =
( common.inner.flow )
common.elem.flow |= footer.elem
## main content: <main>
main.elem =
element main { main.inner & main.attrs }
main.attrs =
( common.attrs
& ( common.attrs.aria.implicit.region
| common.attrs.aria.landmark.main
)?
)
main.inner =
( common.inner.flow )
common.elem.flow |= main.elem
@@ -50,11 +50,11 @@ datatypes w = "http://whattf.org/datatype-draft"
element table { table.inner & table.attrs }
table.attrs =
( common.attrs
& table.attrs.summary? # obsolete
& table.attrs.border?
& common.attrs.aria?
)
table.attrs.summary =
attribute summary {
table.attrs.border =
attribute border {
string
}
table.inner =
@@ -78,7 +78,10 @@ datatypes w = "http://whattf.org/datatype-draft"
element caption { caption.inner & caption.attrs }
caption.attrs =
( common.attrs
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
caption.inner =
( common.inner.flow )
@@ -91,7 +94,11 @@ datatypes w = "http://whattf.org/datatype-draft"
colgroup.elem =
element colgroup { colgroup.inner & colgroup.attrs }
colgroup.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
colgroup.attrs.span =
attribute span {
common.data.integer.positive
@@ -108,6 +115,9 @@ datatypes w = "http://whattf.org/datatype-draft"
col.attrs =
( common.attrs
& col.attrs.span?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
col.attrs.span =
attribute span {
@@ -121,7 +131,11 @@ datatypes w = "http://whattf.org/datatype-draft"
thead.elem =
element thead { thead.inner & thead.attrs }
thead.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
thead.inner =
( tr.elem* )
@@ -130,7 +144,11 @@ datatypes w = "http://whattf.org/datatype-draft"
tfoot.elem =
element tfoot { tfoot.inner & tfoot.attrs }
tfoot.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
tfoot.inner =
( tr.elem* )
@@ -139,7 +157,11 @@ datatypes w = "http://whattf.org/datatype-draft"
tbody.elem =
element tbody { tbody.inner & tbody.attrs }
tbody.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
tbody.inner =
( tr.elem* )
@@ -218,7 +240,10 @@ datatypes w = "http://whattf.org/datatype-draft"
& tables.attrs.scope?
& tables.attrs.headers?
# & tables.attrs.alignment
& common.attrs.aria.implicit.th?
& ( common.attrs.aria.implicit.th
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
th.inner =
( common.inner.phrasing )
( common.inner.flow )
@@ -28,7 +28,7 @@ datatypes w = "http://whattf.org/datatype-draft"
shared-form.attrs.maxlength =
attribute maxlength {
common.data.integer.positive #REVISIT should this be non-negative?
common.data.integer.non-negative
}
shared-form.attrs.size =
@@ -54,10 +54,10 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.text.attrs.type?
& shared-form.attrs.maxlength?
& shared-form.attrs.readonly?
& shared-form.attrs.readonly?
& shared-form.attrs.size?
& input.text.attrs.value?
& ( common.attrs.aria
& ( common.attrs.aria?
| common.attrs.aria.implicit.input
)?
)
@@ -67,7 +67,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.text.attrs.value =
attribute value {
string #REVISIT "nominally" free of line breaks?
form.data.stringwithoutlinebreaks
}
input.elem = input.text.elem
@@ -84,7 +84,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.size?
& input.password.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.password.attrs.type =
attribute type {
@@ -92,7 +92,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.password.attrs.value =
attribute value {
string #REVISIT "nominally" free of line breaks?
form.data.stringwithoutlinebreaks
}
input.elem |= input.password.elem
@@ -107,7 +107,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.checkbox.attrs.type
& input.attrs.checked?
& input.checkbox.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.checkbox.attrs.type =
attribute type {
@@ -130,7 +130,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.radio.attrs.type
& input.attrs.checked?
& input.radio.attrs.value?
& common.attrs.aria.implicit.input?
& ( common.attrs.aria.role.radio
| common.attrs.aria.role.menuitemradio
)?
)
input.radio.attrs.type =
attribute type {
@@ -152,8 +154,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.button.attrs.type
& input.button.attrs.value?
& ( common.attrs.aria
| common.attrs.aria.implicit.button
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
input.button.attrs.type =
@@ -177,7 +184,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.submit.attrs.type
& input.submit.attrs.value?
& common.attrs.aria.implicit.button?
& common.attrs.aria?
)
input.submit.attrs.type =
attribute type {
@@ -199,7 +206,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.reset.attrs.type
& input.reset.attrs.value?
& common.attrs.aria.implicit.button?
& common.attrs.aria?
)
input.reset.attrs.type =
attribute type {
@@ -222,7 +229,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.file.attrs.type
& input.file.attrs.accept?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.file.attrs.type =
attribute type {
@@ -244,6 +251,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& input.hidden.attrs.type
& input.hidden.attrs.value?
& common.attrs.aria?
)
input.hidden.attrs.type =
attribute type {
@@ -266,8 +274,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.image.attrs.type
& input.image.attrs.alt
& input.image.attrs.src?
& ( common.attrs.aria
| common.attrs.aria.implicit.button
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
input.image.attrs.type =
@@ -276,11 +289,11 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.image.attrs.alt =
attribute alt {
string # XXX non-empty
form.data.nonemptystring
}
input.image.attrs.src =
attribute src {
common.data.uri
common.data.uri.non-empty
}
input.elem |= input.image.elem
@@ -296,7 +309,12 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& shared-form.attrs.readonly?
& textarea.attrs.rows-and-cols-wf1
& common.attrs.aria.implicit.input?
& ( common.attrs.aria.implicit.input
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.combobox
| common.attrs.aria.role.textbox
)?
#FIXME onfocus, onblur, onselect,onchange
)
# This is ugly.
@@ -333,7 +351,12 @@ datatypes w = "http://whattf.org/datatype-draft"
& option.attrs.selected?
& option.attrs.label?
& option.attrs.value?
& common.attrs.aria.implicit.input?
& ( common.attrs.aria.implicit.input
| common.attrs.aria.role.option
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.menuitemcheckbox
)?
)
option.attrs.selected =
attribute selected {
@@ -358,6 +381,9 @@ datatypes w = "http://whattf.org/datatype-draft"
( common.attrs
& optgroup.attrs.label
& common-form.attrs.disabled?
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
optgroup.attrs.label =
attribute label {
@@ -369,13 +395,17 @@ datatypes w = "http://whattf.org/datatype-draft"
## Selection Menu: <select>
select.elem =
element select { select.inner & select.attrs }
element select { select.inner & select.attrs }
select.attrs =
( common.attrs
& common-form.attrs
& select.attrs.size?
& select.attrs.multiple?
# FIXME onfocus, onblur, onchange
& ( common.attrs.aria.role.listbox # aria-multiselectable depends on "multiple" value; check in assertions
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
select.attrs.size =
attribute size {
@@ -410,7 +440,14 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& button.submit.attrs.type?
& button.attrs.value?
& common.attrs.aria.implicit.button?
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
button.submit.attrs.type =
attribute type {
@@ -428,7 +465,14 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& button.reset.attrs.type
& button.attrs.value? #REVISIT I guess this still affects the DOM
& common.attrs.aria.implicit.button?
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
button.reset.attrs.type =
attribute type {
@@ -446,8 +490,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs
& button.button.attrs.type
& button.attrs.value? #REVISIT I guess this still affects the DOM
& ( common.attrs.aria
| common.attrs.aria.implicit.button
& ( common.attrs.aria.implicit.button
| common.attrs.aria.role.button
| common.attrs.aria.role.link
| common.attrs.aria.role.menuitem
| common.attrs.aria.role.menuitemcheckbox
| common.attrs.aria.role.menuitemradio
| common.attrs.aria.role.radio
)?
)
button.button.attrs.type =
@@ -470,13 +519,13 @@ datatypes w = "http://whattf.org/datatype-draft"
& form.attrs.enctype?
& common-form.attrs.name?
& form.attrs.accept-charset?
& ( common.attrs.aria
& ( common.attrs.aria?
| common.attrs.aria.implicit.region
)?
)
form.attrs.action =
attribute action {
common.data.uri
common.data.uri.non-empty
}
form.attrs.method =
attribute method {
@@ -507,7 +556,9 @@ datatypes w = "http://whattf.org/datatype-draft"
element fieldset { fieldset.inner & fieldset.attrs }
fieldset.attrs =
( common.attrs
& common.attrs.aria.implicit.group?
& ( common.attrs.aria?
| common.attrs.aria.implicit.region
)?
)
fieldset.inner =
( legend.elem? #REVISIT should this be required?
@@ -523,7 +574,10 @@ datatypes w = "http://whattf.org/datatype-draft"
label.attrs =
( common.attrs
& label.attrs.for?
& common.attrs.aria.implicit.region?
& ( common.attrs.aria.implicit.region
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
label.attrs.for =
attribute for {
@@ -2,12 +2,6 @@
## RELAX NG Schema for HTML 5: Web Forms 2.0 Scripting #
# #####################################################################
scripting.attr.form.formchange =
attribute onformchange { string }
scripting.attr.form.forminput =
attribute onforminput { string }
# output.attrs &=
# ( scripting.attr.form.formchange?
# & scripting.attr.form.forminput?
@@ -16,7 +16,7 @@ datatypes w = "http://whattf.org/datatype-draft"
shared-form.attrs.formaction =
attribute formaction {
common.data.uri
common.data.uri.non-empty
}
shared-form.attrs.formenctype =
@@ -36,8 +36,6 @@ datatypes w = "http://whattf.org/datatype-draft"
shared-form.attrs.formmethod.data =
( w:string "get"
| w:string "post"
| w:string "put"
| w:string "delete"
)
shared-form.attrs.formtarget =
@@ -72,7 +70,12 @@ datatypes w = "http://whattf.org/datatype-draft"
shared-form.attrs.placeholder =
attribute placeholder {
string # FIXME line breaks
form.data.stringwithoutlinebreaks
}
shared-form.attrs.dirname =
attribute dirname {
form.data.nonemptystring
}
## Shared attributes for <input>
@@ -111,6 +114,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.pattern?
& shared-form.attrs.required?
& shared-form.attrs.placeholder?
& shared-form.attrs.dirname?
)
## Password Field: <input type='password'>, Extensions
@@ -190,7 +194,7 @@ datatypes w = "http://whattf.org/datatype-draft"
## Global Date and Time: <input type='datetime'>
input.datetime.elem =
element input { input.datetime.attrs }
element input { input.datetime.attrs }
input.datetime.attrs =
( common.attrs
& common-form.attrs
@@ -204,7 +208,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.datetime.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.datetime.attrs.type =
attribute type {
@@ -220,7 +224,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.datetime.attrs.value =
attribute value {
common.data.datetime
w:string "" | common.data.datetime
}
input.elem |= input.datetime.elem
@@ -242,7 +246,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.datetime-local.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.datetime-local.attrs.type =
attribute type {
@@ -258,7 +262,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.datetime-local.attrs.value =
attribute value {
form.data.datetime-local
w:string "" | form.data.datetime-local
}
input.elem |= input.datetime-local.elem
@@ -280,7 +284,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.date.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.date.attrs.type =
attribute type {
@@ -296,7 +300,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.date.attrs.value =
attribute value {
form.data.date
w:string "" | form.data.date
}
input.elem |= input.date.elem
@@ -318,7 +322,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.month.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.month.attrs.type =
attribute type {
@@ -334,7 +338,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.month.attrs.value =
attribute value {
form.data.month
w:string "" | form.data.month
}
input.elem |= input.month.elem
@@ -356,7 +360,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.time.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.time.attrs.type =
attribute type {
@@ -372,7 +376,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.time.attrs.value =
attribute value {
form.data.time
w:string "" | form.data.time
}
input.elem |= input.time.elem
@@ -394,7 +398,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& input.week.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.week.attrs.type =
attribute type {
@@ -410,7 +414,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.week.attrs.value =
attribute value {
form.data.week
w:string "" | form.data.week
}
input.elem |= input.week.elem
@@ -431,8 +435,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.attrs.step.float?
& shared-form.attrs.readonly?
& shared-form.attrs.required?
& shared-form.attrs.placeholder?
& input.number.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.number.attrs.type =
attribute type {
@@ -448,7 +453,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.number.attrs.value =
attribute value {
common.data.float
w:string "" | common.data.float
}
input.elem |= input.number.elem
@@ -468,7 +473,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& input.range.attrs.max?
& input.attrs.step.float?
& input.range.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.range.attrs.type =
attribute type {
@@ -511,7 +516,7 @@ datatypes w = "http://whattf.org/datatype-draft"
)
| input.email.attrs.value.single?
)?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.email.attrs.type =
attribute type {
@@ -531,7 +536,7 @@ datatypes w = "http://whattf.org/datatype-draft"
## IRI: <input type='url'>
input.url.elem =
element input { input.url.attrs }
element input { input.url.attrs }
input.url.attrs =
( common.attrs
& common-form.attrs
@@ -546,7 +551,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.size?
& shared-form.attrs.placeholder?
& input.url.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.url.attrs.type =
attribute type {
@@ -562,7 +567,7 @@ datatypes w = "http://whattf.org/datatype-draft"
## Search: <input type='search'>
input.search.elem =
element input { input.search.attrs }
element input { input.search.attrs }
input.search.attrs =
( common.attrs
& common-form.attrs
@@ -576,8 +581,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.required?
& shared-form.attrs.size?
& shared-form.attrs.placeholder?
& shared-form.attrs.dirname?
& input.search.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.search.attrs.type =
attribute type {
@@ -585,7 +591,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.search.attrs.value =
attribute value {
string # FIXME line breaks
form.data.stringwithoutlinebreaks
}
input.elem |= input.search.elem
@@ -608,7 +614,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.size?
& shared-form.attrs.placeholder?
& input.tel.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.tel.attrs.type =
attribute type {
@@ -616,7 +622,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.tel.attrs.value =
attribute value {
string # FIXME line breaks
form.data.stringwithoutlinebreaks
}
input.elem |= input.tel.elem
@@ -633,7 +639,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.autofocus?
& input.attrs.list?
& input.color.attrs.value?
& common.attrs.aria.implicit.input?
& common.attrs.aria?
)
input.color.attrs.type =
attribute type {
@@ -641,7 +647,7 @@ datatypes w = "http://whattf.org/datatype-draft"
}
input.color.attrs.value =
attribute value {
form.data.color
w:string "" | form.data.color
}
input.elem |= input.color.elem
@@ -655,7 +661,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& common-form.attrs.name?
& common-form.attrs.form?
& output.attrs.for?
& common.attrs.aria.implicit.region?
& common.attrs.aria?
)
output.attrs.for =
attribute for {
@@ -677,6 +683,7 @@ datatypes w = "http://whattf.org/datatype-draft"
& shared-form.attrs.autofocus?
& shared-form.attrs.required?
& shared-form.attrs.placeholder?
& shared-form.attrs.dirname?
& textarea.attrs.rows?
& ( ( textarea.attrs.wrap.hard
& textarea.attrs.cols
@@ -704,7 +711,12 @@ datatypes w = "http://whattf.org/datatype-draft"
datalist.inner =
( option.elem* & common.inner.phrasing )
datalist.attrs =
( common.attrs )
( common.attrs
& ( common.attrs.aria.role.listbox # aria-multiselectable must be false; check by assertions
| common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
common.elem.phrasing |= datalist.elem
@@ -750,8 +762,6 @@ datatypes w = "http://whattf.org/datatype-draft"
# REVISIT should this be case-insensitive in conforming XHTML documents?
form.attrs.enctype.data |=
( w:string "text/plain" )
form.attrs.method.data |=
( w:string "put" | w:string "delete" )
## Fieldset: <fieldset>, extensions
@@ -773,7 +783,9 @@ datatypes w = "http://whattf.org/datatype-draft"
& keygen.attrs.keytype?
& shared-form.attrs.autofocus?
& common-form.attrs?
#REVISIT which ARIA attributes needed here
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
keygen.attrs.challenge =
attribute challenge {
@@ -788,3 +800,9 @@ datatypes w = "http://whattf.org/datatype-draft"
common.elem.phrasing |= keygen.elem
## Selection Menu: <select>, Extensions
select.attrs &=
( shared-form.attrs.autofocus?
& shared-form.attrs.required?
)
@@ -1,4 +1,4 @@
default namespace = "http://www.w3.org/1999/xhtml/html5"
default namespace = "http://www.w3.org/1999/xhtml"
# #####################################################################
## RELAX NG Schema for XHTML 5 #
# #####################################################################