]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/html5-schema/block.rnc
Add 'packages/html5-schema/' from commit '6e7c7c331e7f6692be6c7d39fb9485792f0d3513'
[gnu-emacs-elpa] / packages / html5-schema / block.rnc
diff --git a/packages/html5-schema/block.rnc b/packages/html5-schema/block.rnc
new file mode 100644 (file)
index 0000000..6d0eb0d
--- /dev/null
@@ -0,0 +1,250 @@
+datatypes w = "http://whattf.org/datatype-draft"
+
+# #####################################################################
+##  RELAX NG Schema for HTML 5: Basic Prose Markup                    #
+# #####################################################################
+
+# #####################################################################
+## Paragraph-Level
+
+## Paragraph: <p>
+
+       p.elem =
+               element p { p.inner & p.attrs }
+       p.attrs =
+               (       common.attrs
+               &       common.attrs.aria?
+               )
+       p.inner =
+               ( common.inner.phrasing ) # REVISIT lists in span?
+
+       common.elem.flow |= p.elem
+
+## Hint Transition: <hr>
+
+       hr.elem =
+               element hr { hr.inner & hr.attrs }
+       hr.attrs =
+               (       common.attrs
+               &       common.attrs.aria.role.separator?
+               )
+       hr.inner =
+               ( empty )
+
+       common.elem.flow |= hr.elem
+
+# #####################################################################
+## Preformatting Blocks
+
+## Preformatted Text: <pre>
+
+       pre.elem =
+               element pre { pre.inner & pre.attrs }
+       pre.attrs =
+               (       common.attrs
+               &       common.attrs.aria?
+               )
+       pre.inner =
+               ( common.inner.phrasing )
+
+       common.elem.flow |= pre.elem
+
+# #####################################################################
+## Simple Lists
+
+## Unordered List: <ul>
+
+       ul.elem =
+               element ul { ul.inner & ul.attrs }
+       ul.attrs =
+               (       common.attrs
+               &       (       (       common.attrs.aria.role.directory
+                               |       common.attrs.aria.role.group
+                               |       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.list
+                       )?
+               )
+       ul.inner =
+               (       li.elem*
+               &       common.elem.script-supporting*
+               )
+
+       common.elem.flow |= ul.elem
+
+## Unordered List Item: <li>
+
+       li.elem =
+               element li { li.inner & li.attrs }
+       li.attrs =
+               (       common.attrs 
+               &       (       common.attrs.aria.implicit.listitem
+                       |       common.attrs.aria.role.listitem
+                       |       common.attrs.aria.role.menuitem
+                       |       common.attrs.aria.role.menuitemcheckbox
+                       |       common.attrs.aria.role.menuitemradio
+                       |       common.attrs.aria.role.option
+                       |       common.attrs.aria.role.tab
+                       |       common.attrs.aria.role.treeitem
+                       |       common.attrs.aria.role.separator
+                       |       common.attrs.aria.role.presentation
+                       )?
+               )
+       li.inner =
+               ( common.inner.flow )
+
+## Ordered List: <ol>
+
+       ol.elem =
+               element ol { ol.inner & ol.attrs }
+       ol.attrs =
+               (       common.attrs
+               &       ol.attrs.start?
+               &       ol.attrs.reversed?
+               &       ol.attrs.type?
+               &       (       (       common.attrs.aria.role.directory
+                               |       common.attrs.aria.role.group
+                               |       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.list
+                       )?
+               )
+               ol.attrs.start =
+                       attribute start {
+                               common.data.integer
+                       }
+               ol.attrs.reversed =
+                       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*
+               &       common.elem.script-supporting*
+               )
+
+       common.elem.flow |= ol.elem
+
+## Ordered List Item: <li>
+
+       oli.elem =
+               element li { oli.inner & oli.attrs }
+       oli.attrs =
+               (       common.attrs
+               &       oli.attrs.value?
+               &       (       common.attrs.aria.implicit.listitem
+                       |       common.attrs.aria.role.listitem
+                       |       common.attrs.aria.role.menuitem
+                       |       common.attrs.aria.role.menuitemcheckbox
+                       |       common.attrs.aria.role.menuitemradio
+                       |       common.attrs.aria.role.option
+                       |       common.attrs.aria.role.tab
+                       |       common.attrs.aria.role.treeitem
+                       |       common.attrs.aria.role.separator
+                       |       common.attrs.aria.role.presentation
+                       )?
+               )
+               oli.attrs.value =
+                       attribute value {
+                               common.data.integer
+                       }
+       oli.inner =
+               ( common.inner.flow )
+
+# #####################################################################
+## Definition Lists
+
+## Definition List: <dl>
+
+       dl.elem =
+               element dl { dl.inner & dl.attrs }
+       dl.attrs =
+               (       common.attrs
+               &       (       common.attrs.aria.implicit.list
+                       |       common.attrs.aria.role.list
+                       )?
+               )
+       dl.inner =
+               (       (       (       dt.elem
+                               &       common.elem.script-supporting*
+                               )+
+                       ,
+                               (       dd.elem
+                               &       common.elem.script-supporting*
+                               )+
+                       )*
+               )
+
+       common.elem.flow |= dl.elem
+
+## Definition Term: <dt>
+
+       dt.elem =
+               element dt { dt.inner & dt.attrs }
+       dt.attrs =
+               (       common.attrs
+               &       common.attrs.aria?
+               )
+       dt.inner =
+               ( common.inner.flow )
+
+## Definition Description: <dd>
+
+       dd.elem =
+               element dd { dd.inner & dd.attrs }
+       dd.elem.phrasing =
+               element dd { dd.inner.phrasing & dd.attrs }
+       dd.attrs =
+               (       common.attrs
+               &       common.attrs.aria?
+               )
+       dd.inner =
+               ( common.inner.flow )
+       dd.inner.phrasing =
+               ( common.inner.phrasing )
+
+# #####################################################################
+## Miscellaneous Elements
+
+## Generic Container: <div>
+
+       div.elem =
+               element div { div.inner & div.attrs }
+       div.attrs =
+               (       common.attrs
+               &       common.attrs.aria?
+               )
+       div.inner =
+               ( common.inner.flow )
+
+       common.elem.flow |= div.elem
+
+## Title or Explanatory Caption: <legend>
+
+       legend.elem =
+               element legend { legend.inner & legend.attrs }
+       legend.attrs =
+               (       common.attrs
+               &       (       common.attrs.aria.role.presentation
+                       |       common.attrs.aria.role.menuitem
+                       )?
+               )       
+       legend.inner =
+               ( common.inner.phrasing )