# #####################################################################
## RELAX NG Schema for HTML 5: Sectioning Markup #
# #####################################################################
# #####################################################################
## Headings
## Heading (Rank 1):
h1.elem =
element h1 { h1.inner & h1.attrs }
h1.attrs =
( common.attrs
& ( common.attrs.aria.implicit.heading
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h1.inner =
( common.inner.phrasing )
common.elem.flow |= h1.elem
## Heading (Rank 2):
h2.elem =
element h2 { h2.inner & h2.attrs }
h2.attrs =
( common.attrs
& ( common.attrs.aria.implicit.heading
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h2.inner =
( common.inner.phrasing )
common.elem.flow |= h2.elem
## Heading (Rank 3):
h3.elem =
element h3 { h3.inner & h3.attrs }
h3.attrs =
( common.attrs
& ( common.attrs.aria.implicit.heading
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h3.inner =
( common.inner.phrasing )
common.elem.flow |= h3.elem
## Heading (Rank 4):
h4.elem =
element h4 { h4.inner & h4.attrs }
h4.attrs =
( common.attrs
& ( common.attrs.aria.implicit.heading
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h4.inner =
( common.inner.phrasing )
common.elem.flow |= h4.elem
## Heading (Rank 5):
h5.elem =
element h5 { h5.inner & h5.attrs }
h5.attrs =
( common.attrs
& ( common.attrs.aria.implicit.heading
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h5.inner =
( common.inner.phrasing )
common.elem.flow |= h5.elem
## Heading (Rank 6):
h6.elem =
element h6 { h6.inner & h6.attrs }
h6.attrs =
( common.attrs
& ( common.attrs.aria.implicit.heading
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
h6.inner =
( common.inner.phrasing )
common.elem.flow |= h6.elem
## Heading Group:
hgroup.elem =
element hgroup { hgroup.inner & hgroup.attrs } & nonW3C
hgroup.attrs =
( common.attrs
& ( common.attrs.aria.implicit.heading
| common.attrs.aria.role.heading
| common.attrs.aria.role.tab
| common.attrs.aria.role.presentation
)?
)
hgroup.inner =
( ( h1.elem
| h2.elem
| h3.elem
| h4.elem
| h5.elem
| h6.elem
)
& common.elem.script-supporting*
)+
common.elem.flow |= hgroup.elem
# #####################################################################
## Section Meta
## Contact Info:
address.elem =
element address { address.inner & address.attrs }
address.attrs =
( common.attrs
& ( common.attrs.aria.role.contentinfo
| common.attrs.aria.role.presentation
)?
)
address.inner =
( common.inner.flow )
common.elem.flow |= address.elem
# #####################################################################
## Quotations
## Block Quotes:
blockquote.elem =
element blockquote { blockquote.inner & blockquote.attrs }
blockquote.attrs =
( common.attrs
& blockquote.attrs.cite?
& common.attrs.aria?
)
blockquote.attrs.cite =
attribute cite {
common.data.uri
}
blockquote.inner =
( common.inner.flow )
common.elem.flow |= blockquote.elem