| datatypes w = "http://whattf.org/datatype-draft" |
| |
| # ##################################################################### |
| ## RELAX NG Schema for HTML 5: Tables # |
| # ##################################################################### |
| |
| # ##################################################################### |
| ## Table Envelope |
| |
| ## Table Datatypes |
| |
| # tables.data.multilen = |
| # ( common.data.integer.positive |
| # | common.data.percent |
| # | xsd:token { pattern = "[0-9]+\*" } #REVISIT should this one be string? |
| # ) |
| |
| ## Table Alignment Attributes |
| |
| tables.attrs.alignment = |
| ( tables.attrs.align? |
| & tables.attrs.char? |
| & tables.attrs.valign? |
| ) |
| tables.attrs.align = |
| attribute align { |
| ( w:string "left" |
| | w:string "center" |
| | w:string "right" |
| | w:string "justify" |
| | w:string "char" |
| ) |
| } |
| tables.attrs.char = |
| attribute char { |
| xsd:string { pattern = "." } |
| } |
| tables.attrs.valign = |
| attribute valign { |
| ( w:string "top" |
| | w:string "middle" |
| | w:string "bottom" |
| | w:string "baseline" |
| ) |
| } |
| |
| ## Data Table: <table> |
| |
| table.elem = |
| element table { table.inner & table.attrs } |
| table.attrs = |
| ( common.attrs |
| & common.attrs.aria? |
| ) |
| table.inner = |
| ( caption.elem? |
| , common.elem.script-supporting* |
| , colgroup.elem* |
| , common.elem.script-supporting* |
| , thead.elem? |
| , common.elem.script-supporting* |
| , ( ( tfoot.elem |
| , common.elem.script-supporting* |
| , ( tbody.elem* | tr.elem+ ) |
| , common.elem.script-supporting* |
| ) |
| | ( ( tbody.elem* | tr.elem+ ) |
| , common.elem.script-supporting* |
| , tfoot.elem? |
| ) |
| ) |
| ) |
| |
| common.elem.flow |= table.elem |
| |
| ## Table Caption: <caption> |
| |
| caption.elem = |
| element caption { caption.inner & caption.attrs } |
| caption.attrs = |
| ( common.attrs |
| & common.attrs.aria? |
| ) |
| caption.inner = |
| ( common.inner.flow ) |
| |
| # ##################################################################### |
| ## Table Super Structure |
| |
| ## Table Column Group: <colgroup> |
| |
| colgroup.elem = |
| element colgroup { colgroup.inner & colgroup.attrs } |
| colgroup.attrs = |
| ( common.attrs |
| & common.attrs.aria? |
| ) |
| colgroup.attrs.span = |
| attribute span { |
| common.data.integer.positive |
| } |
| colgroup.inner = |
| ( ( col.elem* |
| & common.elem.script-supporting* |
| ) |
| | colgroup.attrs.span? |
| ) |
| |
| ## Table Column: <col> |
| |
| col.elem = |
| element col { col.inner & col.attrs } |
| col.attrs = |
| ( common.attrs |
| & col.attrs.span? |
| & common.attrs.aria? |
| ) |
| col.attrs.span = |
| attribute span { |
| common.data.integer.positive |
| } |
| col.inner = |
| ( empty ) |
| |
| ## Table Header Row Group |
| |
| thead.elem = |
| element thead { thead.inner & thead.attrs } |
| thead.attrs = |
| ( common.attrs |
| & common.attrs.aria? |
| ) |
| thead.inner = |
| ( tr.elem* |
| & common.elem.script-supporting* |
| ) |
| |
| ## Table Footer Row Group |
| |
| tfoot.elem = |
| element tfoot { tfoot.inner & tfoot.attrs } |
| tfoot.attrs = |
| ( common.attrs |
| & common.attrs.aria? |
| ) |
| tfoot.inner = |
| ( tr.elem* |
| & common.elem.script-supporting* |
| ) |
| |
| ## Table Row Group |
| |
| tbody.elem = |
| element tbody { tbody.inner & tbody.attrs } |
| tbody.attrs = |
| ( common.attrs |
| & common.attrs.aria? |
| ) |
| tbody.inner = |
| ( tr.elem* |
| & common.elem.script-supporting* |
| ) |
| |
| # ##################################################################### |
| ## Cell Structure |
| |
| ## Table Row |
| |
| tr.elem = |
| element tr { tr.inner & tr.attrs } |
| tr.attrs = |
| ( common.attrs |
| & common.attrs.aria? |
| ) |
| tr.inner = |
| ( ( td.elem | th.elem | common.elem.script-supporting )* ) |
| |
| ## Common Table Cell Attributes |
| |
| tables.attrs.cell-structure = |
| ( tables.attrs.colspan? |
| & tables.attrs.rowspan? |
| ) |
| tables.attrs.colspan = |
| attribute colspan { |
| common.data.integer.positive |
| } |
| tables.attrs.rowspan = |
| attribute rowspan { |
| common.data.integer.non-negative |
| } |
| |
| tables.attrs.access-headers = |
| ( tables.attrs.headers? ) |
| tables.attrs.headers = |
| attribute headers { |
| common.data.idrefs |
| } |
| |
| tables.attrs.define-headers = |
| ( tables.attrs.scope? ) |
| tables.attrs.scope = |
| attribute scope { |
| ( w:string "row" |
| | w:string "col" |
| | w:string "rowgroup" |
| | w:string "colgroup" |
| ) |
| } |
| tables.attrs.abbr = |
| attribute abbr { |
| text |
| } |
| |
| ## Table Data Cell: <td> |
| |
| td.elem = |
| element td { td.inner & td.attrs } |
| td.attrs = |
| ( common.attrs |
| & tables.attrs.cell-structure |
| & tables.attrs.headers? |
| # & tables.attrs.alignment |
| & common.attrs.aria? |
| ) |
| td.inner = |
| ( common.inner.flow ) |
| |
| ## Table Header Cells: <th> |
| |
| th.elem = |
| element th { th.inner & th.attrs } |
| th.attrs = |
| ( common.attrs |
| & tables.attrs.cell-structure |
| & tables.attrs.scope? |
| & tables.attrs.headers? |
| # & tables.attrs.alignment |
| & ( common.attrs.aria? |
| | common.attrs.aria.implicit.column-or-row-header |
| ) |
| ) |
| th.inner = |
| ( common.inner.flow ) |