# ##################################################################### ## 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