emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 18465e3: * externals-list: Convert html5-schema to :extern


From: Stefan Monnier
Subject: [elpa] master 18465e3: * externals-list: Convert html5-schema to :external
Date: Sat, 28 Nov 2020 23:29:35 -0500 (EST)

branch: master
commit 18465e30792842a0b922caf2761f56f2927f2d07
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * externals-list: Convert html5-schema to :external
---
 externals-list                                 |    1 +
 packages/html5-schema/.htaccess                |   10 -
 packages/html5-schema/LICENSE                  |   23 -
 packages/html5-schema/applications.rnc         |  405 --------
 packages/html5-schema/aria.rnc                 | 1251 ------------------------
 packages/html5-schema/assertions.sch           | 1235 -----------------------
 packages/html5-schema/block.rnc                |  250 -----
 packages/html5-schema/common.rnc               |  526 ----------
 packages/html5-schema/core-scripting.rnc       |  386 --------
 packages/html5-schema/data.rnc                 |   94 --
 packages/html5-schema/embed.rnc                |  586 -----------
 packages/html5-schema/form-datatypes.rnc       |   63 --
 packages/html5-schema/html5-schema.el          |   67 --
 packages/html5-schema/html5.rnc                |   56 --
 packages/html5-schema/html5exclusions.rnc      |   63 --
 packages/html5-schema/locating-rules.xml       |    9 -
 packages/html5-schema/media.rnc                |  210 ----
 packages/html5-schema/meta.rnc                 |  424 --------
 packages/html5-schema/microdata.rnc            |  101 --
 packages/html5-schema/phrase.rnc               |  400 --------
 packages/html5-schema/rdfa.rnc                 |  285 ------
 packages/html5-schema/revision.rnc             |   54 -
 packages/html5-schema/ruby.rnc                 |   81 --
 packages/html5-schema/sectional.rnc            |  172 ----
 packages/html5-schema/structural.rnc           |  135 ---
 packages/html5-schema/tables.rnc               |  244 -----
 packages/html5-schema/web-components.rnc       |   43 -
 packages/html5-schema/web-forms-scripting.rnc  |   27 -
 packages/html5-schema/web-forms.rnc            |  607 ------------
 packages/html5-schema/web-forms2-scripting.rnc |    9 -
 packages/html5-schema/web-forms2.rnc           |  789 ---------------
 packages/html5-schema/xhtml5.rnc               |   40 -
 32 files changed, 1 insertion(+), 8645 deletions(-)

diff --git a/externals-list b/externals-list
index f11668f..94eef25 100644
--- a/externals-list
+++ b/externals-list
@@ -100,6 +100,7 @@
  ("greader"            :external 
"https://gitlab.com/michelangelo-rodriguez/greader";)
  ("guess-language"     :external 
"https://github.com/tmalsburg/guess-language.el";)
  ("highlight-escape-sequences" :external 
"https://github.com/dgutov/highlight-escape-sequences/";)
+ ("html5-schema" :external nil)
  ("hyperbole"           :external 
"http://git.savannah.gnu.org/r/hyperbole.git";)
  ("ioccur"             :external 
"https://github.com/thierryvolpiatto/ioccur.git";)
  ("ivy-explorer"        :external "https://github.com/clemera/ivy-explorer";)
diff --git a/packages/html5-schema/.htaccess b/packages/html5-schema/.htaccess
deleted file mode 100644
index 8727307..0000000
--- a/packages/html5-schema/.htaccess
+++ /dev/null
@@ -1,10 +0,0 @@
-AddDescription "RelaxNG Schema for HTML 5 Core (XML)" xhtml5core.rnc
-AddDescription "RelaxNG Schema for HTML 5 Core (HTML)" html5core.rnc
-AddDescription "RelaxNG Schema for HTML 5 Exclusions" html5exclusions.rnc
-
-AddDescription "RelaxNG Schema for HTML 5: Common Definitions" common.rnc
-AddDescription "RelaxNG Schema for HTML 5: Global Structure & Meta Data" 
meta.rnc
-AddDescription "RelaxNG Schema for HTML 5: (Inline) Phrase Markup" phrase.rnc
-AddDescription "RelaxNG Schema for HTML 5: Basic Block Markup" block.rnc
-AddDescription "Schema Testing Scripts and Instances" tests
-
diff --git a/packages/html5-schema/LICENSE b/packages/html5-schema/LICENSE
deleted file mode 100644
index 0a2a5e0..0000000
--- a/packages/html5-schema/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-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-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
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/packages/html5-schema/applications.rnc 
b/packages/html5-schema/applications.rnc
deleted file mode 100644
index 618814d..0000000
--- a/packages/html5-schema/applications.rnc
+++ /dev/null
@@ -1,405 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Web Application Features              #
-# #####################################################################
-
-## Additions to Common Attributes
-
-       common.attrs.interact &=
-               (       common.attrs.contextmenu?
-               &       common.attrs.contenteditable?
-               &       common.attrs.draggable?
-               &       common.attrs.dropzone?
-               &       common.attrs.hidden?
-               &       common.attrs.spellcheck?
-               )
-               
-       common.attrs.other &= common.attrs.interact
-
-## Context Menu: contextmenu
-
-       common.attrs.contextmenu =
-               attribute contextmenu {
-                       common.data.idref
-               }
-
-## Editable Content: contenteditable
-
-       common.attrs.contenteditable =
-               attribute contenteditable {
-                       w:string "true" | w:string "false" | w:string ""
-               }
-
-## Draggable Element: draggable
-
-       common.attrs.draggable =
-               attribute draggable {
-                       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 =
-               attribute hidden {
-                       w:string "hidden" | w:string ""
-               }
-
-## Spellchecking and grammar checking: spellcheck
-
-       common.attrs.spellcheck =
-               attribute spellcheck{
-                       w:string "true" | w:string "false" | w:string ""
-               }
-
-## Application Cache: manifest
-
-       html.attrs.manifest =
-               attribute manifest {
-                       common.data.uri.non-empty
-               }
-               
-       html.attrs &= html.attrs.manifest?
-
-## Progess Indicator: <progress>
-
-       progress.elem =
-               element progress { progress.inner & progress.attrs }
-       progress.attrs =
-               (       common.attrs
-               &       progress.attrs.value?
-               &       progress.attrs.max?
-               &       (       common.attrs.aria.implicit.progressbar
-                       |       common.attrs.aria.role.progressbar
-                       )?
-               )
-               progress.attrs.value =
-                       attribute value {
-                               common.data.float.non-negative
-                       }
-               progress.attrs.max =
-                       attribute max {
-                               common.data.float.positive
-                       }
-       progress.inner =
-               ( common.inner.phrasing ) #Cannot enforce textContent format 
here
-
-       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.implicit.dialog
-                       |       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.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.main
-                       |       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
-
-## Toolbar: <menu type=toolbar>
-
-       menu.toolbar.elem =
-               element menu { menu.toolbar.inner & menu.toolbar.attrs }
-       menu.toolbar.attrs =
-               (       common.attrs
-               &       menu.toolbar.attrs.type?
-               &       (       common.attrs.aria.implicit.toolbar
-                       |       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
-                       )?
-               )
-               menu.toolbar.attrs.type =
-                       attribute type {
-                               w:string "toolbar"
-                       }
-       menu.toolbar.inner =
-               (       mli.elem*
-               |       common.inner.flow
-               )
-       menu.elem |= menu.toolbar.elem
-       
-## Toolbar item: <li>
-
-       mli.elem =
-               element li { mli.inner & mli.attrs }
-       mli.attrs =
-               (       common.attrs
-               &       (       (       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.presentation
-                               )
-                       )?
-               )
-       mli.inner =
-               ( common.inner.flow )
-
-## Popup menu: <menu type=popup>
-
-       menu.popup.elem =
-               element menu { menu.popup.inner & menu.popup.attrs }
-       menu.popup.attrs =
-               (       common.attrs
-               &       menu.popup.attrs.type?
-               &       menu.attrs.label?
-               &       common.attrs.aria?
-               )
-               menu.popup.attrs.type =
-                       attribute type {
-                               w:string "popup"
-                       }
-               menu.attrs.label =
-                       attribute label {
-                               string
-                       }
-       menu.popup.inner =
-               (       menuitem.elem*
-               &       hr.elem*
-               &       menu.popup.elem*
-               &       common.elem.script-supporting*
-               )
-       menu.elem |= menu.popup.elem
-
-## Ambiguous menu: <menu> (with no "type" attribute)
-       menu.ambiguous.elem =
-               element menu { menu.ambiguous.inner & menu.ambiguous.attrs }
-       menu.ambiguous.attrs =
-               (       common.attrs
-               &       menu.attrs.label?
-               &       common.attrs.aria?
-               )
-       menu.ambiguous.inner =
-               (       (       menuitem.elem*
-                       &       hr.elem*
-                       &       menu.ambiguous.elem*
-                       &       common.elem.script-supporting*
-                       )
-               |       (       mli.elem*
-                       |       common.inner.flow
-                       )
-               )
-       menu.elem |= menu.ambiguous.elem
-
-       common.elem.flow |= menu.elem
-       # REVISIT allow nested menus
-
-## Explicit command in popup menu: <menuitem type=command>
-       menuitem.explicit.command.elem =
-               element menuitem { menuitem.inner & 
menuitem.explicit.command.attrs }
-       menuitem.explicit.command.attrs =
-               (       common.attrs
-               &       menuitem.explicit.command.attrs.type?
-               &       menuitem.attrs.label?
-               &       menuitem.attrs.icon?
-               &       menuitem.attrs.disabled?
-               &       menuitem.attrs.default?
-               &       common.attrs.aria?
-               )
-               menuitem.explicit.command.attrs.type =
-                       attribute type {
-                               w:string "command"
-                       }
-               menuitem.attrs.label =
-                       attribute label {
-                               w:non-empty-string
-                       }
-               menuitem.attrs.icon =
-                       attribute icon {
-                               common.data.uri.non-empty
-                       }
-               menuitem.attrs.disabled =
-                       attribute disabled {
-                               w:string "" | w:string "disabled"
-                       }
-               menuitem.attrs.default =
-                       attribute default {
-                               w:string "" | w:string "default"
-                       }
-       menuitem.elem |= menuitem.explicit.command.elem
-
-## Checkbox in popup menu: <menuitem type=checkbox>
-       menuitem.checkbox.elem =
-               element menuitem { menuitem.inner & menuitem.checkbox.attrs }
-       menuitem.checkbox.attrs =
-               (       common.attrs
-               &       menuitem.checkbox.attrs.type
-               &       menuitem.attrs.label?
-               &       menuitem.attrs.icon?
-               &       menuitem.attrs.disabled?
-               &       menuitem.attrs.checked?
-               &       menuitem.attrs.radiogroup?
-               &       menuitem.attrs.default?
-               &       common.attrs.aria?
-               )
-               menuitem.checkbox.attrs.type =
-                       attribute type {
-                               w:string "checkbox"
-                       }
-               menuitem.attrs.checked =
-                       attribute checked {
-                               w:string "checked" | w:string ""
-                       }
-               menuitem.attrs.radiogroup =
-                       attribute radiogroup {
-                               string
-                       }
-       menuitem.elem |= menuitem.checkbox.elem
-
-## Radio button in popup menu: <menuitem type=radio>
-       menuitem.radio.elem =
-               element menuitem { menuitem.inner & menuitem.radio.attrs }
-       menuitem.radio.attrs =
-               (       common.attrs
-               &       menuitem.radio.attrs.type
-               &       menuitem.attrs.label?
-               &       menuitem.attrs.icon?
-               &       menuitem.attrs.disabled?
-               &       menuitem.attrs.checked?
-               &       menuitem.attrs.radiogroup?
-               &       menuitem.attrs.default?
-               &       common.attrs.aria?
-               )
-               menuitem.radio.attrs.type =
-                       attribute type {
-                               w:string "radio"
-                       }
-       menuitem.elem |= menuitem.radio.elem
-
-## Indirect command in popup menu: <menuitem command>
-       menuitem.indirect.command.elem =
-               element menuitem { menuitem.inner & 
menuitem.indirect.command.attrs }
-       menuitem.indirect.command.attrs =
-               (       common.attrs
-               &       menuitem.attrs.default?
-               &       menuitem.attrs.command
-               &       common.attrs.aria?
-               )
-               menuitem.attrs.command =
-                       attribute command {
-                               common.data.idref
-                       }
-       menuitem.elem |= menuitem.indirect.command.elem
-
-       menuitem.inner =
-               ( empty )
-
-## Canvas for Dynamic Graphics: <canvas>
-
-       canvas.elem.flow =
-               element canvas { canvas.inner.flow & canvas.attrs }
-       canvas.elem.phrasing =
-               element canvas { canvas.inner.phrasing & canvas.attrs }
-       canvas.attrs =
-               (       common.attrs
-               &       canvas.attrs.height?
-               &       canvas.attrs.width?
-               &       common.attrs.aria?
-               )
-               canvas.attrs.height =
-                       attribute height {
-                               common.data.integer.non-negative
-                       }
-               canvas.attrs.width =
-                       attribute width {
-                               common.data.integer.non-negative
-                       }
-       canvas.inner.flow =
-               ( common.inner.transparent.flow )
-       canvas.inner.phrasing =
-               ( common.inner.phrasing )
-       
-       common.elem.flow |= canvas.elem.flow
-       common.elem.phrasing |= canvas.elem.phrasing
-
-## Additional On-Demand Information: <details>
-
-       details.elem =
-               element details { details.inner & details.attrs }
-       details.attrs =
-               (       common.attrs
-               &       details.attrs.open?
-               &       (       common.attrs.aria.implicit.group # 
aria-expanded must be true if open attr present; check by assertions
-                       |       common.attrs.aria.role.group
-                       )?
-               )
-               details.attrs.open =
-                       attribute open {
-                               w:string "open" | w:string ""
-                       }
-       details.inner =
-               (       summary.elem
-               ,       common.inner.flow
-               )
-       
-       common.elem.flow |= details.elem
-
-## Caption/summary for details element: <summary>
-
-       summary.elem =
-               element summary { summary.inner & summary.attrs }
-       summary.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.implicit.button
-                       |       common.attrs.aria.role.button
-                       )?
-               )
-       summary.inner =
-               (       common.inner.phrasing
-               |       h1.elem
-               |       h2.elem
-               |       h3.elem
-               |       h4.elem
-               |       h5.elem
-               |       h6.elem
-               |       hgroup.elem
-               )
diff --git a/packages/html5-schema/aria.rnc b/packages/html5-schema/aria.rnc
deleted file mode 100644
index 61e007b..0000000
--- a/packages/html5-schema/aria.rnc
+++ /dev/null
@@ -1,1251 +0,0 @@
-# #####################################################################
-##     RELAX NG Schema for HTML 5: Accessible Rich Internet Applications #
-# #####################################################################
-#
-# history: http://hsivonen.iki.fi/aria-html5-bis/
-
-# #####################################################################
-## ARIA
-
-## Global states and properties
-
-aria.global = 
-       (       aria.prop.atomic?
-       &       aria.state.busy?
-       &       aria.prop.controls?
-       &       aria.prop.describedby?
-       &       aria.state.disabled?
-       &       aria.state.dropeffect?
-       &       aria.prop.flowto?
-       &       aria.state.grabbed?
-       &       aria.prop.haspopup?
-       &       aria.state.hidden?
-       &       aria.state.invalid?
-       &       aria.prop.label?
-       &       aria.prop.labelledby?
-       &       aria.prop.live?
-       &       aria.prop.owns?
-       &       aria.prop.relevant?
-       )
-
-common.attrs.other &= aria.global?
-
-## States and Properties for Native Roles
-
-common.attrs.aria.implicit.button |=
-       (       aria.state.expanded?
-       &       aria.state.pressed?
-       )
-
-common.attrs.aria.implicit.checkbox |=
-       (       aria.state.checked? )
-
-common.attrs.aria.implicit.combobox |=
-       (       aria.state.expanded?
-       &       aria.prop.autocomplete?
-       &       aria.prop.required?
-       &       aria.prop.activedescendant?
-       )
-
-common.attrs.aria.implicit.dialog |=
-       (       aria.state.expanded? )
-
-common.attrs.aria.implicit.document |=
-       (       aria.state.expanded? )
-
-common.attrs.aria.implicit.form |=
-       (       aria.state.expanded? )
-
-common.attrs.aria.implicit.group |=
-       (       aria.state.expanded?
-       &       aria.prop.activedescendant?
-       )
-
-common.attrs.aria.implicit.heading |=
-       (       aria.state.expanded?
-       &       aria.prop.level?
-       )
-
-common.attrs.aria.implicit.img |=
-       (       aria.state.expanded? )
-
-common.attrs.aria.implicit.link |=
-       (       aria.state.expanded? )
-
-common.attrs.aria.implicit.listbox |=
-       (       aria.prop.multiselectable?
-       &       aria.prop.required?
-       &       aria.prop.activedescendant?
-       &       aria.state.expanded?
-       )
-
-common.attrs.aria.implicit.listitem |=
-       (       aria.prop.level?
-       &       aria.prop.posinset?
-       &       aria.prop.setsize?
-       &       aria.state.expanded?
-       )
-
-common.attrs.aria.implicit.option |=
-       (       aria.prop.posinset?
-       &       aria.prop.setsize?
-       &       aria.state.checked?
-       &       aria.state.selected?
-       )
-
-common.attrs.aria.implicit.progressbar |=
-       (       aria.prop.valuemax?
-       &       aria.prop.valuemin?
-       &       aria.prop.valuenow?
-       &       aria.prop.valuetext?
-       )
-
-common.attrs.aria.implicit.radio |=
-       (       aria.prop.posinset?
-       &       aria.prop.setsize?
-       &       aria.state.checked?
-       &       aria.state.selected?
-       )
-
-common.attrs.aria.implicit.slider |=
-       (       aria.prop.valuemax?
-       &       aria.prop.valuemin?
-       &       aria.prop.valuenow?
-       &       aria.prop.valuetext?
-       &       aria.prop.orientation?
-       )
-
-common.attrs.aria.implicit.spinbutton |=
-       (       aria.prop.valuemax?
-       &       aria.prop.valuemin?
-       &       aria.prop.valuenow?
-       &       aria.prop.valuetext?
-       &       aria.prop.required?
-       )
-
-common.attrs.aria.implicit.textbox |=
-       (       aria.prop.activedescendant?
-       &       aria.prop.autocomplete?
-       &       aria.prop.multiline?
-       &       aria.prop.readonly?
-       &       aria.prop.required?
-       )
-
-common.attrs.aria.implicit.toolbar |=
-       (       aria.state.expanded?
-       &       aria.prop.activedescendant?
-       )
-
-common.attrs.aria.implicit.column-or-row-header |=
-       (       aria.prop.sort?
-       &       aria.prop.readonly?
-       &       aria.prop.required?
-       &       aria.state.selected?
-       &       aria.state.expanded?
-       )
-
-#common.attrs.aria.implicit.select |=
-#              (       aria.state.invalid?
-#      &       aria.prop.required?
-#      &       aria.prop.atomic?
-#      &       aria.state.busy?
-#      &       aria.prop.channel?
-#      &       aria.prop.controls?
-#      &       aria.prop.live?
-#      &       aria.prop.relevant?
-#      )
-
-# section
-#   |
-#   |_ region
-#        |
-#        |_ article
-#        |
-#        |_ landmark
-#        |     |_ banner
-#        |     |_ complementary
-#        |     |_ contentinfo
-#        |     |_ main
-#        |     |_ navigation
-#        |
-#        |_ list
-#        |
-#        |_ status
-
-common.attrs.aria.implicit.section |=
-       ( aria.state.expanded? )
-
-common.attrs.aria.implicit.region |= common.attrs.aria.implicit.section
-
-common.attrs.aria.implicit.article |= common.attrs.aria.implicit.region
-common.attrs.aria.implicit.landmark |= common.attrs.aria.implicit.region
-common.attrs.aria.implicit.list |= common.attrs.aria.implicit.region
-common.attrs.aria.implicit.status |= common.attrs.aria.implicit.region
-
-common.attrs.aria.implicit.banner |= common.attrs.aria.implicit.landmark
-common.attrs.aria.implicit.complementary |= common.attrs.aria.implicit.landmark
-common.attrs.aria.implicit.contentinfo |= common.attrs.aria.implicit.landmark
-common.attrs.aria.implicit.main |= common.attrs.aria.implicit.landmark
-common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark
-
-# #####################################################################
-## States
-
-## busy
-       aria.state.busy =
-               attribute aria-busy 
-                       {       string "true"
-                       |       string "false" #default
-                       }
-
-## checked
-       aria.state.checked =
-               attribute aria-checked 
-                       {       string "true"
-                       |       string "false"
-                       |       string "mixed"
-                       |       string "undefined" #default
-                       }
-
-## disabled
-       aria.state.disabled =
-               attribute aria-disabled 
-                       {       string "true"
-                       |       string "false" #default
-                       }
-
-## dropeffect
-       aria.state.dropeffect =
-               attribute aria-dropeffect
-                       {       token "none" #default
-                       | token "popup"
-                       | token "execute"
-                       |       list 
-                               {       ( string "copy" )
-                               ,       ( string "execute" )?
-                               }
-                       |       list 
-                               {       ( string "move" )
-                               ,       ( string "execute" )?
-                               }
-                       |       list 
-                               {       ( string "link" )
-                               ,       ( string "execute" )?
-                               }
-                       |       list 
-                               {       ( string "execute" )
-                               ,       ( string "copy" )
-                               }
-                       |       list 
-                               {       ( string "execute" )
-                               ,       ( string "move" )
-                               }
-                       |       list 
-                               {       ( string "execute" )
-                               ,       ( string "link" )
-                               }
-                       }
-
-## expanded
-       aria.state.expanded =
-               attribute aria-expanded 
-                       {       string "true"
-                       |       string "false"
-                       |       string "undefined" #default
-                       }
-
-## grabbed
-       aria.state.grabbed =
-               attribute aria-grabbed 
-                       {       string "true"
-                       |       string "false"
-                       |       string "undefined" #default
-                       }
-
-## hidden
-       aria.state.hidden =
-               attribute aria-hidden 
-                       {       string "true"
-                       |       string "false" #default
-                       }
-
-## invalid
-       aria.state.invalid =
-               attribute aria-invalid 
-                       {       string "true"
-                       |       string "false" #default
-                       |       string "grammar"
-                       |       string "spelling"
-                       }
-
-## pressed
-       aria.state.pressed =
-               attribute aria-pressed 
-                       {       string "true"
-                       |       string "false"
-                       |       string "mixed"
-                       |       string "undefined" #default
-                       }
-
-## selected
-       aria.state.selected =
-               attribute aria-selected 
-                       {       string "true"
-                       |       string "false"
-                       |       string "undefined" #default
-                       }
-
-
-
-# #####################################################################
-## Properties
-
-## activedescendant
-       aria.prop.activedescendant =
-               attribute aria-activedescendant {
-                       common.data.idref #REVISIT add Schematron check
-               }
-
-## atomic
-       aria.prop.atomic =
-               attribute aria-atomic
-                       {       string "true"
-                       |       string "false" #default
-                       }       
-
-## autocomplete
-       aria.prop.autocomplete =
-               attribute aria-autocomplete
-                       {       string "inline"
-                       |       string "list"
-                       |       string "both"
-                       |       string "none" #default
-                       }
-
-## controls
-       aria.prop.controls =
-               attribute aria-controls {
-                       common.data.idrefs #REVISIT add Schematron check
-               }
-
-## describedby
-       aria.prop.describedby =
-               attribute aria-describedby {
-                       common.data.idrefs #REVISIT add Schematron check
-               }
-
-## flowto
-       aria.prop.flowto =
-               attribute aria-flowto {
-                       common.data.idrefs #REVISIT add Schematron check
-               }
-
-## haspopup
-       aria.prop.haspopup =
-               attribute aria-haspopup
-                       {       string "true" #REVISIT check owns or descendant
-                       |       string "false" #default
-                       }       
-
-## label
-       aria.prop.label =
-               attribute aria-label {
-                       string
-               }
-
-## labelledby
-       aria.prop.labelledby =
-               attribute aria-labelledby {
-                       common.data.idrefs #REVISIT add Schematron check
-               }
-
-## level
-       aria.prop.level =
-               attribute aria-level {
-                       common.data.integer.positive
-               }
-
-## live
-       aria.prop.live =
-               attribute aria-live
-                       {       string "off" #default
-                       |       string "polite"
-                       |       string "assertive"
-                       }       
-
-## multiline
-       aria.prop.multiline =
-               attribute aria-multiline
-                       {       string "true"
-                       |       string "false" #default
-                       }       
-
-## multiselectable
-       aria.prop.multiselectable =
-               attribute aria-multiselectable
-                       {       string "true"
-                       |       string "false" #default
-                       }       
-
-## orientation
-       aria.prop.orientation =
-               attribute aria-orientation
-                       {       string "vertical"
-                       |       string "horizontal" #default
-                       }
-
-## owns
-       aria.prop.owns =
-               attribute aria-owns {
-                       common.data.idrefs #REVISIT add Schematron check
-               }
-
-## posinset
-       aria.prop.posinset =
-               attribute aria-posinset {
-                       common.data.integer.positive
-               }
-
-## readonly
-       aria.prop.readonly =
-               attribute aria-readonly
-                       {       string "true"
-                       |       string "false" #default
-                       }       
-       common.attrs.aria.prop.readonly |= aria.prop.readonly
-
-## relevant
-       aria.prop.relevant =
-               attribute aria-relevant
-                       {       token "all"
-                       |       list 
-                               {       ( string "additions" )
-                               ,       ( string "removals" )?
-                               ,       ( string "text" )?
-                               }
-                       |       list 
-                               {       ( string "additions" )
-                               ,       ( string "text" )?
-                               ,       ( string "removals" )?
-                               }
-                       |       list 
-                               {       ( string "removals" )
-                               ,       ( string "additions" )?
-                               ,       ( string "text" )?
-                               }
-                       |       list 
-                               {       ( string "removals" )
-                               ,       ( string "text" )?
-                               ,       ( string "additions" )?
-                               }
-                       |       list 
-                               {       ( string "text" )
-                               ,       ( string "additions" )?
-                               ,       ( string "removals" )?
-                               }
-                       |       list 
-                               {       ( string "text" )
-                               ,       ( string "removals" )?
-                               ,       ( string "additions" )?
-                               }
-                       }       
-
-## required
-       aria.prop.required =
-               attribute aria-required
-                       {       string "true"
-                       |       string "false" #default
-                       }       
-
-## setsize
-       aria.prop.setsize =
-               attribute aria-setsize {
-                       common.data.integer.non-negative
-               }
-
-## sort
-       aria.prop.sort =
-               attribute aria-sort
-                       {       string "ascending"
-                       |       string "descending"
-                       |       string "none" #default
-                       |       string "other"
-                       }       
-
-## valuemax
-       aria.prop.valuemax =
-               attribute aria-valuemax {
-                       common.data.float #REVISIT
-               }
-
-## valuemin
-       aria.prop.valuemin =
-               attribute aria-valuemin {
-                       common.data.float #REVISIT
-               }
-
-## valuenow
-       aria.prop.valuenow =
-               attribute aria-valuenow {
-                       common.data.float #REVISIT
-               }
-
-## valuetext
-       aria.prop.valuetext =
-               attribute aria-valuetext {
-                       string
-               }
-
-# #####################################################################
-## Roles
-
-## alert
-       aria.alert =
-               (       aria.role.alert
-               &       aria.state.expanded? 
-               )
-               aria.role.alert = 
-                       attribute role { string "alert" }
-       
-       common.attrs.aria |= aria.alert
-       common.attrs.aria.role.alert |= aria.alert
-
-## alertdialog
-       aria.alertdialog =
-               (       aria.role.alertdialog
-               &       aria.state.expanded?
-               )
-               aria.role.alertdialog = 
-                       attribute role { string "alertdialog" }
-       
-       common.attrs.aria |= aria.alertdialog
-       common.attrs.aria.role.alertdialog |= aria.alertdialog
-
-## application
-       aria.application =
-               (       aria.role.application
-               &       aria.state.expanded?
-               )
-               aria.role.application = 
-                       attribute role { string "application" }
-
-       common.attrs.aria |= aria.application
-       common.attrs.aria.landmark.application |= aria.application
-
-## article
-       aria.article =
-               (       aria.role.article
-               &       aria.state.expanded?
-               )
-               aria.role.article = 
-                       attribute role { string "article" }
-
-       common.attrs.aria |= aria.article
-       common.attrs.aria.landmark.article |= aria.article
-
-## banner
-       aria.banner =
-               (       aria.role.banner
-               &       aria.state.expanded?
-               )
-               aria.role.banner = 
-                       attribute role { string "banner" }
-       
-       common.attrs.aria |= aria.banner
-       common.attrs.aria.landmark.banner |= aria.banner
-       
-## button
-       aria.button =
-               (       aria.role.button
-               &       aria.state.expanded?
-               &       aria.state.pressed? # not inherited
-               )
-               aria.role.button = 
-                       attribute role { string "button" }
-       
-       common.attrs.aria |= aria.button
-       common.attrs.aria.role.button |= aria.button
-
-## checkbox
-       aria.checkbox =
-               (       aria.role.checkbox
-               &       aria.state.checked #required!
-               )
-               aria.role.checkbox = 
-                       attribute role { string "checkbox" }
-       
-       common.attrs.aria |= aria.checkbox
-       common.attrs.aria.role.checkbox |= aria.checkbox
-
-# 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.prop.required?
-               )
-               aria.role.columnheader = 
-                       attribute role { string "columnheader" }
-       
-       common.attrs.aria |= aria.columnheader
-
-## combobox
-       aria.combobox =
-               (       aria.role.combobox
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded #required!
-               &       aria.prop.autocomplete?
-               &       aria.prop.required?
-               )
-               aria.role.combobox = 
-                       attribute role { string "combobox" }
-       
-       common.attrs.aria |= aria.combobox
-       common.attrs.aria.role.combobox |= aria.combobox
-
-## complementary
-       aria.complementary =
-               (       aria.role.complementary
-               &       aria.state.expanded?
-               )
-               aria.role.complementary = 
-                       attribute role { string "complementary" }
-
-       common.attrs.aria |= aria.complementary
-       common.attrs.aria.landmark.complementary |= aria.complementary
-
-## contentinfo
-       aria.contentinfo =
-               (       aria.role.contentinfo
-               &       aria.state.expanded?
-               )
-               aria.role.contentinfo = 
-                       attribute role { string "contentinfo" }
-
-       common.attrs.aria |= aria.contentinfo
-       common.attrs.aria.landmark.contentinfo |= aria.contentinfo
-
-## definition
-       aria.definition =
-               (       aria.role.definition
-               &       aria.state.expanded?
-               )
-               aria.role.definition = 
-                       attribute role { string "definition" }
-
-       common.attrs.aria |= aria.definition
-
-## dialog
-       aria.dialog =
-               (       aria.role.dialog
-               &       aria.state.expanded?
-               )
-               aria.role.dialog = 
-                       attribute role { string "dialog" }
-
-       common.attrs.aria |= aria.dialog
-       common.attrs.aria.role.dialog |= aria.dialog
-
-## directory
-       aria.directory =
-               (       aria.role.directory
-               &       aria.state.expanded?
-               )
-               aria.role.directory = 
-                       attribute role { string "directory" }
-
-       common.attrs.aria |= aria.directory
-       common.attrs.aria.role.directory |= aria.directory
-
-## document
-       aria.document =
-               (       aria.role.document
-               &       aria.state.expanded?
-               )
-               aria.role.document = 
-                       attribute role { string "document" }
-
-       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
-               &       aria.prop.level? # not inherited
-               &       aria.prop.multiselectable? # not inherited
-               &       aria.prop.readonly? # not inherited
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               )
-               aria.role.grid = 
-                       attribute role { string "grid" }
-       
-       common.attrs.aria |= aria.grid
-       
-## gridcell
-       aria.gridcell =
-               (       aria.role.gridcell
-               &       aria.prop.level? # net inherited
-               &       aria.prop.readonly? # not inherited
-               &       aria.state.selected? # not inherited
-               &       aria.state.expanded?
-               &       aria.prop.required?
-               )
-               aria.role.gridcell = 
-                       attribute role { string "gridcell" }
-       
-       common.attrs.aria |= aria.gridcell
-
-## group
-       aria.group =
-               (       aria.role.group
-               &       aria.prop.activedescendant? # not inherited
-               &       aria.state.expanded? # not inherited
-               )
-               aria.role.group = 
-                       attribute role { string "group" }
-       
-       common.attrs.aria |= aria.group
-       common.attrs.aria.role.group |= aria.group
-
-## 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 =
-               (       aria.role.img
-               &       aria.state.expanded?
-               )
-               aria.role.img = 
-                       attribute role { string "img" }
-       
-       common.attrs.aria |= aria.img
-       common.attrs.aria.role.img |= aria.img
-
-## link
-       aria.link =
-               (       aria.role.link
-               &       aria.state.expanded?
-               )
-               aria.role.link = 
-                       attribute role { string "link" }
-       
-       common.attrs.aria |= aria.link
-       common.attrs.aria.role.link |= aria.link
-
-## list
-       aria.list =
-               (       aria.role.list
-               &       aria.state.expanded?
-               )
-               aria.role.list = 
-                       attribute role { string "list" }
-       
-       common.attrs.aria |= aria.list
-       common.attrs.aria.role.list |= aria.list
-
-## listbox
-       aria.listbox =
-               (       aria.role.listbox
-               &       aria.prop.multiselectable? # not inherited
-               &       aria.prop.required?
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               )
-               aria.role.listbox = 
-                       attribute role { string "listbox" }
-       
-       common.attrs.aria |= aria.listbox
-       common.attrs.aria.role.listbox |= aria.listbox
-
-## listitem
-       aria.listitem =
-               (       aria.role.listitem
-               &       aria.prop.posinset? # not inherited
-               &       aria.prop.setsize? # not inherited
-               &       aria.prop.level? # not inherited
-               &       aria.state.expanded?
-               )
-               aria.role.listitem = 
-                       attribute role { string "listitem" }
-       
-       common.attrs.aria |= aria.listitem
-       common.attrs.aria.role.listitem |= aria.listitem
-
-## log
-       aria.log =
-               (       aria.role.log
-               &       aria.state.expanded?
-               )
-               aria.role.log = 
-                       attribute role { string "log" }
-       
-       common.attrs.aria |= aria.log
-       common.attrs.aria.role.log |= aria.log
-
-## main
-       aria.main =
-               (       aria.role.main
-               &       aria.state.expanded?
-               )
-               aria.role.main = 
-                       attribute role { string "main" }
-       
-       common.attrs.aria |= aria.main
-       common.attrs.aria.landmark.main |= aria.main
-
-## marquee
-       aria.marquee =
-               (       aria.role.marquee
-               &       aria.state.expanded?
-               )
-               aria.role.marquee = 
-                       attribute role { string "marquee" }
-       
-       common.attrs.aria |= aria.marquee
-       common.attrs.aria.role.marquee |= aria.marquee
-
-## math
-       aria.math =
-               (       aria.role.math
-               &       aria.state.expanded?
-               )
-               aria.role.math = 
-                       attribute role { string "math" }
-       
-       common.attrs.aria |= aria.math
-
-## menu
-       aria.menu =
-               (       aria.role.menu
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               )
-               aria.role.menu = 
-                       attribute role { string "menu" }
-       
-       common.attrs.aria |= aria.menu
-       common.attrs.aria.role.menu |= aria.menu
-
-## menubar
-       aria.menubar =
-               (       aria.role.menubar
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               )
-               aria.role.menubar = 
-                       attribute role { string "menubar" }
-       
-       common.attrs.aria |= aria.menubar
-       common.attrs.aria.role.menubar |= aria.menubar
-
-
-## menuitem
-       aria.menuitem =
-               (       aria.role.menuitem )
-               aria.role.menuitem = 
-                       attribute role { string "menuitem" }
-       
-       common.attrs.aria |= aria.menuitem
-       common.attrs.aria.role.menuitem |= aria.menuitem
-
-## menuitemcheckbox
-       aria.menuitemcheckbox =
-               (       aria.role.menuitemcheckbox
-               &       aria.state.checked #required
-               )
-               aria.role.menuitemcheckbox = 
-                       attribute role { string "menuitemcheckbox" }
-       
-       common.attrs.aria |= aria.menuitemcheckbox
-       common.attrs.aria.role.menuitemcheckbox |= aria.menuitemcheckbox
-
-## menuitemradio
-       aria.menuitemradio =
-               (       aria.role.menuitemradio
-               &       aria.state.checked #required
-               &       aria.state.selected?
-               &       aria.prop.posinset?
-               &       aria.prop.setsize?
-               )
-               aria.role.menuitemradio = 
-                       attribute role { string "menuitemradio" }
-       
-       common.attrs.aria |= aria.menuitemradio
-       common.attrs.aria.role.menuitemradio |= aria.menuitemradio
-
-## navigation
-       aria.navigation =
-               (       aria.role.navigation
-               &       aria.state.expanded?
-               )
-               aria.role.navigation = 
-                       attribute role { string "navigation" }
-       
-       common.attrs.aria |= aria.navigation
-       common.attrs.aria.landmark.navigation |= aria.navigation
-
-## note
-       aria.note =
-               (       aria.role.note
-               &       aria.state.expanded?
-               )
-               aria.role.note = 
-                       attribute role { string "note" }
-       
-       common.attrs.aria |= aria.note
-       common.attrs.aria.landmark.note |= aria.note
-
-## option
-       aria.option =
-               (       aria.role.option
-               &       aria.state.checked? # not inherited
-               &       aria.state.selected? # not inherited
-               &       aria.prop.posinset?
-               &       aria.prop.setsize?
-               )
-               aria.role.option = 
-                       attribute role { string "option" }
-       
-       common.attrs.aria |= aria.option
-       common.attrs.aria.role.option |= aria.option
-
-
-## presentation
-       aria.presentation =
-               (       aria.role.presentation
-               &       aria.state.expanded?
-               )
-               aria.role.presentation = 
-                       attribute role { string "presentation" }
-       
-       common.attrs.aria |= aria.presentation
-       common.attrs.aria.role.presentation |= aria.presentation
-
-## progressbar
-       aria.progressbar =
-               (       aria.role.progressbar
-               &       aria.prop.valuemax? # not inherited
-               &       aria.prop.valuemin? # not inherited
-               &       aria.prop.valuenow? # not inherited
-               &       aria.prop.valuetext? # not inherited
-               )
-               aria.role.progressbar = 
-                       attribute role { string "progressbar" }
-       
-       common.attrs.aria |= aria.progressbar
-       common.attrs.aria.role.progressbar |= aria.progressbar
-
-## radio
-       aria.radio =
-               (       aria.role.radio
-               &       aria.state.checked #required!
-               &       aria.state.selected?
-               &       aria.prop.posinset?
-               &       aria.prop.setsize?
-               )
-               aria.role.radio = 
-                       attribute role { string "radio" }
-       
-       common.attrs.aria |= aria.radio
-       common.attrs.aria.role.radio |= aria.radio
-
-## radiogroup
-       aria.radiogroup =
-               (       aria.role.radiogroup
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               &       aria.prop.required?
-               )
-               aria.role.radiogroup = 
-                       attribute role { string "radiogroup" }
-       
-       common.attrs.aria |= aria.radiogroup
-
-## region
-       aria.region =
-               (       aria.role.region
-               &       aria.state.expanded?
-               )
-               aria.role.region = 
-                       attribute role { string "region" }
-       
-       common.attrs.aria |= aria.region
-       common.attrs.aria.role.region |= aria.region
-
-## row
-       aria.row =
-               (       aria.role.row
-               &       aria.prop.level? # not inherited
-               &       aria.state.selected? # not inherited
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               )
-               aria.role.row = 
-                       attribute role { string "row" }
-       
-       common.attrs.aria |= aria.row
-
-## rowgroup
-       aria.rowgroup =
-               (       aria.role.rowgroup
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               )
-               aria.role.rowgroup =
-                       attribute role { string "rowgroup" }
-
-       common.attrs.aria |= aria.rowgroup
-
-# 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.prop.required?
-               )
-               aria.role.rowheader = 
-                       attribute role { string "rowheader" }
-       
-       common.attrs.aria |= aria.rowheader
-
-## scrollbar
-       aria.scrollbar =
-               (       aria.role.scrollbar
-               &       aria.prop.orientation
-               &       aria.prop.valuemax
-               &       aria.prop.valuemin
-               &       aria.prop.valuenow
-               &       aria.prop.valuetext?
-               )
-               aria.role.scrollbar =
-                       attribute role { string "scrollbar" }
-
-       common.attrs.aria |= aria.scrollbar
-
-## search
-       aria.search =
-               (       aria.role.search
-               &       aria.state.expanded?
-               )
-               aria.role.search = 
-                       attribute role { string "search" }
-       
-       common.attrs.aria |= aria.search
-       common.attrs.aria.landmark.search |= aria.search
-
-## separator
-       aria.separator =
-               (       aria.role.separator
-               &       aria.state.expanded?
-               &       aria.prop.orientation?
-               )
-               aria.role.separator = 
-                       attribute role { string "separator" }
-       
-       common.attrs.aria |= aria.separator
-       common.attrs.aria.role.separator |= aria.separator
-
-## slider
-       aria.slider =
-               (       aria.role.slider
-               &       aria.prop.valuemax
-               &       aria.prop.valuemin
-               &       aria.prop.valuenow
-               &       aria.prop.valuetext?
-               &       aria.prop.orientation?
-               )
-               aria.role.slider = 
-                       attribute role { string "slider" }
-       
-       common.attrs.aria |= aria.slider
-       common.attrs.aria.role.slider |= aria.slider
-
-## spinbutton
-       aria.spinbutton =
-               (       aria.role.spinbutton
-               &       aria.prop.valuemax
-               &       aria.prop.valuemin
-               &       aria.prop.valuenow
-               &       aria.prop.valuetext?
-               &       aria.prop.required?
-               )
-               aria.role.spinbutton = 
-                       attribute role { string "spinbutton" }
-       
-       common.attrs.aria |= aria.spinbutton
-       common.attrs.aria.role.spinbutton |= aria.spinbutton
-
-## status
-       aria.status =
-               (       aria.role.status
-               &       aria.state.expanded?
-               )
-               aria.role.status = 
-                       attribute role { string "status" }
-       
-       common.attrs.aria |= aria.status
-       common.attrs.aria.role.status |= aria.status
-
-## switch
-       aria.switch =
-               (       aria.role.switch
-               &       aria.state.checked #required!
-               )
-               aria.role.switch =
-                       attribute role { string "switch" }
-
-       common.attrs.aria |= aria.switch
-       common.attrs.aria.role.switch |= aria.switch
-
-## tab
-       aria.tab =
-               (       aria.role.tab
-               &       aria.state.selected?
-               &       aria.state.expanded?
-               )
-               aria.role.tab = 
-                       attribute role { string "tab" }
-       
-       common.attrs.aria |= aria.tab
-       common.attrs.aria.role.tab |= aria.tab
-
-## tablist
-       aria.tablist =
-               (       aria.role.tablist
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               &       aria.prop.level?
-               &       aria.prop.multiselectable?
-               )
-               aria.role.tablist = 
-                       attribute role { string "tablist" }
-       common.attrs.aria |= aria.tablist
-       common.attrs.aria.role.tablist |= aria.tablist
-
-## tabpanel
-       aria.tabpanel =
-               (       aria.role.tabpanel
-               &       aria.state.expanded?
-               )
-               aria.role.tabpanel = 
-                       attribute role { string "tabpanel" }
-       
-       common.attrs.aria |= aria.tabpanel
-       common.attrs.aria.role.tabpanel |= aria.tabpanel
-
-## textbox
-       aria.textbox =
-               (       aria.role.textbox
-               &       aria.prop.activedescendant?
-               &       aria.prop.autocomplete? # not inherited
-               &       aria.prop.multiline? # not inherited
-               &       aria.prop.readonly? # not inherited
-               &       aria.prop.required?
-               )
-               aria.role.textbox = 
-                       attribute role { string "textbox" }
-       
-       common.attrs.aria |= aria.textbox
-       common.attrs.aria.role.textbox |= aria.textbox
-
-## timer
-       aria.timer =
-               (       aria.role.timer
-               &       aria.state.expanded?
-               )
-               aria.role.timer = 
-                       attribute role { string "timer" }
-       
-       common.attrs.aria |= aria.timer
-
-## toolbar
-       aria.toolbar =
-               (       aria.role.toolbar
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               )
-               aria.role.toolbar = 
-                       attribute role { string "toolbar" }
-       
-       common.attrs.aria |= aria.toolbar
-       common.attrs.aria.role.toolbar |= aria.toolbar
-
-## tooltip
-       aria.tooltip =
-               (       aria.role.tooltip
-               &       aria.state.expanded?
-               )
-               aria.role.tooltip = 
-                       attribute role { string "tooltip" }
-       
-       common.attrs.aria |= aria.tooltip
-
-## tree
-       aria.tree =
-               (       aria.role.tree
-               &       aria.prop.multiselectable? # not inherited
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               &       aria.prop.required?
-               )
-               aria.role.tree = 
-                       attribute role { string "tree" }
-       
-       common.attrs.aria |= aria.tree
-       common.attrs.aria.role.tree |= aria.tree
-
-## treegrid
-       aria.treegrid =
-               (       aria.role.treegrid
-               &       aria.prop.activedescendant?
-               &       aria.state.expanded?
-               &       aria.prop.level?
-               &       aria.prop.multiselectable?
-               &       aria.prop.readonly?
-               &       aria.prop.required?
-               )
-               aria.role.treegrid = 
-                       attribute role { string "treegrid" }
-       
-       common.attrs.aria |= aria.treegrid
-
-## treeitem
-       aria.treeitem =
-               (       aria.role.treeitem
-               &       aria.state.checked?
-               &       aria.state.expanded?
-               &       aria.prop.level?
-               &       aria.prop.posinset?
-               &       aria.state.selected?
-               &       aria.prop.setsize?
-               )
-               aria.role.treeitem = 
-                       attribute role { string "treeitem" }
-       
-       common.attrs.aria |= aria.treeitem
-       common.attrs.aria.role.treeitem |= aria.treeitem
diff --git a/packages/html5-schema/assertions.sch 
b/packages/html5-schema/assertions.sch
deleted file mode 100644
index 2b34fcc..0000000
--- a/packages/html5-schema/assertions.sch
+++ /dev/null
@@ -1,1235 +0,0 @@
-<?xml version="1.0"?>
-<!-- * ********************************************************************* 
-->
-<!-- * WARNING: This file is no longer maintained and hasn't been updated in 
-->
-<!-- * years. There are numerous requirements in the HTML spec which should -->
-<!-- * rightly be captured by assertions in this schema but that aren't. So -->
-<!-- * don't consider the set of assertions here to be thorough or complete. 
-->
-<!-- * ********************************************************************* 
-->
-
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-->
-<!-- Schematron assertions for HTML5                                         
-->
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
-
-Copyright (c) 2005-2007 Elika J. Etemad (fantasai) and Henri Sivonen (hsivonen)
-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
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-
-<schema xmlns='http://www.ascc.net/xml/schematron'>
-       <ns prefix='h' uri='http://www.w3.org/1999/xhtml'/>
-
-       <pattern name="required attributes">
-               <rule context='h:bdo'>
-                       <assert test='@dir'>
-                               A &#x201C;bdo&#x201D; element must have a
-                               &#x201C;dir&#x201D; attribute.
-                       </assert>
-               </rule>
-               <rule context='h:img[not(@alt)]'>
-                       <assert test='(@title and not(@title = ""))
-                       or //h:meta[(translate(@name,
-                               "GENERATOR", "generator") = "generator")]
-                       or (ancestor::h:figure
-                               and (ancestor::h:figure[1]/h:figcaption
-                                       and 
not(ancestor::h:figure[1]/h:figcaption = ""))
-                               and normalize-space(ancestor::h:figure[1])
-                                       = 
normalize-space(ancestor::h:figure[1]/h:figcaption)
-                               and not(ancestor::h:figure[1]//*[
-                                       local-name() = "audio"
-                                       or local-name() = "canvas"
-                                       or local-name() = "embed"
-                                       or local-name() = "iframe"
-                                       or local-name() = "math"
-                                       or local-name() = "object"
-                                       or local-name() = "svg"
-                                       or local-name() = "video"])
-                               and not(count(ancestor::h:figure[1]//h:img) > 
1))'>
-                               An &#x201C;img&#x201D; element must have an
-                               &#x201C;alt&#x201D; attribute, except under 
certain
-                               conditions. For details, consult guidance on
-                               providing text alternatives for images.
-                               
http://www.w3.org/wiki/HTML/Usage/TextAlternatives
-                       </assert>
-               </rule>
-       </pattern>
-
-       <pattern name='Triggered on mutually exclusive elements and 
prohibited-descendant cases'>
-
-       <!-- Exclusions and prohibited-descendant contraints  - - - - - - - - - 
- - -->
-
-       <rule context='h:form|h:dfn|h:noscript|h:address'>
-                       <report test='ancestor::*[name() = name(current())]'>
-                               The &#x201C;<name/>&#x201D; element must not 
contain any nested 
-                               &#x201C;<name/>&#x201D; elements.
-                       </report>
-               </rule>
-
-       <rule context='h:label'>
-                       <report test='ancestor::*[name() = name(current())]'>
-                               The &#x201C;<name/>&#x201D; element must not 
contain any nested 
-                               &#x201C;<name/>&#x201D; elements.
-                       </report>
-                       <report test='count(descendant::h:input
-                                          | descendant::h:button
-                                          | descendant::h:select
-                                          | descendant::h:keygen
-                                          | descendant::h:textarea) > 1'>
-                               The &#x201C;label&#x201D; element may contain 
at most one descendant
-                               &#x201C;input&#x201D; element,
-                               &#x201C;button&#x201D; element,
-                               &#x201C;select&#x201D; element,
-                               or &#x201C;textarea&#x201D; element.
-                       </report>
-                       <report test='@for and 
-                                     not(//h:input[not(translate(@type, 
"HIDEN", "hiden")="hidden")][@id = current()/@for] or 
-                                     //h:textarea[@id = current()/@for] or 
-                                     //h:select[@id = current()/@for] or 
-                                     //h:button[@id = current()/@for] or 
-                                     //h:keygen[@id = current()/@for] or 
-                                     //h:output[@id = current()/@for])'>
-                               The &#x201C;for&#x201D; attribute of the 
&#x201C;label&#x201D; 
-                               element must refer to a form control.
-                       </report>
-               </rule>
-
-               <rule context='h:section|h:nav|h:article|h:aside'>
-                       <report test='ancestor::h:address'>
-                               The sectioning element &#x201C;<name/>&#x201D; 
must not
-                               appear as a descendant of the 
&#x201C;address&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule context='h:footer'>
-                       <report test='ancestor::h:header'>
-                               The element &#x201C;footer&#x201D; must not
-                               appear as a descendant of the 
&#x201C;header&#x201D; element.
-                       </report>
-                       <report test='ancestor::h:footer'>
-                               The element &#x201C;footer&#x201D; must not
-                               appear as a descendant of the 
&#x201C;footer&#x201D; element.
-                       </report>
-                       <report test='ancestor::h:address'>
-                               The element &#x201C;footer&#x201D; must not
-                               appear as a descendant of the 
&#x201C;address&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule context='h:h1|h:h2|h:h3|h:h4|h:h5|h:h6'>
-                       <report test='ancestor::h:address'>
-                               The &#x201C;<name/>&#x201D; element must not 
appear as a 
-                               descendant of the &#x201C;address&#x201D; 
element.
-                       </report>
-               </rule>
-
-               <rule context='h:header'>
-                       <report test='ancestor::h:footer'>
-                               The &#x201C;<name/>&#x201D; element must not 
appear as a 
-                               descendant of the &#x201C;footer&#x201D; 
element.
-                       </report>
-                       <report test='ancestor::h:address'>
-                               The &#x201C;<name/>&#x201D; element must not 
appear as a 
-                               descendant of the &#x201C;address&#x201D; 
element.
-                       </report>
-                       <report test='ancestor::h:header'>
-                               The &#x201C;header&#x201D; element must not 
appear as a 
-                               descendant of the &#x201C;header&#x201D; 
element.
-                       </report>
-               </rule>
-
-               <rule context='h:table'>
-                       <report test='ancestor::h:caption'>
-                               The element &#x201C;table&#x201D; must not 
appear as a
-                               descendant of the &#x201C;caption&#x201D; 
element.
-                       </report>
-                       <report test='@summary' role='warning'>
-                               The &#x201C;summary&#x201D; attribute on the
-                               &#x201C;table&#x201D; element is obsolete.
-                               Consider describing the structure of the table
-                               in a &#x201C;caption&#x201D; element or
-                               in a &#x201C;figure&#x201D; element containing
-                               the &#x201C;table&#x201D; element; or, simplify
-                               the structue of the table so that no
-                               description is needed.
-                       </report>
-               </rule>
-       </pattern>
-
-       <!-- Interactive element exclusions -->
-       <pattern name='interactive element exclusions'>
-       
-               <!-- 
-                  - Interactive descendants:
-                  - a
-                  - video[controls]
-                  - audio[controls]
-                  - details
-                  - menu[type=toolbar]
-                  - button
-                  - input[type!=hidden]
-                  - textarea
-                  - select
-                  - img[usemap]
-                  - embed
-                  - iframe
-                  - keygen
-                  - label
-                  - object[usemap]
-               
-                  - Interactive ancestors
-                  - a
-                  - button
-                 -->
-
-               <rule context='h:a|h:details|h:embed|h:iframe|h:label'>
-                       <report test='ancestor::h:a'>
-                               The interactive element &#x201C;<name/>&#x201D; 
must not 
-                               appear as a descendant of the &#x201C;a&#x201D; 
element.
-                       </report>
-                       <report test='ancestor::h:button'>
-                               The interactive element &#x201C;<name/>&#x201D; 
must not 
-                               appear as a descendant of the 
&#x201C;button&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule 
context='h:button|h:textarea|h:select|h:keygen|h:input[not(translate(@type, 
"HIDEN", "hiden")="hidden")]'>
-                       <report test='ancestor::h:a'>
-                               The interactive element &#x201C;<name/>&#x201D; 
must not 
-                               appear as a descendant of the &#x201C;a&#x201D; 
element.
-                       </report>
-                       <report test='ancestor::h:button'>
-                               The interactive element &#x201C;<name/>&#x201D; 
must not 
-                               appear as a descendant of the 
&#x201C;button&#x201D; element.
-                       </report>
-                       <report test='ancestor::h:label[@for] and 
not(ancestor::h:label[@for = current()/@id])'>
-                               Any &#x201C;<name/>&#x201D; element descendant 
of a &#x201C;label&#x201D; element
-                               with a &#x201C;for&#x201D; attribute must have 
an
-                               ID value that matches that &#x201C;for&#x201D; 
attribute.
-                       </report>
-               </rule>
-
-               <rule context='h:video[@controls]|h:audio[@controls]'>
-                       <report test='ancestor::h:a'>
-                               The interactive element &#x201C;<name/>&#x201D;
-                               with the attribute &#x201C;controls&#x201D; 
must not
-                               appear as a descendant of the &#x201C;a&#x201D; 
element.
-                       </report>
-                       <report test='ancestor::h:button'>
-                               The interactive element &#x201C;<name/>&#x201D;
-                               with the attribute &#x201C;controls&#x201D; 
must not
-                               appear as a descendant of the 
&#x201C;button&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule context='h:menu[translate(@type, "TOLBAR", 
"tolbar")="toolbar"]'>
-                       <report test='ancestor::h:a'>
-                               The element &#x201C;menu&#x201D;
-                               with the attribute &#x201C;type&#x201D; whose 
value is &#x201C;toolbar&#x201D; must not
-                               appear as a descendant of the &#x201C;a&#x201D; 
element.
-                       </report>
-                       <report test='ancestor::h:button'>
-                               The element &#x201C;menu&#x201D;
-                               with the attribute &#x201C;type&#x201D; whose 
value is &#x201C;toolbar&#x201D; must not
-                               appear as a descendant of the 
&#x201C;button&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule context='h:img[@usemap]'>
-                       <report test='ancestor::h:a'>
-                               The element &#x201C;img&#x201D;
-                               with the attribute &#x201C;usemap&#x201D; must 
not
-                               appear as a descendant of the &#x201C;a&#x201D; 
element.
-                       </report>
-                       <report test='ancestor::h:button'>
-                               The element &#x201C;img&#x201D;
-                               with the attribute &#x201C;usemap&#x201D; must 
not
-                               appear as a descendant of the 
&#x201C;button&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule context='h:object[@usemap]'>
-                       <report test='ancestor::h:a'>
-                               The element &#x201C;object&#x201D;
-                               with the attribute &#x201C;usemap&#x201D; must 
not
-                               appear as a descendant of the &#x201C;a&#x201D; 
element.
-                       </report>
-                       <report test='ancestor::h:button'>
-                               The element &#x201C;object&#x201D;
-                               with the attribute &#x201C;usemap&#x201D; must 
not
-                               appear as a descendant of the 
&#x201C;button&#x201D; element.
-                       </report>
-               </rule>
-       </pattern>
-
-       <!-- REVISIT fieldset 
http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2006-April/006181.html -->
-
-       <!-- Misc requirements -->
-               
-       <pattern name="miscellaneous requirements">
-               <rule context='h:area'>
-                       <assert test='ancestor::h:map'>
-                               The &#x201C;area&#x201D; element must have an 
ancestor
-                               &#x201C;map&#x201D; element.
-                       </assert>
-               </rule>
-
-               <rule context='h:img[@ismap]'>
-                       <assert test='ancestor::h:a[@href]'>
-                               The &#x201C;img&#x201D; element with the 
-                               &#x201C;ismap&#x201D; attribute set must have 
an ancestor 
-                               &#x201C;a&#x201D; element with the 
&#x201C;href&#x201D; attribute.
-                       </assert>
-               </rule>
-
-               <rule context='h:input'>
-                       <report test='@list and not(//h:datalist[@id = 
current()/@list])'>
-                               The &#x201C;list&#x201D; attribute of the 
&#x201C;input&#x201D; 
-                               element must refer to a 
&#x201C;datalist&#x201D; element.
-                       </report>
-                       <report test='@type = "button" and (not(@value) or 
@value = "")'>
-                               Element &#x201C;input&#x201D; with attribute 
&#x201C;type&#x201D;
-                               whose value is &#x201C;button&#x201D; must have 
non-empty attribute
-                               &#x201C;value&#x201D;.
-                       </report>
-               </rule>
-
-               <rule context='h:track'>
-                       <report test='@label = ""'>
-                               Attribute &#x201C;label&#x201D; for element 
&#x201C;track&#x201D;
-                               must have non-empty value.
-                       </report>
-                       <report test='@default and 
preceding-sibling::h:track[@default]'>
-                               The &#x201C;default&#x201D; attribute must not 
occur on more than one
-                               &#x201C;track&#x201D; element within the same 
&#x201C;audio&#x201D;
-                               element or &#x201C;video&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule context='h:map[@id and @name]'>
-                       <assert test='@id = @name'>
-                               The &#x201C;id&#x201D; attribute on a 
&#x201C;map&#x201D; element must have
-                               the same value as the &#x201C;name&#x201D; 
attribute.
-                       </assert>
-               </rule>
-
-               <rule context='h:select'>
-                       <report test='not(@multiple) and 
count(descendant::h:option[@selected]) > 1'>
-                               The &#x201C;select&#x201D; element cannot have 
more than one 
-                               selected &#x201C;option&#x201D; element 
descendant unless the 
-                               &#x201C;multiple&#x201D; attribute is specified.
-                       </report>
-                       <report test='@required and not(@multiple)
-                               and (not(@size)
-                                       or (starts-with(normalize-space(@size), 
"+")
-                                       and substring-after(@size,"+") = 1)
-                                       or @size = 1)
-                               and not(h:option)'>
-                               A &#x201C;select&#x201D; element with
-                               a &#x201C;required&#x201D; attribute and without
-                               a &#x201C;multiple&#x201D; attribute, and whose
-                               size is &#x201C;1&#x201D;, must have a child
-                               &#x201C;option&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule context='h:select[@required and not(@multiple)
-                       and (not(@size)
-                               or (starts-with(normalize-space(@size), "+")
-                               and substring-after(@size,"+") = 1)
-                               or @size = 1)]/h:option[1]'>
-                       <assert test='(@value and @value = "")
-                               or ((not(@value) or @value = "") and . = "")'>
-                               The first child &#x201C;option&#x201D; element
-                               of a &#x201C;select&#x201D; element with
-                               a &#x201C;required&#x201D; attribute and without
-                               a &#x201C;multiple&#x201D; attribute, and whose
-                               size is &#x201C;1&#x201D;, must have either an
-                               empty &#x201C;value&#x201D; attribute, or must
-                               have no text content.
-                       </assert>
-               </rule>
-
-               <rule context='h:script'>
-                       <report test='@language and translate(@language, 
"JAVSCRIPT", "javscript")="javascript"
-                               and @type and not(translate(@type, 
"EXJAVSCRIPT", "exjavscript")="text/javascript")'>
-                               Element &#x201C;script&#x201D; with attribute
-                               &#x201C;language&#x201D; whose value is 
&#x201C;JavaScript&#x201D;
-                               must not have attribute &#x201C;type&#x201D; 
whose value is not
-                               &#x201C;text/javascript&#x201D;.
-                       </report>
-                       <report test='not(@src) and @charset'>
-                               Element &#x201C;script&#x201D; must not have 
attribute
-                               &#x201C;charset&#x201D; unless attribute 
&#x201C;src&#x201D; is
-                               also specified.
-                       </report>
-                       <report test='not(@src) and @defer'>
-                               Element &#x201C;script&#x201D; must not have 
attribute
-                               &#x201C;defer&#x201D; unless attribute 
&#x201C;src&#x201D; is
-                               also specified.
-                       </report>
-                       <report test='not(@src) and @async'>
-                               Element &#x201C;script&#x201D; must not have 
attribute
-                               &#x201C;async&#x201D; unless attribute 
&#x201C;src&#x201D; is
-                               also specified.
-                       </report>
-               </rule>
-
-               <rule context='h:time'>
-                       <report test='ancestor::h:time'>
-                               The element &#x201C;time&#x201D; must not
-                               appear as a descendant of the 
&#x201C;time&#x201D; element.
-                       </report>
-               </rule>
-
-               <rule context='h:progress'>
-                       <report test='ancestor::h:progress'>
-                               The element &#x201C;progress&#x201D; must not
-                               appear as a descendant of the 
&#x201C;progress&#x201D; element.
-                       </report>
-                       <assert test='@max and @value and number(@value) &lt;= 
number(@max)'>
-                               The value of the &#x201C;value&#x201D; 
attribute must be less than or equal to
-                               the value of the &#x201C;max&#x201D; attribute.
-                       </assert>
-                       <assert test='not(@max) and @value and number(@value) 
&lt;= 1'>
-                               The value of the  &#x201C;value&#x201D; 
attribute must be less than or equal to
-                               one when the &#x201C;max&#x201D; attribute is 
absent.
-                       </assert>
-               </rule>
-
-               <!-- 
-                       min <= value <= max
-               min <= low <= high <= max
-                       min <= optimum <= max 
-               -->
-
-               <rule context='h:meter'>
-                       <report test='ancestor::h:meter'>
-                               The element &#x201C;meter&#x201D; must not
-                               appear as a descendant of the 
&#x201C;meter&#x201D; element.
-                       </report>
-                       <report test='@min and @value and not(number(@min) 
&lt;= number(@value))'>
-                               The value of the  &#x201C;min&#x201D; attribute 
must be less than or equal to
-                               the value of the &#x201C;value&#x201D; 
attribute.
-                       </report>
-                       <report test='not(@min) and @value and not(0 &lt;= 
number(@value))'>
-                               The value of the &#x201C;value&#x201D; 
attribute must be greater than or equal to
-                               zero when the &#x201C;min&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@value and @max and not(number(@value) 
&lt;= number(@max))'>
-                               The value of the  &#x201C;value&#x201D; 
attribute must be less than or equal to
-                               the value of the &#x201C;max&#x201D; attribute.
-                       </report>
-                       <report test='@value and not(@max) and 
not(number(@value) &lt;= 1)'>
-                               The value of the  &#x201C;value&#x201D; 
attribute must be less than or equal to
-                               one when the &#x201C;max&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@min and @max and not(number(@min) &lt;= 
number(@max))'>
-                               The value of the  &#x201C;min&#x201D; attribute 
must be less than or equal to
-                               the value of the &#x201C;max&#x201D; attribute.
-                       </report>
-                       <report test='not(@min) and @max and not(0 &lt;= 
number(@max))'>
-                               The value of the &#x201C;max&#x201D; attribute 
must be greater than or equal to
-                               zero when the &#x201C;min&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@min and not(@max) and not(number(@min) 
&lt;= 1)'>
-                               The value of the  &#x201C;min&#x201D; attribute 
must be less than or equal to
-                               one when the &#x201C;max&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@min and @low and not(number(@min) &lt;= 
number(@low))'>
-                               The value of the  &#x201C;min&#x201D; attribute 
must be less than or equal to
-                               the value of the &#x201C;low&#x201D; attribute.
-                       </report>
-                       <report test='not(@min) and @low and not(0 &lt;= 
number(@low))'>
-                               The value of the &#x201C;low&#x201D; attribute 
must be greater than or equal to
-                               zero when the &#x201C;min&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@min and @high and not(number(@min) &lt;= 
number(@high))'>
-                               The value of the  &#x201C;min&#x201D; attribute 
must be less than or equal to
-                               the value of the &#x201C;high&#x201D; attribute.
-                       </report>
-                       <report test='not(@min) and @high and not(0 &lt;= 
number(@high))'>
-                               The value of the &#x201C;high&#x201D; attribute 
must be greater than or equal to
-                               zero when the &#x201C;min&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@low and @high and not(number(@low) &lt;= 
number(@high))'>
-                               The value of the  &#x201C;low&#x201D; attribute 
must be less than or equal to
-                               the value of the &#x201C;high&#x201D; attribute.
-                       </report>
-                       <report test='@high and @max and not(number(@high) 
&lt;= number(@max))'>
-                               The value of the  &#x201C;high&#x201D; 
attribute must be less than or equal to
-                               the value of the &#x201C;max&#x201D; attribute.
-                       </report>
-                       <report test='@high and not(@max) and not(number(@high) 
&lt;= 1)'>
-                               The value of the  &#x201C;high&#x201D; 
attribute must be less than or equal to
-                               one when the &#x201C;max&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@low and @max and not(number(@low) &lt;= 
number(@max))'>
-                               The value of the  &#x201C;low&#x201D; attribute 
must be less than or equal to
-                               the value of the &#x201C;max&#x201D; attribute.
-                       </report>
-                       <report test='@low and not(@max) and not(number(@low) 
&lt;= 1)'>
-                               The value of the  &#x201C;low&#x201D; attribute 
must be less than or equal to
-                               one when the &#x201C;max&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@min and @optimum and not(number(@min) 
&lt;= number(@optimum))'>
-                               The value of the  &#x201C;min&#x201D; attribute 
must be less than or equal to
-                               the value of the &#x201C;optimum&#x201D; 
attribute.
-                       </report>
-                       <report test='not(@min) and @optimum and not(0 &lt;= 
number(@optimum))'>
-                               The value of the &#x201C;optimum&#x201D; 
attribute must be greater than or equal to
-                               zero when the &#x201C;min&#x201D; attribute is 
absent.
-                       </report>
-                       <report test='@optimum and @max and 
not(number(@optimum) &lt;= number(@max))'>
-                               The value of the  &#x201C;optimum&#x201D; 
attribute must be less than or equal to
-                               the value of the &#x201C;max&#x201D; attribute.
-                       </report>
-                       <report test='@optimum and not(@max) and 
not(number(@optimum) &lt;= 1)'>
-                               The value of the  &#x201C;optimum&#x201D; 
attribute must be less than or equal to
-                               one when the &#x201C;max&#x201D; attribute is 
absent.
-                       </report>
-               </rule>
-       </pattern>
-
-       <!-- Obsolete Elements - - - - - - - - - - - - - - - - - - - - - - -->
-       <pattern name="obsolete elements">
-               <rule context='h:acronym'>
-                       <report test='true()'>
-                               The &#x201C;acronym&#x201D; element is 
obsolete. Use the &#x201C;abbr&#x201D; element instead.
-                       </report>
-               </rule>
-
-               <rule context='h:applet'>
-                       <report test='true()'>
-                               The &#x201C;applet&#x201D; element is obsolete. 
Use the &#x201C;object&#x201D; element instead.
-                       </report>
-               </rule>
-
-               <rule context='h:center|h:font|h:big|h:strike|h:tt|h:basefont'>
-                       <report test='true()'>
-                               The &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:dir'>
-                       <report test='true()'>
-                               The &#x201C;dir&#x201D; element is obsolete. 
Use the &#x201C;ul&#x201D; element instead.
-                       </report>
-               </rule>
-
-               <rule context='h:frameset|h:noframes'>
-                       <report test='true()'>
-                               The &#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;iframe&#x201D; element and CSS 
instead, or use server-side includes.
-                       </report>
-               </rule>
-       </pattern>
-
-       <!-- Obsolete Attributes- - - - - - - - - - - - - - - - - - - - - - -->
-
-       <pattern name="obsolete attributes">
-               <rule context='h:a'>
-                       <report test='@coords'>
-                               The &#x201C;coords&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               For image maps, use the &#x201C;area&#x201D; 
element instead of the &#x201C;a&#x201D; element.
-                       </report>
-                       <report test='@shape'>
-                               The &#x201C;shape&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               For image maps, use the &#x201C;area&#x201D; 
element instead of the &#x201C;a&#x201D; element.
-                       </report>
-                       <report test='@urn'>
-                               The &#x201C;urn&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Specify the preferred persistent identifier 
using the &#x201C;href&#x201D; attribute instead.
-                       </report>
-                       <report test='@charset'>
-                               The &#x201C;charset&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use an HTTP Content-Type header on the linked 
resource instead.
-                       </report>
-                       <report test='@methods'>
-                               The &#x201C;methods&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the HTTP OPTIONS feature instead.
-                       </report>
-                       <report test='@rev'>
-                               The &#x201C;rev&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;rel&#x201D; attribute instead, 
with a term having the opposite meaning.
-                       </report>
-               </rule>
-
-               <rule context='h:link'>
-                       <report test='@target'>
-                               The &#x201C;target&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               You can safely omit it.
-                       </report>
-                       <report test='@urn'>
-                               The &#x201C;urn&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Specify the preferred persistent identifier 
using the &#x201C;href&#x201D; attribute instead.
-                       </report>
-                       <report test='@charset'>
-                               The &#x201C;charset&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use an HTTP Content-Type header on the linked 
resource instead.
-                       </report>
-                       <report test='@methods'>
-                               The &#x201C;methods&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the HTTP OPTIONS feature instead.
-                       </report>
-                       <report test='@rev'>
-                               The &#x201C;rev&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;rel&#x201D; attribute instead, 
with a term having the opposite meaning.
-                       </report>
-               </rule>
-
-               <rule context="h:area">
-                       <report test='@nohref'>
-                               The &#x201C;nohref&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Omitting the &#x201C;href&#x201D; attribute is 
sufficient.
-                       </report>
-               </rule>
-
-               <rule context='h:embed'>
-                       <report test='@name'>
-                               The &#x201C;name&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;id&#x201D; attribute instead.
-                       </report>
-               </rule>
-
-               <rule context='h:head'>
-                       <report test='@profile'>
-                               The &#x201C;profile&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               To declare which &#x201C;meta&#x201D; element 
terms are used in the document, instead register the
-                               names as meta extensions. 
&lt;http://wiki.whatwg.org/wiki/MetaExtensions>
-                               To trigger specific UA behaviors, use a 
&#x201C;link&#x201D; element instead.
-                       </report>
-               </rule>
-
-               <rule context='h:html'>
-                       <report test='@version'>
-                               The &#x201C;version&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               You can safely omit it.
-                       </report>
-               </rule>
-
-               <rule context='h:iframe'>
-                       <report test='@longdesc'>
-                               The &#x201C;longdesc&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use a regular &#x201C;a&#x201D; element to link 
to the description.
-                       </report>
-               </rule>
-
-               <rule context='h:img'>
-                       <report test='@longdesc'>
-                               The &#x201C;longdesc&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use a regular &#x201C;a&#x201D; element to link 
to the description.
-                       </report>
-                       <report test='@name'>
-                               The &#x201C;name&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;id&#x201D; attribute instead.
-                       </report>
-               </rule>
-
-               <rule context='h:input'>
-                       <report test='@usemap'>
-                               The &#x201C;usemap&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;img&#x201D; element instead of 
the &#x201C;input&#x201D; element for image maps.
-                       </report>
-               </rule>
-
-               <rule context='h:li|h:ul'>
-                       <report test='@type'>
-                               The &#x201C;type&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:meta'>
-                       <report test='@scheme'>
-                               The &#x201C;scheme&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use only one scheme per field, or make the 
scheme declaration part of the value.
-                       </report>
-                       <report test='translate(@http-equiv,"CONTELAGUA", 
"contelagua")="content-language"' role='warning'>
-                               Using the &#x201C;meta&#x201D; element to 
specify the document-wide default language is obsolete.
-                               Consider specifying the language on the root 
element instead.
-                       </report>
-               </rule>
-
-               <rule context='h:object'>
-                       <report test='@archive'>
-                               The &#x201C;archive&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;data&#x201D; attribute and 
&#x201C;type&#x201D; attribute to invoke plugins.
-                               To set a parameter with the name 
&#x201C;archive&#x201D;, use the &#x201C;param&#x201D; element.
-                       </report>
-                       <report test='@classid'>
-                               The &#x201C;classid&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;data&#x201D; attribute and 
&#x201C;type&#x201D; attribute to invoke plugins.
-                               To set a parameter with the name 
&#x201C;classid&#x201D;, use the &#x201C;param&#x201D; element.
-                       </report>
-                       <report test='@code'>
-                               The &#x201C;code&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;data&#x201D; attribute and 
&#x201C;type&#x201D; attribute to invoke plugins.
-                               To set a parameter with the name 
&#x201C;code&#x201D;, use the &#x201C;param&#x201D; element.
-                       </report>
-                       <report test='@codebase'>
-                               The &#x201C;codebase&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;data&#x201D; attribute and 
&#x201C;type&#x201D; attribute to invoke plugins.
-                               To set a parameter with the name 
&#x201C;codebase&#x201D;, use the &#x201C;param&#x201D; element.
-                       </report>
-                       <report test='@codetype'>
-                               The &#x201C;codetype&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;data&#x201D; attribute and 
&#x201C;type&#x201D; attribute to invoke plugins.
-                               To set a parameter with the name 
&#x201C;codetype&#x201D;, use the &#x201C;param&#x201D; element.
-                       </report>
-                       <report test='@declare'>
-                               The &#x201C;declare&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Repeat the &#x201C;object&#x201D; element 
completely each time the resource is to be reused.
-                       </report>
-                       <report test='@standby'>
-                               The &#x201C;standby&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Optimize the linked resource so that it loads 
quickly or, at least, incrementally.
-                       </report>
-               </rule>
-
-               <rule context='h:option'>
-                       <report test='@name'>
-                               The &#x201C;name&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;id&#x201D; attribute instead.
-                       </report>
-               </rule>
-
-               <rule context='h:param'>
-                       <report test='@type'>
-                               The &#x201C;type&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;name&#x201D; attribute and 
&#x201C;value&#x201D; attribute without declaring value types.
-                       </report>
-                       <report test='@valuetype'>
-                               The &#x201C;valuetype&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;name&#x201D; attribute and 
&#x201C;value&#x201D; attribute without declaring value types.
-                       </report>
-               </rule>
-
-               <rule context='h:script[@language and not(translate(@language, 
"JAVSCRIPT", "javscript")="javascript")]'>
-                       <report test='true()'>
-                               The &#x201C;language&#x201D; attribute on the 
&#x201C;script&#x201D; element is obsolete.
-                               Use the &#x201C;type&#x201D; attribute instead.
-                       </report>
-               </rule>
-
-               <rule context='h:td|h:th'>
-                       <report test='@scope and self::h:td'>
-                               The &#x201C;scope&#x201D; attribute on the 
&#x201C;td&#x201D; element is obsolete.
-                               Use the &#x201C;scope&#x201D; attribute on a 
&#x201C;th&#x201D; element instead.
-                       </report>
-                       <report test='@abbr'>
-                               The &#x201C;abbr&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Consider instead beginning the cell contents 
with concise text, followed by further elaboration if needed.
-                       </report>
-                       <report test='@axis'>
-                               The &#x201C;axis&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use the &#x201C;scope&#x201D; attribute instead.
-                       </report>
-               </rule>
-       </pattern>
-
-       <pattern name="obsolete presentational align attribute">
-               <rule 
context='h:caption|h:iframe|h:img|h:input|h:object|h:embed|h:legend
-                       
|h:table|h:hr|h:div|h:h1|h:h2|h:h3|h:h4|h:h5|h:h6|h:p|h:col|h:colgroup
-                       |h:tbody|h:td|h:tfoot|h:th|h:thead|h:tr'>
-                       <report test='@align'>
-                               The &#x201C;align&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-       </pattern>
-
-       <pattern name="obsolete presentational width attribute">
-               <rule context='h:col|h:colgroup|h:hr|h:pre|h:table|h:td|h:th'>
-                       <report test='@width'>
-                               The &#x201C;width&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-       </pattern>
-
-       <pattern name="obsolete presentational table attributes">
-               <rule 
context='h:col|h:colgroup|h:tbody|h:td|h:tfoot|h:th|h:thead|h:tr'>
-                       <report test='@char'>
-                               The &#x201C;char&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@charoff'>
-                               The &#x201C;charoff&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@valign'>
-                               The &#x201C;valign&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-       </pattern>
-
-       <pattern name="obsolete presentational attributes">
-               <rule context='h:body'>
-                       <report test='@alink'>
-                               The &#x201C;alink&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@background'>
-                               The &#x201C;background&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@bgcolor'>
-                               The &#x201C;bgcolor&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@link'>
-                               The &#x201C;link&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@marginbottom'>
-                               The &#x201C;marginbottom&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@marginheight'>
-                               The &#x201C;marginheight&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@marginleft'>
-                               The &#x201C;marginleft&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@marginright'>
-                               The &#x201C;marginright&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@margintop'>
-                               The &#x201C;margintop&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@marginwidth'>
-                               The &#x201C;marginwidth&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@text'>
-                               The &#x201C;text&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@vlink'>
-                               The &#x201C;vlink&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:br'>
-                       <report test='@clear'>
-                               The &#x201C;clear&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:embed'>
-                       <report test='@hspace'>
-                               The &#x201C;hspace&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@vspace'>
-                               The &#x201C;vspace&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:hr'>
-                       <report test='@noshade'>
-                               The &#x201C;noshade&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@size'>
-                               The &#x201C;size&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@color'>
-                               The &#x201C;color&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:dl|h:menu|h:ol|h:ul'>
-                       <report test='@compact'>
-                               The &#x201C;compact&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:iframe'>
-                       <report test='@allowtransparency'>
-                               The &#x201C;allowtransparency&#x201D; attribute 
on the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@frameborder'>
-                               The &#x201C;frameborder&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@marginheight'>
-                               The &#x201C;marginheight&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@marginwidth'>
-                               The &#x201C;marginwidth&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@scrolling'>
-                               The &#x201C;scrolling&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:img|h:object'>
-                       <report test='@hspace'>
-                               The &#x201C;hspace&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@vspace'>
-                               The &#x201C;vspace&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@border and self::h:object'>
-                               The &#x201C;border&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:table'>
-                       <report test='@bgcolor'>
-                               The &#x201C;bgcolor&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@border and not(@border = "" or @border = 
"1")'>
-                               The value of the &#x201C;border&#x201D; 
attribute on the &#x201C;<name/>&#x201D; element
-                               must be either &#x201C;1&#x201D; or the empty 
string. To regulate the thickness of table borders, 
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@cellpadding'>
-                               The &#x201C;cellpadding&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@cellspacing'>
-                               The &#x201C;cellspacing&#x201D; attribute on 
the &#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@frame'>
-                               The &#x201C;frame&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@rules'>
-                               The &#x201C;rules&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:td|h:th'>
-                       <report test='@bgcolor'>
-                               The &#x201C;bgcolor&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@height'>
-                               The &#x201C;height&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-                       <report test='@nowrap'>
-                               The &#x201C;nowrap&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-
-               <rule context='h:tr'>
-                       <report test='@bgcolor'>
-                               The &#x201C;bgcolor&#x201D; attribute on the 
&#x201C;<name/>&#x201D; element is obsolete.
-                               Use CSS instead. 
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
-                       </report>
-               </rule>
-       </pattern>
-
-<!-- lang and xml:lang in XHTML  - - - - - - - - - - - - - - - - - -->
-
-       <pattern name='lang and xml:lang in XHTML'>
-               <rule context='h:*[@lang and @xml:lang]'>
-                       <assert test='translate(@lang, 
"ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz") = 
translate(@xml:lang, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 
"abcdefghijklmnopqrstuvwxyz")'>
-                               When the attribute &#x201C;lang&#x201D; in no 
namespace and the attribute &#x201C;lang&#x201D;
-                               in the XML namespace are both present, they 
must have the same value.
-                       </assert>
-               </rule>
-       </pattern>
-
-<!-- IDREFs  - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-
-       <!-- Assuming that ID uniqueness is already enforced. -->
-
-       <pattern name='contextmenu must refer to a menu'>
-               <rule context='h:*[@contextmenu]'>
-                 <assert test='//h:menu[@id = current()/@contextmenu]'>
-                               The &#x201C;contextmenu&#x201D; attribute must 
refer to a 
-                               &#x201C;menu&#x201D; element.
-                       </assert>
-               </rule>
-       </pattern>
-
-       <!-- FIXME form attribute -->
-       
-       <!-- FIXME output for -->
-       
-<!-- Unique Definitions  - - - - - - - - - - - - - - - - - - - - - -->
-       
-       <!-- Only one definition per term per document' -->
-
-<!-- ARIA containment    - - - - - - - - - - - - - - - - - - - - - -->
-
-       <pattern name='Mutually Exclusive Role triggers'>
-
-    <!-- XXX columnheader and rowheader require row parent -->
-
-               <rule context='*[@role="option"]'>
-                       <assert test='../@role="listbox"'>
-                               An element with &#x201C;role=option&#x201D; 
requires 
-                               &#x201C;role=listbox&#x201D; on the parent.
-                       </assert>
-               </rule>
-
-               <rule context='*[@role="menuitem"]'>
-                       <assert test='../@role="menu"'>
-                               An element with &#x201C;role=menuitem&#x201D; 
requires 
-                               &#x201C;role=menu&#x201D; on the parent.
-                       </assert>
-               </rule>
-
-               <rule context='*[@role="menuitemcheckbox"]'>
-                       <assert test='../@role="menu"'>
-                               An element with 
&#x201C;role=menuitemcheckbox&#x201D; requires 
-                               &#x201C;role=menu&#x201D; on the parent.
-                       </assert>
-               </rule>
-
-               <rule context='*[@role="menuitemradio"]'>
-                       <assert test='../@role="menu"'>
-                               An element with 
&#x201C;role=menuitemradio&#x201D; requires 
-                               &#x201C;role=menu&#x201D; on the parent.
-                       </assert>
-               </rule>
-
-               <rule context='*[@role="tab"]'>
-                       <assert test='../@role="tablist"'>
-                               An element with &#x201C;role=tab&#x201D; 
requires 
-                               &#x201C;role=tablist&#x201D; on the parent.
-                       </assert>
-               </rule>
-
-               <rule context='*[@role="treeitem"]'>
-                       <assert test='../@role="tree"'>
-                               An element with &#x201C;role=treeitem&#x201D; 
requires 
-                               &#x201C;role=tree&#x201D; on the parent.
-                       </assert>
-               </rule>
-
-               <rule context='*[@role="listitem"]'>
-                       <assert test='../@role="list"'>
-                               An element with &#x201C;role=listitem&#x201D; 
requires 
-                               &#x201C;role=list&#x201D; on the parent.
-                       </assert>
-               </rule>
-
-               <rule context='*[@role="row"]'>
-                       <assert test='../@role="grid" or 
-                                     ../../@role="grid" or
-                                                 ../@role="treegrid" or 
-                                     ../../@role="treegrid"'>
-                               An element with &#x201C;role=row&#x201D; 
requires 
-                               &#x201C;role=treegrid&#x201D; or 
&#x201C;role=grid&#x201D; on the parent or grandparent.
-                       </assert>
-               </rule> 
-               <!-- XXX hoping for a spec change so not bothering with the 
reciprocal case -->
-
-               <rule context='*[@role="gridcell"]'>
-                       <assert test='../@role="row"'>
-                               An element with &#x201C;role=gridcell&#x201D; 
requires 
-                               &#x201C;role=row&#x201D; on the parent.
-                       </assert>
-               </rule>
-               <!-- XXX hoping for a spec change so not bothering with the 
reciprocal case -->
-
-       </pattern>
-       
-       <pattern name='Not Option'>
-               <rule context='*[not(@role="option")]'>
-                       <report test='../@role="listbox"'>
-                               An element must not be a child of
-                               &#x201C;role=listbox&#x201D; unless it has 
&#x201C;role=option&#x201D;.
-                       </report>
-               </rule>
-       </pattern>
-       
-       <pattern name='Not menuitem*'>
-               <rule context='*[not(@role="menuitem" or 
-                                    @role="menuitemcheckbox" or 
-                                    @role="menuitemradio")]'>
-                       <report test='../@role="menu"'>
-                               An element must not be a child of
-                               &#x201C;role=menu&#x201D; unless it has 
-                               &#x201C;role=menuitem&#x201D;, 
-                               &#x201C;role=menuitemcheckbox&#x201D; or 
-                               &#x201C;role=menuitemradio&#x201D;.
-                       </report>
-               </rule>
-       </pattern>
-       
-       <pattern name='Not treeitem'>
-               <rule context='*[not(@role="treeitem")]'>
-                       <report test='../@role="tree"'>
-                               An element must not be a child of
-                               &#x201C;role=tree&#x201D; unless it has 
-                               &#x201C;role=treeitem&#x201D;.
-                       </report>
-               </rule>
-       </pattern>
-       
-       <pattern name='Not listitem'>
-               <rule context='*[not(@role="listitem")]'>
-                       <report test='../@role="list"'>
-                               An element must not be a child of
-                               &#x201C;role=list&#x201D; unless it has 
-                               &#x201C;role=listitem&#x201D;.
-                       </report>
-               </rule>
-               <!-- XXX role=group omitted due to lack of detail in spec -->
-       </pattern>
-       
-       <pattern name='Not radio'>
-               <rule context='*[not(@role="radio")]'>
-                       <report test='../@role="radiogroup"'>
-                               An element must not be a child of
-                               &#x201C;role=radiogroup&#x201D; unless it has 
-                               &#x201C;role=radio&#x201D;.
-                       </report>
-               </rule>
-       </pattern>
-       
-       <pattern name='Not gridcell'>
-               <rule context='*[not(@role="gridcell")]'>
-                       <report test='../@role="row"'>
-                               An element must not be a child of
-                               &#x201C;role=row&#x201D; unless it has 
-                               &#x201C;role=gridcell&#x201D;.
-                       </report>
-               </rule>
-       </pattern>
-       
-       <pattern name='Not tab'>
-               <rule context='*[not(@role="tab")]'>
-                       <report test='../@role="tablist"'>
-                               An element must not be a child of
-                               &#x201C;role=tablist&#x201D; unless it has 
-                               &#x201C;role=role&#x201D;.
-                       </report>
-               </rule>
-       </pattern>
-
-  <!-- XXX combobox requires a listbox child -->
-       
-       <pattern name='aria-activedescendant must refer to a descendant'>
-               <rule context='*[@aria-activedescendant]'>
-                       <assert test='descendant::*[@id = 
current()/@aria-activedescendant]'>
-                               The &#x201C;aria-activedescendant&#x201D; 
attribute must refer to a 
-                               descendant element.
-                       </assert>
-               </rule>
-       </pattern>
-
-       <pattern name='controls must not dangle'>
-               <rule context='*[@aria-controls]'>
-                 <assert test='//*[@id = current()/@aria-controls]'>
-                               The &#x201C;aria-controls&#x201D; attribute 
must point to an element in the 
-                               same document.
-                       </assert>
-               </rule>
-       </pattern>
-
-       <pattern name='describedby must not dangle'>
-               <rule context='*[@aria-describedby]'>
-                 <assert test='//*[@id = current()/@aria-describedby]'>
-                               The &#x201C;aria-describedby&#x201D; attribute 
must point to an element in the 
-                               same document.
-                       </assert>
-               </rule>
-       </pattern>
-
-       <pattern name='flowto must not dangle'>
-               <rule context='*[@aria-flowto]'>
-                 <assert test='//*[@id = current()/@aria-flowto]'>
-                               The &#x201C;aria-flowto&#x201D; attribute must 
point to an element in the 
-                               same document.
-                       </assert>
-               </rule>
-       </pattern>
-
-       <pattern name='labelledby must not dangle'>
-               <rule context='*[@aria-labelledby]'>
-                 <assert test='//*[@id = current()/@aria-labelledby]'>
-                               The &#x201C;aria-labelledby&#x201D; attribute 
must point to an element in the 
-                               same document.
-                       </assert>
-               </rule>
-       </pattern>
-
-       <pattern name='owns must not dangle'>
-               <rule context='*[@aria-owns]'>
-                 <assert test='//*[@id = current()/@aria-owns]'>
-                               The &#x201C;aria-owns&#x201D; attribute must 
point to an element in the 
-                               same document.
-                       </assert>
-               </rule>
-       </pattern>
-
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-->
-<!--                               Warnings                                  
-->
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-->
-       <pattern name="Warnings for HTML5 attributes that are obsolete but 
conforming">
-               <rule context='h:img'>
-                       <report test='@border' role='warning'>
-                               The &#x201C;border&#x201D; attribute on the 
&#x201C;img&#x201D; element is obsolete.
-                               Consider specifying &#x201C;img { border: 0; 
}&#x201C; in CSS instead.
-                       </report>
-               </rule>
-               <rule context='h:script[translate(@language, "JAVSCRIPT", 
"javscript")="javascript"]'>
-                       <report test='not(@type) or translate(@type, 
"EXJAVSCRIPT", "exjavscript")="text/javascript"' role='warning'>
-                               The &#x201C;language&#x201D; attribute on the 
&#x201C;script&#x201D; element is obsolete. You can safely omit it.
-                       </report>
-               </rule>
-               <rule context='h:a'>
-                       <report test='@name' role='warning'>
-                               The &#x201C;name&#x201D; attribute on the 
&#x201C;a&#x201D; element is obsolete. Consider putting an
-                               &#x201C;id&#x201D; attribute on the nearest 
container instead.
-                       </report>
-               </rule>
-       </pattern>
-
-       <pattern name="Other warnings">
-               <rule context='h:video|h:audio'>
-                       <report test='count(h:track[@default]) > 1' 
role='warning'>
-                               &#x201C;<name/>&#x201D; element has more than 
one &#x201C;track&#x201D;
-                               child element with a &#x201C;default&#x201D; 
attribute.
-                       </report>
-               </rule>
-       </pattern>
-
-</schema>
diff --git a/packages/html5-schema/block.rnc b/packages/html5-schema/block.rnc
deleted file mode 100644
index 6d0eb0d..0000000
--- a/packages/html5-schema/block.rnc
+++ /dev/null
@@ -1,250 +0,0 @@
-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 )
diff --git a/packages/html5-schema/common.rnc b/packages/html5-schema/common.rnc
deleted file mode 100644
index 68d9acc..0000000
--- a/packages/html5-schema/common.rnc
+++ /dev/null
@@ -1,526 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Common Definitions                    #
-# #####################################################################
-
-
-# #####################################################################
-##  Language Parameters - redefine in inclusion block as necessary    #
-# #####################################################################
-
-## HTML vs. XHTML restrictions
-
-       XMLonly = empty
-       HTMLonly = notAllowed
-
-## HTML 4 Compatibility - set to notAllowed to disallow markup introduced in 
HTML 5
-#                         (This only affects mixed-version modules; wholly 
HTML5
-#                          modules should simply be left out of the inclusion 
list.)
-
-       v5only = empty
-
-## HTML Compatibility Switches - set to notAllowed to disallow
-
-       ## XML features that can't be roundtripped HTML <-> XHTML
-       #  (xml:base on elements other than <html>)
-       nonRoundtrippable = empty
-
-       ## XML features that can't be serialized as HTML
-       nonHTMLizable = empty
-
-## features that are not part of the W3C HTML spec
-       nonW3C = empty
-
-# #####################################################################
-##  Wildcards                                                         #
-# #####################################################################
-
-## Any attribute from any namespace
-
-       common.attr.anything =
-               attribute * { text }*
-
-## Any element from any namespace
-
-       common.elem.anything =
-               element * { common.inner.anything & common.attr.anything }
-
-## Any content from any namespace
-
-       common.inner.anything =
-               (       text
-               &       common.elem.anything*
-               )
-
-# #####################################################################
-##  Common Element Classes                                            #
-# #####################################################################
-
-## Metadata Elements
-
-       common.elem.metadata =
-               ( notAllowed )
-
-## Phrase Elements
-
-       common.elem.phrasing =
-               ( notAllowed )
-
-## Prose Elements
-
-       common.elem.flow =
-               ( common.elem.phrasing )
-
-
-# #####################################################################
-##  Common Content Models                                             #
-# #####################################################################
-
-## Metadata Content
-
-       common.inner.metadata =
-               ( common.elem.metadata* )
-
-## Phrase Content
-
-       common.inner.phrasing =
-               ( text & common.elem.phrasing* )
-
-## Prose Content
-
-       common.inner.transparent.flow =
-               ( text & common.elem.flow* )
-
-       common.inner.flow =
-               (       style.elem.scoped*,
-                       (       text
-                       &       common.elem.flow*
-                       )
-               )
-
-# #####################################################################
-##  Common Attributes                                                 #
-# #####################################################################
-
-# When updating, check <bdo> definition too
-
-common.attrs =
-       (       common.attrs.basic
-       &       common.attrs.i18n
-       &       common.attrs.present
-       &       common.attrs.other
-       )
-
-common.attrs.basic =
-       (       common.attrs.id?
-       &       common.attrs.class?
-       &       common.attrs.title?
-       &       common.attrs.base?
-       &       common.attrs.space?
-       )
-       common.attrs.id =
-               attribute id {
-                       common.data.id
-               }
-       common.attrs.class =
-               attribute class {
-                       common.data.tokens
-               }
-       common.attrs.title =
-               attribute title {
-                       text
-               }
-       common.attrs.base =
-               common.attrs.xmlbase
-               & nonRoundtrippable
-       common.attrs.xmlbase =
-               attribute xml:base {
-                       common.data.uri
-               } & XMLonly
-       common.attrs.space =
-               common.attrs.xmlspace
-       common.attrs.xmlspace =
-               attribute xml:space {
-                       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 "auto"
-               }
-       # This lang definition is a hack for enviroments where
-       # the HTML5 parser maps lang to xml:lang.
-       # Sameness check left to Schematron
-       common.attrs.language =
-               (       common.attrs.xmllang?
-               &       common.attrs.lang?
-               )
-       common.attrs.lang =
-               attribute lang {
-                       common.data.langcode
-               } & XMLonly
-       common.attrs.xmllang =
-               attribute xml:lang {
-                       common.data.langcode
-               }
-#      common.attrs.language =
-#              (       common.attrs.lang
-#              |       common.attrs.xmllang
-#              )
-#      common.attrs.lang =
-#              attribute lang {
-#                      common.data.langcode
-#              } & HTMLonly
-#      common.attrs.xmllang =
-#              attribute xml:lang {
-#                      common.data.langcode
-#              } & XMLonly
-       common.attrs.translate =
-               attribute translate {
-                       w:string "" | w:string "yes" | w:string "no"
-               }
-
-common.attrs.present =
-       (       common.attrs.style?
-       &       common.attrs.tabindex?
-       &       common.attrs.accesskey?
-       )
-       common.attrs.style =
-               attribute style {
-                       string
-               }
-       common.attrs.tabindex =
-               attribute tabindex {
-                       common.data.integer
-               }
-               # REVISIT move style to a module and bundle tabindex with ARIA
-       common.attrs.accesskey =
-               attribute accesskey {
-                       common.data.keylabellist
-               }
-
-common.attrs.other =
-       empty
-
-# #####################################################################
-##  Common Datatypes                                                  #
-# #####################################################################
-
-## Names and Tokens
-
-       common.data.tokens =
-               list { token* }
-
-       common.data.browsing-context =
-               w:browsing-context
-
-       common.data.browsing-context-or-keyword =
-               w:browsing-context-or-keyword
-#              xsd:string {
-#                      pattern = 
"()|([^_].*)|(_[bB][lL][aA][nN][kK])|(_[sS][eE][lL][fF])|(_[pP][aA][rR][eE][nN][tT])|(_[tT][oO][pP])"
-#              }
-
-
-## IDs and IDREFs
-
-       common.data.id =
-               w:ID
-#              xsd:string {
-#                      pattern = "\S+"
-#              }
-
-       common.data.idref =
-               w:IDREF
-               
-       common.data.idrefs =
-               w:IDREFS
-
-       common.data.name =
-               w:ID #FIXME
-
-       common.data.hash-name =
-               w:hash-name     
-#              xsd:string {
-#                      pattern = "#.+"
-#              }
-
-## Numerical
-
-       common.data.integer =
-               w:integer
-#              xsd:string {
-#                      pattern = "-?[0-9]+"
-#              }
-
-       common.data.integer.positive =
-               w:integer-positive
-#              xsd:string {
-#                      pattern = "0*[1-9][0-9]*"
-#              }
-
-       common.data.integer.non-negative =
-               w:integer-non-negative
-#              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 {
-#                      pattern = "-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?"
-#              }
-
-       common.data.float.positive =
-               w:float-positive
-#              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 =
-               w:datetime-tz
-
-       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 =
-               # 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* }
-
-       common.data.uri.absolute =
-               w:iri
-
-## <link type='icon'> sizes
-
-       common.data.sizes =
-#              list { w:sizes }
-               list {
-                       xsd:string {
-                               pattern = "[1-9][0-9]*x[1-9][0-9]*"
-                       }+
-               }
-
-## MIME types
-
-       common.data.mimetype =
-               w:mime-type
-
-## Encodings
-
-       common.data.charset =
-               w:charset
-
-       common.data.meta-charset =
-               w:meta-charset
-
-## Refresh
-
-       common.data.refresh =
-               w:refresh
-
-## Default style
-
-       common.data.default-style =
-        string
-#              w:default-style
-
-## X-UA-Compatible
-
-       common.data.x-ua-compatible =
-               string
-
-## Media Queries
-
-       common.data.mediaquery =
-               w:media-query
-
-## Language Codes
-
-       common.data.langcode =
-               w:string "" | w:language
-
-## List of Key Labels
-       common.data.keylabellist =
-               w:keylabellist
-
-## List of Source Sizes
-       common.data.source.size.list =
-               w:source-size-list
-
-## Subresource Integrity
-       common.data.integrity =
-               w:integrity-metadata
-
-## Content Security Policy
-       common.data.content-security-policy =
-               w:content-security-policy
-
-## List of sandbox keywords
-       common.data.sandbox-allow-list =
-               w:string "" | w:sandbox-allow-list
-
-## 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                                                   #
-# #####################################################################
-               
-common-form.attrs.form = ( notAllowed )
-
-# #####################################################################
-##  Script-supporting elements
-# #####################################################################
-
-common.elem.script-supporting = ( notAllowed )
-
-# #####################################################################
-##  ARIA Module Hooks                                                 #
-# #####################################################################
-
-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.group = ( 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.switch = ( notAllowed )
-common.attrs.aria.role.tab = ( notAllowed )
-common.attrs.aria.role.tablist = ( notAllowed )
-common.attrs.aria.role.tabpanel = ( 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.article = ( notAllowed )
-common.attrs.aria.implicit.banner = ( notAllowed )
-common.attrs.aria.implicit.button = ( notAllowed )
-common.attrs.aria.implicit.checkbox = ( notAllowed )
-common.attrs.aria.implicit.column-or-row-header = ( notAllowed )
-common.attrs.aria.implicit.combobox = ( notAllowed )
-common.attrs.aria.implicit.complementary = ( notAllowed )
-common.attrs.aria.implicit.contentinfo = ( notAllowed )
-common.attrs.aria.implicit.dialog = ( notAllowed )
-common.attrs.aria.implicit.document = ( notAllowed )
-common.attrs.aria.implicit.form = ( notAllowed )
-common.attrs.aria.implicit.group = ( notAllowed )
-common.attrs.aria.implicit.heading = ( notAllowed )
-common.attrs.aria.implicit.img = ( notAllowed )
-common.attrs.aria.implicit.landmark = ( notAllowed )
-common.attrs.aria.implicit.link = ( notAllowed )
-common.attrs.aria.implicit.list = ( notAllowed )
-common.attrs.aria.implicit.listbox = ( notAllowed )
-common.attrs.aria.implicit.listitem = ( notAllowed )
-common.attrs.aria.implicit.main = ( notAllowed )
-common.attrs.aria.implicit.navigation = ( notAllowed )
-common.attrs.aria.implicit.option = ( notAllowed )
-common.attrs.aria.implicit.progressbar = ( notAllowed )
-common.attrs.aria.implicit.radio = ( notAllowed )
-common.attrs.aria.implicit.region = ( notAllowed )
-common.attrs.aria.implicit.section = ( notAllowed )
-common.attrs.aria.implicit.select = ( notAllowed )
-common.attrs.aria.implicit.slider = ( notAllowed )
-common.attrs.aria.implicit.spinbutton = ( notAllowed )
-common.attrs.aria.implicit.status = ( notAllowed )
-common.attrs.aria.implicit.structure = ( notAllowed )
-common.attrs.aria.implicit.textbox = ( notAllowed )
-common.attrs.aria.implicit.toolbar = ( 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 )
-common.attrs.aria.landmark.contentinfo = ( notAllowed )
-common.attrs.aria.landmark.form = ( notAllowed )
-common.attrs.aria.landmark.main = ( notAllowed )
-common.attrs.aria.landmark.navigation = ( notAllowed )
-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 )
diff --git a/packages/html5-schema/core-scripting.rnc 
b/packages/html5-schema/core-scripting.rnc
deleted file mode 100644
index 33e8ff7..0000000
--- a/packages/html5-schema/core-scripting.rnc
+++ /dev/null
@@ -1,386 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Core Scripting                        #
-# #####################################################################
-
-# #####################################################################
-## Scripting Elements
-
-## Inline Scripts: <script>
-
-       script.elem.embedded =
-               element script { script.inner.embedded & script.attrs.embedded }
-       script.attrs.embedded =
-               (       common.attrs
-               &       script.attrs.type?
-               &       script.attrs.language? # restricted in Schematron
-               &       script.attrs.integrity?
-               &       script.attrs.nonce?
-               &       embedded.content.attrs.crossorigin?
-               &       (       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.defer?
-               &       script.attrs.async?
-               &       script.attrs.type?
-               &       script.attrs.charset?
-               &       script.attrs.language? # restricted in Schematron
-               &       script.attrs.integrity?
-               &       script.attrs.nonce?
-               &       embedded.content.attrs.crossorigin?
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               script.attrs.src =
-                       attribute src {
-                               common.data.uri.non-empty
-                       }
-               script.attrs.defer =
-                       attribute defer {
-                               w:string "defer" | w:string ""
-                       }
-               script.attrs.async =
-                       attribute async {
-                               w:string "async" | w:string ""
-                       } & v5only
-               script.attrs.type =
-                       attribute type {
-                               common.data.mimetype # XXX without charset 
parameter!
-                       }
-               script.attrs.charset =
-                       attribute charset {
-                               common.data.charset
-                       }
-               script.attrs.language =
-                       attribute language {
-                               string
-                       }
-               script.attrs.integrity =
-                       attribute integrity {
-                               common.data.integrity
-                       }
-               script.attrs.nonce =
-                       attribute nonce{
-                               string
-                       }
-       script.inner.embedded =
-               ( common.inner.anything )
-       script.inner.imported =
-               ( common.inner.anything )
-               
-       script.elem = 
-               (       script.elem.embedded
-               |       script.elem.imported
-               )
-               
-       common.elem.metadata |= script.elem
-       common.elem.phrasing |= script.elem
-
-## Fallback Unscripted Content: <noscript>
-
-       noscript.elem.head =
-               element noscript { noscript.inner.head & noscript.attrs }
-               & HTMLonly
-               noscript.inner.head = 
-                       (       link.elem
-                       |       meta.http-equiv.default-style.elem
-                       |       meta.http-equiv.refresh.elem
-                       |       style.elem
-                       )*
-       noscript.elem.phrasing =
-               element noscript { noscript.inner.phrasing & noscript.attrs }
-               & HTMLonly
-       noscript.inner.phrasing =
-               ( common.inner.phrasing )
-       noscript.elem.flow =
-               element noscript { noscript.inner.flow & noscript.attrs }
-               & HTMLonly
-       noscript.inner.flow =
-               ( common.inner.flow )
-       noscript.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
-       common.elem.flow |= noscript.elem.flow
-
-# #####################################################################
-## Event Handler Attribute Definitions
-
-       common.attrs.scripting &=
-               (       scripting.attr.onabort?
-               &       scripting.attr.onautocomplete?
-               &       scripting.attr.onautocompleteerror?
-               &       scripting.attr.onblur?
-               &       scripting.attr.oncancel?
-               &       scripting.attr.oncanplay?
-               &       scripting.attr.oncanplaythrough?
-               &       scripting.attr.onchange?
-               &       scripting.attr.onclick?
-               &       scripting.attr.onclose?
-               &       scripting.attr.oncuechange?
-               &       scripting.attr.oncontextmenu?
-               &       scripting.attr.ondblclick?
-               &       scripting.attr.ondrag?
-               &       scripting.attr.ondragend?
-               &       scripting.attr.ondragenter?
-               &       scripting.attr.ondragexit?
-               &       scripting.attr.ondragleave?
-               &       scripting.attr.ondragover?
-               &       scripting.attr.ondragstart?
-               &       scripting.attr.ondrop?
-               &       scripting.attr.ondurationchange?
-               &       scripting.attr.onemptied?
-               &       scripting.attr.onended?
-               &       scripting.attr.onerror?
-               &       scripting.attr.onfocus?
-               &       scripting.attr.oninput?
-               &       scripting.attr.oninvalid?
-               &       scripting.attr.onkeydown?
-               &       scripting.attr.onkeypress?
-               &       scripting.attr.onkeyup?
-               &       scripting.attr.onload?
-               &       scripting.attr.onloadeddata?
-               &       scripting.attr.onloadedmetadata?
-               &       scripting.attr.onloadstart?
-               &       scripting.attr.onmousedown?
-               &       scripting.attr.onmouseenter?
-               &       scripting.attr.onmouseleave?
-               &       scripting.attr.onmousemove?
-               &       scripting.attr.onmouseout?
-               &       scripting.attr.onmouseover?
-               &       scripting.attr.onmouseup?
-               &       scripting.attr.onwheel?
-               &       scripting.attr.onpause?
-               &       scripting.attr.onplay?
-               &       scripting.attr.onplaying?
-               &       scripting.attr.onprogress?
-               &       scripting.attr.onratechange?
-               &       scripting.attr.onreset?
-               &       scripting.attr.onresize?
-               &       scripting.attr.onscroll?
-               &       scripting.attr.onseeked?
-               &       scripting.attr.onseeking?
-               &       scripting.attr.onselect?
-               &       scripting.attr.onshow?
-               &       scripting.attr.onsort?
-               &       scripting.attr.onstalled?
-               &       scripting.attr.onsubmit?
-               &       scripting.attr.onsuspend?
-               &       scripting.attr.ontimeupdate?
-               &       scripting.attr.ontoggle?
-               &       scripting.attr.onvolumechange?
-               &       scripting.attr.onwaiting?
-               )
-               
-       common.attrs.other &= common.attrs.scripting
-
-       scripting.attr.onabort =
-               attribute onabort { common.data.functionbody }
-       scripting.attr.onautocomplete =
-               attribute onautocomplete { common.data.functionbody }
-       scripting.attr.onautocompleteerror =
-               attribute onautocompleteerror { common.data.functionbody }
-       scripting.attr.onblur =
-               attribute onblur { common.data.functionbody }
-       scripting.attr.oncanplay =
-               attribute oncanplay { common.data.functionbody }
-       scripting.attr.oncancel =
-               attribute oncancel { common.data.functionbody }
-       scripting.attr.oncanplaythrough =
-               attribute oncanplaythrough { common.data.functionbody }
-       scripting.attr.onchange =
-               attribute onchange { common.data.functionbody }
-       scripting.attr.onclick =
-               attribute onclick { common.data.functionbody }
-       scripting.attr.onclose =
-               attribute onclose { common.data.functionbody }
-       scripting.attr.oncontextmenu =
-               attribute oncontextmenu { common.data.functionbody }
-       scripting.attr.oncuechange =
-               attribute oncuechange { common.data.functionbody }
-       scripting.attr.ondblclick =
-               attribute ondblclick { common.data.functionbody }
-       scripting.attr.ondrag =
-               attribute ondrag { common.data.functionbody }
-       scripting.attr.ondragend =
-               attribute ondragend { common.data.functionbody }
-       scripting.attr.ondragenter =
-               attribute ondragenter { common.data.functionbody }
-       scripting.attr.ondragexit =
-               attribute ondragexit { common.data.functionbody }
-       scripting.attr.ondragleave =
-               attribute ondragleave { common.data.functionbody }
-       scripting.attr.ondragover =
-               attribute ondragover { common.data.functionbody }
-       scripting.attr.ondragstart =
-               attribute ondragstart { common.data.functionbody }
-       scripting.attr.ondrop =
-               attribute ondrop { common.data.functionbody }
-       scripting.attr.ondurationchange =
-               attribute ondurationchange { common.data.functionbody }
-       scripting.attr.onemptied =
-               attribute onemptied { common.data.functionbody }
-       scripting.attr.onended =
-               attribute onended { common.data.functionbody }
-       scripting.attr.onerror =
-               attribute onerror { common.data.functionbody }
-       scripting.attr.onfocus =
-               attribute onfocus { common.data.functionbody }
-       scripting.attr.onformchange =
-               attribute onformchange { common.data.functionbody }
-       scripting.attr.onforminput =
-               attribute onforminput { common.data.functionbody }
-       scripting.attr.oninput =
-               attribute oninput { common.data.functionbody }
-       scripting.attr.oninvalid =
-               attribute oninvalid { common.data.functionbody }
-       scripting.attr.onkeydown =
-               attribute onkeydown { common.data.functionbody }
-       scripting.attr.onkeypress =
-               attribute onkeypress { common.data.functionbody }
-       scripting.attr.onkeyup =
-               attribute onkeyup { common.data.functionbody }
-       scripting.attr.onload =
-               attribute onload { common.data.functionbody }
-       scripting.attr.onloadeddata =
-               attribute onloadeddata { common.data.functionbody }
-       scripting.attr.onloadedmetadata =
-               attribute onloadedmetadata { common.data.functionbody }
-       scripting.attr.onloadstart =
-               attribute onloadstart { common.data.functionbody }
-       scripting.attr.onmousedown =
-               attribute onmousedown { common.data.functionbody }
-       scripting.attr.onmouseenter =
-               attribute onmouseenter { common.data.functionbody }
-       scripting.attr.onmouseleave =
-               attribute onmouseleave { common.data.functionbody }
-       scripting.attr.onmousemove =
-               attribute onmousemove { common.data.functionbody }
-       scripting.attr.onmouseout =
-               attribute onmouseout { common.data.functionbody }
-       scripting.attr.onmouseover =
-               attribute onmouseover { common.data.functionbody }
-       scripting.attr.onmouseup =
-               attribute onmouseup { common.data.functionbody }
-       scripting.attr.onwheel =
-               attribute onwheel { common.data.functionbody }
-       scripting.attr.onpause =
-               attribute onpause { common.data.functionbody }
-       scripting.attr.onplay =
-               attribute onplay { common.data.functionbody }
-       scripting.attr.onplaying =
-               attribute onplaying { common.data.functionbody }
-       scripting.attr.onprogress =
-               attribute onprogress { common.data.functionbody }
-       scripting.attr.onratechange =
-               attribute onratechange { common.data.functionbody }
-       scripting.attr.onreset =
-               attribute onreset { common.data.functionbody }
-       scripting.attr.onresize =
-               attribute onresize { common.data.functionbody }
-       scripting.attr.onscroll =
-               attribute onscroll { common.data.functionbody }
-       scripting.attr.onseeked =
-               attribute onseeked { common.data.functionbody }
-       scripting.attr.onseeking =
-               attribute onseeking { common.data.functionbody }
-       scripting.attr.onselect =
-               attribute onselect { common.data.functionbody }
-       scripting.attr.onshow =
-               attribute onshow { common.data.functionbody }
-       scripting.attr.onsort =
-               attribute onsort { common.data.functionbody }
-       scripting.attr.onstalled =
-               attribute onstalled { common.data.functionbody }
-       scripting.attr.onsubmit =
-               attribute onsubmit { common.data.functionbody }
-       scripting.attr.onsuspend =
-               attribute onsuspend { common.data.functionbody }
-       scripting.attr.ontimeupdate =
-               attribute ontimeupdate { common.data.functionbody }
-       scripting.attr.ontoggle =
-               attribute ontoggle { common.data.functionbody }
-       scripting.attr.onvolumechange =
-               attribute onvolumechange { common.data.functionbody }
-       scripting.attr.onwaiting =
-               attribute onwaiting { common.data.functionbody }
-
-#      scripting.attr.common =
-#              (       scripting.attr.mouse
-#              &       scripting.attr.keyboard
-#              &       scripting.attr.focus
-#              )
-#      
-#      scripting.attr.mouse =
-#              (       scripting.attr.mouse.click?
-#              &       scripting.attr.mouse.dblclick?
-#              &       scripting.attr.mouse.down?
-#              &       scripting.attr.mouse.up?
-#              &       scripting.attr.mouse.over?
-#              &       scripting.attr.mouse.move?
-#              &       scripting.attr.mouse.out?
-#              )
-#              scripting.attr.mouse.click =
-#                      attribute onclick { string }
-#              scripting.attr.mouse.dblclick =
-#                      attribute ondblclick { string }
-#              scripting.attr.mouse.down =
-#                      attribute onmousedown { string }
-#              scripting.attr.mouse.up =
-#                      attribute onmouseup { string }
-#              scripting.attr.mouse.over =
-#                      attribute onmouseover { string }
-#              scripting.attr.mouse.move =
-#                      attribute onmousemove { string }
-#              scripting.attr.mouse.out =
-#                      attribute onmouseout { string }
-#      
-#      scripting.attr.keyboard =
-#              (       scripting.attr.keyboard.press?
-#              &       scripting.attr.keyboard.down?
-#              &       scripting.attr.keyboard.up?
-#              )
-#              scripting.attr.keyboard.press =
-#                      attribute onkeypress { string }
-#              scripting.attr.keyboard.down =
-#                      attribute onkeydown { string }
-#              scripting.attr.keyboard.up =
-#                      attribute onkeyup { string }
-#      
-#      
-#      scripting.attr.focus =
-#              (       scripting.attr.focus.gain?
-#              &       scripting.attr.focus.lose?
-#              )
-#              scripting.attr.focus.gain =
-#                      attribute onfocus { string }
-#              scripting.attr.focus.lose =
-#                      attribute onblur { string }
-#      
-#      scripting.attr.loading =
-#              (       scripting.attr.loading.load?
-#              &       scripting.attr.loading.unload?
-#              )
-#              scripting.attr.loading.load =
-#                      attribute onload { string }
-#              scripting.attr.loading.unload =
-#                      attribute onunload { string }
-
-
-# #####################################################################
-# Event Handler Attribute Assignments
-
-#      body.attrs   &= scripting.attr.loading
diff --git a/packages/html5-schema/data.rnc b/packages/html5-schema/data.rnc
deleted file mode 100644
index 991f698..0000000
--- a/packages/html5-schema/data.rnc
+++ /dev/null
@@ -1,94 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Static Data Markup                    #
-# #####################################################################
-
-## Time: <time>
-
-       time.elem =
-               element time { time.inner & time.attrs }
-       time.attrs =
-               (       common.attrs
-               &       time.attrs.datetime?
-               &       common.attrs.aria?
-               )
-               time.attrs.datetime =
-                       attribute datetime {
-                               common.data.time-datetime
-                       }
-               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
-
-       common.elem.phrasing |= time.elem
-
-## Data: <data>
-
-       data.elem =
-               element data { data.inner & data.attrs }
-       data.attrs =
-               (       common.attrs
-               &       data.attrs.value
-               &       common.attrs.aria?
-               )
-               data.attrs.value =
-                       attribute value {
-                               string
-                       }
-       data.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= data.elem
-
-## Scalar Gauge: <meter>
-
-       meter.elem =
-               element meter { meter.inner & meter.attrs }
-       meter.attrs =
-               (       common.attrs
-               &       meter.attrs.value
-               &       meter.attrs.min?
-               &       meter.attrs.low?
-               &       meter.attrs.high?
-               &       meter.attrs.max?
-               &       meter.attrs.optimum?
-               &       (       common.attrs.aria.implicit.progressbar
-                       |       common.attrs.aria.role.progressbar
-                       )?
-               )
-               meter.attrs.value =
-                       attribute value {
-                               common.data.float
-                       }
-               meter.attrs.min =
-                       attribute min {
-                               common.data.float
-                       }
-               meter.attrs.low =
-                       attribute low {
-                               common.data.float
-                       }
-               meter.attrs.high =
-                       attribute high {
-                               common.data.float
-                       }
-               meter.attrs.max =
-                       attribute max {
-                               common.data.float
-                       }
-               meter.attrs.optimum =
-                       attribute optimum {
-                               common.data.float
-                       }
-       meter.inner =
-               ( common.inner.phrasing ) #Cannot enforce textContent format 
here
-
-       common.elem.phrasing |= meter.elem
diff --git a/packages/html5-schema/embed.rnc b/packages/html5-schema/embed.rnc
deleted file mode 100644
index a46b982..0000000
--- a/packages/html5-schema/embed.rnc
+++ /dev/null
@@ -1,586 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-namespace local = ""
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Embedded Content                      #
-# #####################################################################
-
-#######################################################################
-## Replaced Content
-
-## Images: <img>
-
-       img.elem =
-               element img { img.inner & img.attrs }
-       img.attrs =
-               (       common.attrs
-               &       img.attrs.src
-               &       img.attrs.srcset?
-               &       img.attrs.sizes?
-               &       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
-               &       embedded.content.attrs.crossorigin?
-               &       (       common.attrs.aria.implicit.img
-                       |       common.attrs.aria
-                       )?
-               )
-               img.attrs.src =
-                       attribute src {
-                               common.data.uri.non-empty
-                       }
-               img.attrs.srcset =
-                       attribute srcset {
-                               string
-                       } & v5only
-               img.attrs.sizes =
-                       attribute sizes {
-                               common.data.source.size.list
-                       } & v5only
-               img.attrs.alt =
-                       attribute alt {
-                               text
-                       }
-               img.attrs.height =
-                       attribute height {
-                               common.data.integer.non-negative
-                       }
-               img.attrs.width =
-                       attribute width {
-                               common.data.integer.non-negative
-                       }
-               img.attrs.usemap =
-                       attribute usemap {
-                               common.data.hash-name
-                       }
-               img.attrs.ismap =
-                       attribute ismap {
-                               w:string "ismap" | w:string ""
-                       }
-               img.attrs.border =
-                       attribute border {
-                               common.data.zero
-                       }
-       img.inner =
-               empty
-
-       common.elem.phrasing |= img.elem
-
-## Image with multiple sources: <picture>
-
-       picture.elem =
-               element picture { picture.inner & picture.attrs }
-               & v5only
-       picture.attrs =
-               ( common.attrs )
-       picture.inner =
-               (       (       source.picture.elem*
-                       &       common.elem.script-supporting*
-                       ),
-                       (       img.elem
-                       &       common.elem.script-supporting*
-                       )
-               )
-
-       common.elem.phrasing |= picture.elem
-
-## Picture source: <source srcset>
-
-       source.picture.elem =
-               element source { source.picture.inner & source.picture.attrs }
-       source.picture.attrs =
-               (       common.attrs
-               &       source.picture.attrs.media?
-               &       source.picture.attrs.srcset
-               &       source.picture.attrs.sizes?
-               &       source.picture.attrs.type?
-               )
-               source.picture.attrs.media =
-                       attribute media {
-                               common.data.mediaquery
-                       }
-               source.picture.attrs.srcset =
-                       attribute srcset {
-                               string
-                       }
-               source.picture.attrs.sizes =
-                       attribute sizes {
-                               common.data.source.size.list
-                       }
-               source.picture.attrs.type =
-                       attribute type {
-                               common.data.mimetype
-                       }
-       source.picture.inner =
-               ( empty )
-
-## Plug-ins: <embed>
-
-       embed.elem =
-               element embed { embed.inner & embed.attrs }
-       embed.attrs =
-               (       common.attrs
-               &       embed.attrs.src?
-               &       embed.attrs.type?
-               &       embed.attrs.height?
-               &       embed.attrs.width?
-               &       embed.attrs.other*
-               &       (       common.attrs.aria.landmark.application
-                       |       common.attrs.aria.landmark.document
-                       |       common.attrs.aria.role.img
-                       |       common.attrs.aria.role.presentation
-                       )?
-               )
-               embed.attrs.src =
-                       attribute src {
-                               common.data.uri.non-empty
-                       }
-               embed.attrs.type =
-                       attribute type {
-                               common.data.mimetype
-                       }
-               embed.attrs.height =
-                       attribute height {
-                               common.data.integer.non-negative
-                       }
-               embed.attrs.width =
-                       attribute width {
-                               common.data.integer.non-negative
-                       }
-               embed.attrs.other = # REVISIT common.attrs
-                       attribute local:* - ( src 
-                                           | type 
-                                           | height 
-                                           | width 
-                                           | id 
-                                           | class
-                                           | title 
-                                           | dir 
-                                           | lang 
-                                           | translate 
-                                           | style 
-                                           | tabindex 
-                                           | contextmenu 
-                                           | contenteditable 
-                                           | draggable 
-                                           | dropzone
-                                           | hidden
-                                           | onabort
-                                           | onautocomplete
-                                           | onautocompleteerror
-                                           | onblur
-                                           | oncancel
-                                           | oncanplay
-                                           | oncanplaythrough
-                                           | onchange
-                                           | onclick
-                                           | onclose
-                                           | oncontextmenu
-                                           | oncuechange
-                                           | ondblclick
-                                           | ondrag
-                                           | ondragend
-                                           | ondragenter
-                                           | ondragexit
-                                           | ondragleave
-                                           | ondragover
-                                           | ondragstart
-                                           | ondrop
-                                           | ondurationchange
-                                           | onemptied
-                                           | onended
-                                           | onerror
-                                           | onfocus
-                                           | oninput
-                                           | oninvalid
-                                           | onkeydown
-                                           | onkeypress
-                                           | onkeyup
-                                           | onload
-                                           | onloadeddata
-                                           | onloadedmetadata
-                                           | onloadstart
-                                           | onmousedown
-                                           | onmouseenter
-                                           | onmouseleave
-                                           | onmousemove
-                                           | onmouseout
-                                           | onmouseover
-                                           | onmouseup
-                                           | onwheel
-                                           | onpause
-                                           | onplay
-                                           | onplaying
-                                           | onprogress
-                                           | onratechange
-                                           | onreset
-                                           | onresize
-                                           | onscroll
-                                           | onseeked
-                                           | onseeking
-                                           | onselect
-                                           | onshow
-                                           | onsort
-                                           | onstalled
-                                           | onsubmit
-                                           | onsuspend
-                                           | ontimeupdate
-                                           | ontoggle
-                                           | onvolumechange
-                                           | onwaiting
-                                           | role
-                                           | aria-atomic
-                                           | aria-busy
-                                           | aria-controls
-                                           | aria-describedby
-                                           | aria-disabled
-                                           | aria-dropeffect
-                                           | aria-expanded
-                                           | aria-flowto
-                                           | aria-grabbed
-                                           | aria-haspopup
-                                           | aria-hidden
-                                           | aria-invalid
-                                           | aria-label
-                                           | aria-labelledby
-                                           | aria-live
-                                           | aria-owns
-                                           | aria-relevant
-                                           | aria-required
-                                           | spellcheck
-                                           | accesskey
-                                           | itemref
-                                           | itemprop
-                                           | itemscope
-                                           | itemtype
-                                           | 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-ta-confidence
-                                            | its-ta-class-ref
-                                            | its-ta-ident
-                                            | its-ta-ident-ref
-                                            | its-ta-source
-                                            | its-locale-filter-list
-                                            | its-locale-filter-type
-                                            | 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
-                       }
-       embed.inner =
-               empty
-
-       common.elem.phrasing |= embed.elem
-
-## Generic Objects: <object>
-
-       object.elem.flow =
-               element object { object.inner.flow & object.attrs }
-       object.elem.phrasing =
-               element object { object.inner.phrasing & object.attrs }
-       object.attrs =
-               (       common.attrs
-               &       (       (       object.attrs.data
-                               &       object.attrs.type?
-                               )
-                       |       object.attrs.type
-                       )
-               &       object.attrs.typemustmatch?
-#              &       object.attrs.classid?
-#              &       object.attrs.codebase?
-#              &       object.attrs.codetype?
-               &       object.attrs.height?
-               &       object.attrs.width?
-               &       object.attrs.usemap?
-               &       object.attrs.name?
-               &       common-form.attrs.form?
-               &       (       common.attrs.aria.landmark.application
-                       |       common.attrs.aria.landmark.document
-                       |       common.attrs.aria.role.img
-                       |       common.attrs.aria.role.presentation
-                       )?
-               )
-               object.attrs.data =
-                       attribute data {
-                               common.data.uri.non-empty
-                       }
-               object.attrs.type =
-                       attribute type {
-                               common.data.mimetype
-                       }
-               object.attrs.typemustmatch =
-                       attribute typemustmatch {
-                               w:string "typemustmatch" | w:string ""
-                       } & v5only
-               object.attrs.height =
-                       attribute height {
-                               common.data.integer.non-negative
-                       }
-               object.attrs.width =
-                       attribute width {
-                               common.data.integer.non-negative
-                       }
-               object.attrs.usemap =
-                       attribute usemap {
-                               common.data.hash-name
-                       }
-               object.attrs.name =
-                       attribute name {
-                               common.data.browsing-context
-                       }
-       object.inner.flow =
-               (       param.elem*
-               ,       common.inner.transparent.flow
-               )
-       object.inner.phrasing =
-               (       param.elem*
-               ,       common.inner.phrasing
-               )
-
-       common.elem.flow |= object.elem.flow
-       common.elem.phrasing |= object.elem.phrasing
-
-## Initialization Parameters: <param>
-
-       param.elem =
-               element param { param.inner & param.attrs }
-       param.attrs =
-               (       common.attrs
-               &       param.attrs.name
-               &       param.attrs.value
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               param.attrs.name =
-                       attribute name {
-                               string
-                       }
-               param.attrs.value =
-                       attribute value {
-                               string
-                       }
-       param.inner =
-               ( empty )
-
-## Inline Frame: <iframe>
-
-       iframe.elem =
-               element iframe { iframe.inner & iframe.attrs }
-       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?
-               &       iframe.attrs.allowfullscreen?
-               &       (       common.attrs.aria.landmark.application
-                       |       common.attrs.aria.landmark.document
-                       |       common.attrs.aria.role.img
-                       |       common.attrs.aria.role.presentation
-                       )?
-               )
-               iframe.attrs.src =
-                       attribute src {
-                               common.data.uri.non-empty
-                       }
-               iframe.attrs.srcdoc =
-                       attribute srcdoc {
-                               string #FIXME
-                       }
-               iframe.attrs.name =
-                       attribute name {
-                               common.data.browsing-context
-                       }
-               iframe.attrs.height =
-                       attribute height {
-                               common.data.integer.non-negative
-                       }
-               iframe.attrs.width =
-                       attribute width {
-                               common.data.integer.non-negative
-                       }
-               iframe.attrs.seamless =
-                       attribute seamless {
-                               w:string "seamless" | w:string ""
-                       } & v5only
-               iframe.attrs.sandbox =
-                       attribute sandbox {
-                               common.data.sandbox-allow-list
-                       } & v5only
-               iframe.attrs.allowfullscreen =
-                       attribute allowfullscreen {
-                               w:string "allowfullscreen" | w:string ""
-                       } & v5only
-       iframe.inner =
-               ( ( text & HTMLonly ) | empty )
-
-       common.elem.phrasing |= iframe.elem
-
-#######################################################################
-## Image Maps
-
-## Map Definition: <map>
-
-       map.elem.flow =
-               element map { map.inner.flow & map.attrs }
-       map.elem.phrasing  =
-               element map { map.inner.phrasing & map.attrs }
-       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.transparent.flow )
-       map.inner.phrasing =
-               ( common.inner.phrasing )
-
-       common.elem.flow |= map.elem.flow
-       common.elem.phrasing |= map.elem.phrasing
-
-## Map Area Definition: <area>
-
-       area.elem =
-               element area { area.inner & area.attrs }
-       area.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       shared-hyperlink.attrs.download?
-               &       (       area.attrs.alt
-                       &       shared-hyperlink.attrs.href
-                       )?
-               &       shared-hyperlink.attrs.target?
-               &       shared-hyperlink.attrs.ping?
-               &       shared-hyperlink.attrs.rel?
-               &       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 {
-                               text
-                       }
-               area.attrs.shape =
-                       (       ( area.attrs.shape.rect?  & 
area.attrs.coords.rect   )
-                       |       ( area.attrs.shape.circle & 
area.attrs.coords.circle )
-                       |       ( area.attrs.shape.poly   & 
area.attrs.coords.poly   )
-                       |       ( area.attrs.shape.default )
-                       )
-               area.attrs.shape.rect =
-                       attribute shape {
-                               w:string "rect"
-                       }
-               area.attrs.coords.rect =
-                       attribute coords {
-                               w:rectangle
-#                              xsd:token {
-#                                      pattern = 
"-?[0-9]+,-?[0-9]+,-?[0-9]+,-?[0-9]+"
-#                              }
-                       }
-               area.attrs.shape.circle =
-                       attribute shape {
-                               w:string "circle"
-                       }
-               area.attrs.coords.circle =
-                       attribute coords {
-                               w:circle
-#                              xsd:token {
-#                                      pattern = "-?[0-9]+,-?[0-9]+,[0-9]+"
-#                              }
-                       }
-               area.attrs.shape.poly =
-                       attribute shape {
-                               w:string "poly"
-                       }
-               area.attrs.coords.poly =
-                       attribute coords {
-                               w:polyline
-#                              xsd:token {
-#                                      pattern = 
"-?[0-9]+,-?[0-9]+,-?[0-9]+,-?[0-9]+,-?[0-9]+,-?[0-9]+(,-?[0-9]+,-?[0-9]+)*"
-#                              }
-                       }
-               area.attrs.shape.default =
-                       attribute shape {
-                               w:string "default"
-                       }
-       area.inner =
-               ( empty )
-
-       common.elem.phrasing |= area.elem
-
-## Attributes Common to Embedded Content
-
-               embedded.content.attrs.crossorigin =
-                       attribute crossorigin {
-                               w:string "anonymous" | w:string 
"use-credentials" | w:string ""
-                       } & v5only
diff --git a/packages/html5-schema/form-datatypes.rnc 
b/packages/html5-schema/form-datatypes.rnc
deleted file mode 100644
index db719f9..0000000
--- a/packages/html5-schema/form-datatypes.rnc
+++ /dev/null
@@ -1,63 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Datatypes related to forms            #
-# #####################################################################
-
-## MIME types
-               
-       form.data.mimetypelist = 
-               w:mime-type-list
-               
-       form.data.charsetlist =
-               string # FIXME should be a "a space- and/or comma-delimited 
-                      # list of charset values"
-
-## ECMAScript Regular Expression
-               
-       form.data.pattern = 
-               w:pattern
-               
-## Temporal
-               
-       form.data.datetime-local =
-               w:datetime-local
-       
-       form.data.date =
-               w:date
-       
-       form.data.month =
-               w:month
-       
-       form.data.week =
-               w:week
-       
-       form.data.time =
-               w:time
-
-## Email
-
-       form.data.emailaddress =
-               w:email-address
-
-       form.data.emailaddresslist =
-               w:email-address-list
-
-## Color
-
-       form.data.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
-
diff --git a/packages/html5-schema/html5-schema.el 
b/packages/html5-schema/html5-schema.el
deleted file mode 100644
index 5fff760..0000000
--- a/packages/html5-schema/html5-schema.el
+++ /dev/null
@@ -1,67 +0,0 @@
-;;; html5-schema.el --- Add HTML5 schemas for use by nXML  -*- 
lexical-binding: t; -*-
-
-;; Copyright (C) 2016  Free Software Foundation, Inc
-
-;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
-;; Keywords: html, xml
-;; Version: 0.1
-;; URL: https://github.com/validator/validator
-;; Package-Type: multi
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; The RelaxNG files are taken straight from
-;; https://github.com/validator/validator.git's via:
-;;
-;;     git subtree -P schema/html5 split
-;;
-;; To which we manually add `locating-rules.xml` and this file.
-
-;;; Code:
-
-;;;###autoload
-(when load-file-name
-  (let* ((dir (file-name-directory load-file-name))
-         (file (expand-file-name "locating-rules.xml" dir)))
-    (eval-after-load 'rng-loc
-      `(progn
-         (add-to-list 'rng-schema-locating-files-default 'file)
-         ;; FIXME: We should only push to rng-schema-locating-files-default,
-         ;; since rng-schema-locating-files is a custom var, but by the time
-         ;; we run, rng-schema-locating-files has already been initialized
-         ;; from rng-schema-locating-files-default, so setting
-         ;; rng-schema-locating-files-default doesn't have any effect
-         ;; any more!
-         (add-to-list 'rng-schema-locating-files ,file)
-         (put 'http://whattf.org/datatype-draft 'rng-dt-compile
-              #'nxml-html5-dt-compile)))))
-
-;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.html?\\'" . nxml-mode))
-
-(defvar nxml-html5-dt-params nil)
-(defvar nxml-html5-dt-names nil)
-
-;;;###autoload
-(defun nxml-html5-dt-compile (name params)
-  ;; FIXME: How/when is `params' ever used?  It seems to always be nil!
-  (add-to-list 'nxml-html5-dt-params params)
-  (add-to-list 'nxml-html5-dt-names name)
-  ;; FIXME: We currently don't do any actual validation of datatypes!
-  '(t identity))
-
-(provide 'html5-schema)
-;;; html5-schema.el ends here
diff --git a/packages/html5-schema/html5.rnc b/packages/html5-schema/html5.rnc
deleted file mode 100644
index 0d8cef8..0000000
--- a/packages/html5-schema/html5.rnc
+++ /dev/null
@@ -1,56 +0,0 @@
-default namespace = "http://www.w3.org/1999/xhtml";
-# #####################################################################
-##  RELAX NG Schema for HTML 5                                       #
-# #####################################################################
-
-  # To validate an HTML 5 document, you must first validate against  #
-  # this schema and then ALSO validate against assertions.sch        #
-
-  ## HTML flavor RELAX NG schemas can only be used after the         #
-  ## document has been transformed to well-formed XML.               #
-  ##   - Insert closing slashes in all empty element tags            #
-  ##   - Insert all optional start and end tags                      #
-  ##   - Add xmlns "http://www.w3.org/1999/xhtml";                    #
-  ##   - Properly escape <script> and <style> CDATA                  #
-  ##   - Parse and transform all HTML-only entities to numeric       #
-  ##     character references                                        #
-  ## Obviously, syntax-checking involving these features cannot be   #
-  ## done by the RELAX NG schema and must be checked, along with the #
-  ## <!DOCTYPE> requirement, by some other application.              #
-
-# #####################################################################
-## Schema Framework & Parameters
-
-include "common.rnc" {
-       # XHTML flavor #
-               XMLonly = notAllowed
-               HTMLonly = empty
-       # HTML 4 compat #
-               v5only = empty
-       # HTML-serializability #
-               nonHTMLizable = notAllowed
-       # HTML-roundtrippability #
-               nonRoundtrippable = notAllowed
-}
-
-# #####################################################################
-## Language Definitions
-
-start = html.elem
-
-include "meta.rnc"
-include "phrase.rnc"
-include "block.rnc"
-include "sectional.rnc"
-include "structural.rnc"
-include "revision.rnc"
-include "embed.rnc"
-include "ruby.rnc"
-include "media.rnc"
-include "core-scripting.rnc"
-include "tables.rnc"
-include "form-datatypes.rnc"
-include "web-forms.rnc"
-include "web-forms2.rnc"
-include "applications.rnc"
-include "data.rnc"
diff --git a/packages/html5-schema/html5exclusions.rnc 
b/packages/html5-schema/html5exclusions.rnc
deleted file mode 100644
index 1fa0915..0000000
--- a/packages/html5-schema/html5exclusions.rnc
+++ /dev/null
@@ -1,63 +0,0 @@
-default namespace = "http://www.w3.org/1999/xhtml";
-# #####################################################################
-##  RELAX NG Schema for (X)HTML 5: Exclusions                         #
-# #####################################################################
-
-  ## This file is unmaintained. Please use assertions.sch instead.
-  
-# #####################################################################
-## Schema Framework & Parameters
-
-       start = normal.elem.all-inclusive
-
-# #####################################################################
-##  Normal Element Patterns
-
-## Any attribute from any namespace
-
-       normal.attr.anything =
-               attribute * { text }*
-
-## Any element from any namespace except exceptional elements,
-## but allowing those elements as descendants
-
-       normal.elem.all =
-               element * - (dfn) {
-                       normal.elem.all-inclusive
-               }
-
-## Any element from any namespace including exceptional elements
-
-       normal.elem.all-inclusive =
-               wildcard.elem.exclude-all | dfn.elem.exclude-self
-
-
-# #####################################################################
-##  Exclusion Element Patterns
-
-  # exclude all exceptional elements from the name classes;
-  # list them explicitly in content models instead
-
-normal.elem.exclude-dfn =
-       element * - (dfn) {
-               normal.elem.exclude-dfn
-       }
-
-dfn.elem.exclude-self =
-       element dfn {
-               (       normal.attr.anything
-               &       normal.elem.exclude-dfn
-               )
-       }
-
-# FIXME this part was cut off -- hsivonen
-wildcard.elem.exclude-all = 
-       notAllowed
-
-#FIXME no nested forms in HTML-serializable docs
-
-#FIXME no nested labels
-
-#FIXME no blockquote inside header or footer
-
-#FIXME exactly one hn in header
diff --git a/packages/html5-schema/locating-rules.xml 
b/packages/html5-schema/locating-rules.xml
deleted file mode 100644
index 86b2bb1..0000000
--- a/packages/html5-schema/locating-rules.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<!-- <?xml version="1.0"?> -->
-<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0";>
-  <uri pattern="*.html" typeId="HTML5" />
-  <uri pattern="*.xhtml" typeId="XHTML5" />
-  <namespace ns="http://www.w3.org/1999/xhtml"; typeId="XHTML5"/>
-  <documentElement localName="html" typeId="HTML5" />
-  <typeId id="XHTML5" uri="xhtml5.rnc" />
-  <typeId id="HTML5" uri="html5.rnc" />
-</locatingRules>
diff --git a/packages/html5-schema/media.rnc b/packages/html5-schema/media.rnc
deleted file mode 100644
index 28cbb63..0000000
--- a/packages/html5-schema/media.rnc
+++ /dev/null
@@ -1,210 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Advanced Embedded Content             #
-# #####################################################################
-
-## Attributes Common to Media Elements
-
-       # src not included
-       media.attrs = 
-               (       media.attrs.autoplay?
-               &       media.attrs.preload?
-               &       media.attrs.controls?
-               &       media.attrs.loop?
-               &       media.attrs.mediagroup?
-               &       media.attrs.muted?
-               &       embedded.content.attrs.crossorigin?
-               )
-               media.attrs.autoplay   =
-                       attribute autoplay   {
-                               w:string "autoplay" | w:string ""
-                       }
-               media.attrs.preload   =
-                       attribute preload   {
-                               w:string "none" | w:string "metadata" | 
w:string "auto" | w:string ""
-                       }
-               media.attrs.controls  =
-                       attribute controls  {
-                               w:string "controls" | w:string ""
-                       }
-               media.attrs.loop =
-                       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>
-
-       source.elem =
-               element source { source.inner & source.attrs }
-       source.attrs =
-               (       common.attrs
-               &       source.attrs.src
-               &       source.attrs.type?
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               source.attrs.src =
-                       attribute src {
-                               common.data.uri.non-empty
-                       }
-               source.attrs.type =
-                       attribute type {
-                               common.data.mimetype
-                       }
-       source.inner =
-               ( empty )
-
-## Media Source
-
-       media.source = 
-               (       media.attrs.src
-               |       source.elem*
-               )
-
-       media.attrs.src =
-               attribute src {
-                       common.data.uri.non-empty
-               }
-
-## Video: <video>
-
-       video.elem.flow =
-               element video { video.inner.flow & video.attrs }
-       video.elem.phrasing =
-               element video { video.inner.phrasing & video.attrs }
-       video.attrs =
-               (       common.attrs
-               &       media.attrs
-               &       video.attrs.poster?
-               &       video.attrs.height?
-               &       video.attrs.width?
-               &       common.attrs.aria.landmark.application?
-               )
-               video.attrs.poster =
-                       attribute poster {
-                               common.data.uri.non-empty
-                       }
-               video.attrs.height =
-                       attribute height {
-                               common.data.integer.non-negative
-                       }
-               video.attrs.width =
-                       attribute width {
-                               common.data.integer.non-negative
-                       }
-       video.inner.flow =
-               (       media.source
-               ,       track.elem*
-               ,       common.inner.transparent.flow
-               )
-       video.inner.phrasing =
-               (       media.source
-               ,       track.elem*
-               ,       common.inner.phrasing
-               )
-
-       common.elem.flow |= video.elem.flow
-       common.elem.phrasing |= video.elem.phrasing
-
-## Audio: <audio>
-
-       audio.elem.flow =
-               element audio { audio.inner.flow & audio.attrs }
-       audio.elem.phrasing =
-               element audio { audio.inner.phrasing & audio.attrs }
-       audio.attrs =
-               (       common.attrs
-               &       media.attrs
-               &       common.attrs.aria.landmark.application?
-               )
-       audio.inner.flow =
-               (       media.source
-               ,       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?
-               )
-       figure.inner =
-               (       ( figcaption.elem?, common.inner.flow )
-               |       ( common.inner.flow, figcaption.elem? )
-               )
-
-       common.elem.flow |= figure.elem
-
-## Figure caption: <figcaption>
-
-       figcaption.elem =
-               element figcaption { figcaption.inner & figcaption.attrs }
-       figcaption.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-       figcaption.inner =
-               ( common.inner.flow )
diff --git a/packages/html5-schema/meta.rnc b/packages/html5-schema/meta.rnc
deleted file mode 100644
index ff67c2d..0000000
--- a/packages/html5-schema/meta.rnc
+++ /dev/null
@@ -1,424 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Global Structure & Metadata          #
-# #####################################################################
-
-## Root Element: <html>
-
-       html.elem =
-               element html { html.inner & html.attrs }
-       html.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-       html.inner =
-               (       head.elem
-               ,       body.elem
-               )
-
-## Metadata Container: <head>
-
-       head.elem =
-               element head { head.inner & head.attrs }
-       head.attrs =
-               (       common.attrs
-#              &       head.attrs.profile?
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-#              head.attrs.profile =
-#                      attribute profile {
-#                              common.data.uris #REVISIT should these be 
absolute (zero or more)
-#                      }
-       head.inner =
-               (       title.elem
-               &       base.elem? # REVISIT need a non-schema checker or 
Schematron
-               &       common.inner.metadata # Limit encoding decl position in 
Schematron
-               )
-#      head.inner =
-#              (       meta.elem.encoding?
-#              ,       (       title.elem
-#                      &       base.elem? # REVISIT need a non-schema checker 
or Schematron
-#                      &       common.inner.metadata
-#                      )
-#              )
-               
-## Content Container: <body>
-
-       body.elem =
-               element body { body.inner & body.attrs }
-       body.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.landmark.application
-                       |       common.attrs.aria.landmark.document
-                       |       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.implicit.document
-                       )?
-               &       body.attrs.onafterprint?
-               &       body.attrs.onbeforeprint?
-               &       body.attrs.onbeforeunload?
-               &       body.attrs.onhashchange?
-               &       body.attrs.onmessage?
-               &       body.attrs.onoffline?
-               &       body.attrs.ononline?
-               &       body.attrs.onpagehide?
-               &       body.attrs.onpageshow?
-               &       body.attrs.onpopstate?
-               &       body.attrs.onstorage?
-               &       body.attrs.onunload?
-               )
-       body.inner =
-               ( common.inner.flow )
-
-       body.attrs.onafterprint =
-               attribute onafterprint { common.data.functionbody }
-       body.attrs.onbeforeprint =
-               attribute onbeforeprint { common.data.functionbody }
-       body.attrs.onbeforeunload =
-               attribute onbeforeunload { common.data.functionbody }
-       body.attrs.onhashchange =
-               attribute onhashchange { common.data.functionbody }
-       body.attrs.onmessage =
-               attribute onmessage { common.data.functionbody }
-       body.attrs.onoffline =
-               attribute onoffline { common.data.functionbody }
-       body.attrs.ononline =
-               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 =
-               attribute onresize { common.data.functionbody }
-       body.attrs.onstorage =
-               attribute onstorage { common.data.functionbody }
-       body.attrs.onundo =
-               attribute onundo { common.data.functionbody }
-       body.attrs.onunload =
-               attribute onunload { common.data.functionbody }
-
-## Document Title: <title>
-
-       title.elem =
-               element title { title.inner & title.attrs }
-       title.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-       title.inner =
-               ( text )
-
-## Base URI: <base>
-
-       base.elem =
-               element base { base.inner & base.attrs }
-       base.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 {
-                       common.data.uri
-               }
-       base.attrs.target =
-               attribute target {
-                       common.data.browsing-context-or-keyword
-               }
-       base.inner =
-               ( empty )
-
-## Global Relationships: <link>
-
-       link.elem =
-               element link { link.inner & link.attrs }
-       link.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       link.attrs.href
-               &       link.attrs.rel
-               &       link.attrs.integrity?
-               &       shared-hyperlink.attrs.hreflang?
-               &       shared-hyperlink.attrs.media?
-               &       shared-hyperlink.attrs.type?
-               &       link.attrs.sizes?
-               #       link.attrs.title included in common.attrs
-               &       embedded.content.attrs.crossorigin?
-               &       (       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.integrity =
-                       attribute integrity {
-                               common.data.integrity
-                       }
-               link.attrs.sizes =
-                       attribute sizes {
-                               w:string "any" | common.data.sizes
-                       }
-       link.inner =
-               ( empty )
-               
-       common.elem.metadata |= link.elem
-
-## Global Style: <style>
-
-       style.elem =
-               element style { style.inner & style.attrs }
-       style.attrs =
-               (       common.attrs
-               &       style.attrs.type?
-               &       style.attrs.media?
-               &       style.attrs.nonce?
-               #       style.attrs.title included in common.attrs
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               style.attrs.type =
-                       attribute type {
-                               common.data.mimetype
-                       }
-               style.attrs.media =
-                       attribute media {
-                               common.data.mediaquery
-                       }
-               style.attrs.nonce =
-                       attribute nonce{
-                               string
-                       }
-       style.inner =
-               ( common.inner.anything )
-               
-       common.elem.metadata |= style.elem
-
-## Scoped Style: <style scoped>
-
-       style.elem.scoped =
-               element style { style.inner & style.scoped.attrs }
-       style.scoped.attrs =
-               (       common.attrs
-               &       style.attrs.type?
-               &       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 {
-                               w:string "scoped" | w:string ""
-                       }
-
-## Name-Value Metadata: <meta name>
-
-       meta.name.elem =
-               element meta { meta.inner & meta.name.attrs }
-       meta.name.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       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 {
-                               w:non-empty-string
-                       }
-               meta.name.attrs.content =
-                       attribute content {
-                               string
-                       }
-       meta.inner =
-               ( empty )
-               
-       common.elem.metadata |= meta.name.elem
-
-## "refresh" pragma directive: <meta http-equiv='refresh'>
-
-       meta.http-equiv.refresh.elem =
-               element meta { meta.inner & meta.http-equiv.refresh.attrs }
-       meta.http-equiv.refresh.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       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 {
-                               w:string "refresh"
-                       }
-               meta.http-equiv.attrs.content.refresh =
-                       attribute content { 
-                               common.data.refresh
-                       }
-       common.elem.metadata |= meta.http-equiv.refresh.elem # not quite right 
per spec
-                                                       # if the definition is 
-                                                       # reused in another 
language
-
-## "default-style" pragma directive: <meta http-equiv='default-style'>
-
-       meta.http-equiv.default-style.elem =
-               element meta { meta.inner & meta.http-equiv.default-style.attrs 
}
-       meta.http-equiv.default-style.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       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 {
-                               w:string "default-style"
-                       }
-               meta.http-equiv.attrs.content.default-style =
-                       attribute content {
-                               common.data.default-style
-                       }
-               
-       common.elem.metadata |= meta.http-equiv.default-style.elem # not quite 
right per spec
-                                                               # if the 
definition is 
-                                                               # reused in 
another language
-
-## Content Security Policy pragma directive: <meta 
http-equiv='content-security-policy'>
-
-       meta.http-equiv.content-security-policy.elem =
-               element meta { meta.inner & 
meta.http-equiv.content-security-policy.attrs }
-       meta.http-equiv.content-security-policy.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       meta.http-equiv.attrs.http-equiv.content-security-policy
-               &       meta.http-equiv.attrs.content.content-security-policy
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               meta.http-equiv.attrs.http-equiv.content-security-policy =
-                       attribute http-equiv {
-                               w:string "content-security-policy"
-                       }
-               meta.http-equiv.attrs.content.content-security-policy =
-                       attribute content {
-                               common.data.content-security-policy
-                       }
-       common.elem.metadata |= meta.http-equiv.content-security-policy.elem
-
-## "x-ua-compatible" pragma directive: <meta http-equiv='x-ua-compatible'>
-
-       meta.http-equiv.x-ua-compatible.elem =
-               element meta { meta.inner & 
meta.http-equiv.x-ua-compatible.attrs }
-       meta.http-equiv.x-ua-compatible.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       meta.http-equiv.attrs.http-equiv.x-ua-compatible
-               &       meta.http-equiv.attrs.content.x-ua-compatible
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               meta.http-equiv.attrs.http-equiv.x-ua-compatible =
-                       attribute http-equiv {
-                               w:string "x-ua-compatible"
-                       }
-               meta.http-equiv.attrs.content.x-ua-compatible =
-                       attribute content {
-                               common.data.x-ua-compatible
-                       }
-       common.elem.metadata |= meta.http-equiv.x-ua-compatible.elem
-
-## Inline Character Encoding Statement for HTML: <meta charset>
-
-       meta.charset.elem =
-               element meta { meta.inner & meta.charset.attrs }
-       meta.charset.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       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 {
-                               (common.data.charset & HTMLonly)
-                               | (xsd:string {
-                                       pattern = "[uU][tT][fF]-8"
-                               } & XMLonly )
-                       } 
-
-## Inline Character Encoding Statement for HTML: <meta 
http-equiv='content-type'>
-
-       meta.http-equiv.content-type.elem =
-               element meta { meta.inner & meta.http-equiv.content-type.attrs }
-               & HTMLonly
-       meta.http-equiv.content-type.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       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 {
-                               w:string "content-type"
-                       }
-               meta.http-equiv.attrs.content.content-type =
-                       attribute content {
-                               common.data.meta-charset
-                       }
-
-       common.elem.metadata |= ( meta.charset.elem | 
meta.http-equiv.content-type.elem )
diff --git a/packages/html5-schema/microdata.rnc 
b/packages/html5-schema/microdata.rnc
deleted file mode 100644
index 91616c8..0000000
--- a/packages/html5-schema/microdata.rnc
+++ /dev/null
@@ -1,101 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Microdata                             #
-# #####################################################################
-
-common.attrs.microdata =
-       (       common.attrs.microdata.itemref?
-       &       common.attrs.microdata.itemprop?
-       &       common.attrs.microdata.itemscope?
-       &       common.attrs.microdata.itemtype?
-       &       common.attrs.microdata.itemid?
-       )
-       common.attrs.microdata.itemref =
-               attribute itemref {
-                       common.data.idrefs
-               }
-       common.attrs.microdata.itemprop =
-               attribute itemprop {
-                       common.data.microdata-properties
-               }
-       common.attrs.microdata.itemscope =
-               attribute itemscope {
-                       w:string "itemscope" | w:string ""
-               }
-       common.attrs.microdata.itemtype =
-               attribute itemtype {
-                       list { common.data.uri.absolute+ }
-               }
-       common.attrs.microdata.itemid =
-               attribute itemid {
-                       common.data.uri
-               }
-
-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 =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       common.attrs.microdata.itemprop
-               &       common.attrs.microdata.itemref?
-               &       common.attrs.microdata.itemscope?
-               &       common.attrs.microdata.itemtype?
-               &       common.attrs.microdata.itemid?
-               &       shared-hyperlink.attrs.href
-               &       shared-hyperlink.attrs.hreflang?
-               &       shared-hyperlink.attrs.media?
-               &       shared-hyperlink.attrs.type?
-               &       link.attrs.sizes?
-               #       link.attrs.title included in common.attrs
-               &       embedded.content.attrs.crossorigin?
-               &       (       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 =
-               element meta { meta.inner & meta.itemprop.attrs }
-       meta.itemprop.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       common.attrs.microdata.itemprop
-               &       common.attrs.microdata.itemref?
-               &       common.attrs.microdata.itemscope?
-               &       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 {
-                               string
-                       }
-       common.elem.metadata |= meta.itemprop.elem
-       common.elem.phrasing |= meta.itemprop.elem
diff --git a/packages/html5-schema/phrase.rnc b/packages/html5-schema/phrase.rnc
deleted file mode 100644
index f8fa725..0000000
--- a/packages/html5-schema/phrase.rnc
+++ /dev/null
@@ -1,400 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Phrase Markup                         #
-# #####################################################################
-
-## Contextual Hyperlink: <a>
-
-       a.elem.phrasing =
-               element a { a.inner.phrasing & a.attrs }
-       a.elem.flow =
-               element a { a.inner.flow & a.attrs }
-       a.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       a.attrs.name?
-               &       shared-hyperlink.attrs.download?
-               &       shared-hyperlink.attrs.href?
-               &       shared-hyperlink.attrs.target?
-               &       shared-hyperlink.attrs.rel?
-               &       shared-hyperlink.attrs.hreflang?
-               &       shared-hyperlink.attrs.type?
-               &       shared-hyperlink.attrs.ping?
-               &       (       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.switch
-                       |       common.attrs.aria.role.tab
-                       |       common.attrs.aria.role.treeitem
-                       )?
-               )
-               a.attrs.name =
-                 attribute name {
-                   common.data.id # XXX not what the spec says
-                 }
-       a.inner.phrasing =
-               ( common.inner.phrasing )
-       a.inner.flow =
-               ( common.inner.transparent.flow )
-
-       common.elem.phrasing |= a.elem.phrasing
-       common.elem.flow |= a.elem.flow
-
-## Shared hyperlink attributes
-
-  shared-hyperlink.attrs.download =
-    attribute download {
-      string
-    }
-  shared-hyperlink.attrs.href =
-    attribute href {
-      common.data.uri
-    }
-  shared-hyperlink.attrs.target =
-    attribute target {
-      common.data.browsing-context-or-keyword
-    }
-  shared-hyperlink.attrs.rel =
-    attribute rel {
-      w:a-rel
-    }
-  shared-hyperlink.attrs.hreflang =
-    attribute hreflang {
-      common.data.langcode
-    }
-  shared-hyperlink.attrs.media =
-    attribute media {
-      common.data.mediaquery
-    }
-  shared-hyperlink.attrs.type =
-    attribute type {
-      common.data.mimetype
-    }
-  shared-hyperlink.attrs.ping =
-    attribute ping {
-      common.data.uris
-    } & v5only
-
-## Emphatic Stress: <em>
-
-       em.elem =
-               element em { em.inner & em.attrs }
-       em.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       em.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= em.elem
-
-## Strong Importance: <strong>
-
-       strong.elem =
-               element strong { strong.inner & strong.attrs }
-       strong.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       strong.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= strong.elem
-
-## Small Print and Side Comments: <small>
-
-       small.elem =
-               element small { small.inner & small.attrs }
-       small.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       small.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= small.elem
-
-## Marked (Highlighted) Text: <mark>
-
-       mark.elem =
-               element mark { mark.inner & mark.attrs }
-               & v5only
-       mark.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-       mark.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= mark.elem
-
-## Abbreviation: <abbr>
-
-       abbr.elem =
-               element abbr { abbr.inner & abbr.attrs }
-       abbr.attrs =
-               (       common.attrs
-               #       abbr.attrs.title included in common.attrs
-               &       common.attrs.aria?
-               )
-       abbr.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= abbr.elem
-
-## Defining Instance: <dfn>
-
-       dfn.elem =
-               element dfn { dfn.inner & dfn.attrs }
-       dfn.attrs =
-               (       common.attrs
-               #       dfn.attrs.title included in common.attrs
-               &       common.attrs.aria?
-               )
-       dfn.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= dfn.elem
-
-## Italic: <i>
-
-       i.elem =
-               element i { i.inner & i.attrs }
-       i.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       i.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= i.elem
-
-## Bold: <b>
-
-       b.elem =
-               element b { b.inner & b.attrs }
-       b.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       b.inner =
-               ( common.inner.phrasing )
-
-       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 =
-               element code { code.inner & code.attrs }
-       code.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       code.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= code.elem
-
-## Variable or Placeholder: <var>
-
-       var.elem =
-               element var { var.inner & var.attrs }
-       var.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       var.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= var.elem
-
-## (Sample) Output: <samp>
-
-       samp.elem =
-               element samp { samp.inner & samp.attrs }
-       samp.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       samp.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= samp.elem
-
-## User Input: <kbd>
-
-       kbd.elem =
-               element kbd { kbd.inner & kbd.attrs }
-       kbd.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       kbd.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= kbd.elem
-
-## Superscript: <sup>
-
-       sup.elem =
-               element sup { sup.inner & sup.attrs }
-       sup.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       sup.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= sup.elem
-
-## Subscript: <sub>
-
-       sub.elem =
-               element sub { sub.inner & sub.attrs }
-       sub.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       sub.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= sub.elem
-
-## Quotation: <q>
-
-       q.elem =
-               element q { q.inner & q.attrs }
-       q.attrs =
-               (       common.attrs
-               &       q.attrs.cite?
-               &       common.attrs.aria?
-               )
-               q.attrs.cite =
-                       attribute cite {
-                               common.data.uri
-                       }
-       q.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= q.elem
-
-## Title of Work: <cite>
-
-       cite.elem =
-               element cite { cite.inner & cite.attrs }
-       cite.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       cite.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= cite.elem
-
-## Generic Span: <span>
-
-       span.elem =
-               element span { span.inner & span.attrs }
-       span.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       span.inner =
-               ( common.inner.phrasing ) # REVISIT allow ol and ul?
-
-       common.elem.phrasing |= span.elem
-
-## Bidirectional Override: <bdo>
-
-       bdo.elem =
-               element bdo { bdo.inner & bdo.attrs }
-       bdo.attrs =
-               (       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.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-       br.inner =
-               ( empty )
-
-       common.elem.phrasing |= br.elem
-
-## Line-break opportunity: <wbr>
-
-       wbr.elem =
-               element wbr { wbr.inner & wbr.attrs }
-       wbr.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-       wbr.inner =
-               ( empty )
-
-       common.elem.phrasing |= wbr.elem
diff --git a/packages/html5-schema/rdfa.rnc b/packages/html5-schema/rdfa.rnc
deleted file mode 100644
index 3c849d9..0000000
--- a/packages/html5-schema/rdfa.rnc
+++ /dev/null
@@ -1,285 +0,0 @@
-nonRDFaLite = empty
-# #####################################################################
-##  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 = "2"
-       }
-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 = "\s*([\i-[:]][\c-[:]]*: [^ 
]+)(\s+[\i-[:]][\c-[:]]*: [^ ]+)*\s*"
-                               }
-                               |       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.property?
-                       &       link.attrs.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
-       &       embedded.content.attrs.crossorigin?
-       &       (       common.attrs.aria.role.link
-               |       common.attrs.aria.role.presentation
-               |       common.attrs.aria.role.menuitem
-               )?
-       )
-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.resource
-                       &       link.attrs.href?
-                       )
-                       |
-                       (       common.attrs.rdfa.resource?
-                       &       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.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
-       &       embedded.content.attrs.crossorigin?
-       &       (       common.attrs.aria.role.link
-               |       common.attrs.aria.role.presentation
-               |       common.attrs.aria.role.menuitem
-               )?
-       )
-       common.elem.metadata |= link.rdfa.elem.metadata
-       common.elem.phrasing |= link.rdfa.elem.phrasing
-
-## <meta property=foo content=bar> in head ("name" attribute optional)
-       meta.property.elem =
-               element meta { meta.inner & meta.property.attrs }
-       meta.property.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       meta.name.attrs.name?
-               &       common.attrs.rdfa.property
-               &       meta.name.attrs.content
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-       common.elem.metadata |= meta.property.elem
-
-## <meta property=foo content=bar> in body ("name" attribute disallowed)
-       meta.property-no-name.elem =
-               element meta { meta.inner & meta.property-no-name.attrs }
-       meta.property-no-name.attrs =
-               (       common.attrs.basic
-               &       common.attrs.i18n
-               &       common.attrs.present
-               &       common.attrs.other
-               &       common.attrs.rdfa.property
-               &       meta.name.attrs.content
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-       common.elem.phrasing |= meta.property-no-name.elem
-
-meta.property.attrs &= common.attrs.rdfa.no-content-noproperty
-meta.property-no-name.attrs &= common.attrs.rdfa.no-content-noproperty
-meta.name.attrs &= common.attrs.rdfa.no-content-noproperty
diff --git a/packages/html5-schema/revision.rnc 
b/packages/html5-schema/revision.rnc
deleted file mode 100644
index a357bd4..0000000
--- a/packages/html5-schema/revision.rnc
+++ /dev/null
@@ -1,54 +0,0 @@
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Revision Annotations                  #
-# #####################################################################
-
-## Common Attributes
-
-       edit.attrs.cite =
-               attribute cite {
-                       common.data.uri
-               }
-       edit.attrs.datetime =
-               attribute datetime {
-                       common.data.datetime | common.data.date
-               }
-
-## Inserts: <ins>
-
-       ins.elem.flow =
-               element ins { ins.inner.flow & ins.attrs }
-       ins.elem.phrasing =
-               element ins { ins.inner.phrasing & ins.attrs }
-       ins.attrs =
-               (       common.attrs
-               &       edit.attrs.cite?
-               &       edit.attrs.datetime?
-               &       common.attrs.aria?
-               )
-       ins.inner.flow =
-               ( common.inner.transparent.flow )
-       ins.inner.phrasing =
-               ( common.inner.phrasing )
-
-       common.elem.flow |= ins.elem.flow
-       common.elem.phrasing |= ins.elem.phrasing
-
-## Deletions: <del>
-
-       del.elem.flow =
-               element del { del.inner.flow & del.attrs }
-       del.elem.phrasing =
-               element del { del.inner.phrasing & del.attrs }
-       del.attrs =
-               (       common.attrs
-               &       edit.attrs.cite?
-               &       edit.attrs.datetime?
-               &       common.attrs.aria?
-               )
-       del.inner.flow =
-               ( common.inner.transparent.flow )
-       del.inner.phrasing =
-               ( common.inner.phrasing )
-
-       common.elem.flow |= del.elem.flow
-       common.elem.phrasing |= del.elem.phrasing
diff --git a/packages/html5-schema/ruby.rnc b/packages/html5-schema/ruby.rnc
deleted file mode 100644
index dfd0e3f..0000000
--- a/packages/html5-schema/ruby.rnc
+++ /dev/null
@@ -1,81 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-namespace local = ""
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Ruby                                  #
-# #####################################################################
-
-#######################################################################
-
-## Ruby Annotation: <ruby>
-
-       ruby.elem =
-               element ruby { ruby.inner & ruby.attrs }
-       ruby.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       ruby.inner =
-               (       (       common.inner.phrasing
-                       |       rb.elem
-                       )+
-               ,       (       (       rt.elem
-                               |       rtc.elem
-                               )+
-                               |       (       rp.elem
-                                       ,       (       rt.elem
-                                               |       rtc.elem
-                                               )+
-                                       ,       rp.elem
-                                       )
-                       )
-               )+
-
-       common.elem.phrasing |= ruby.elem
-
-## Ruby Text: <rt>
-
-       rt.elem =
-               element rt { rt.inner & rt.attrs }
-       rt.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       rt.inner =
-               ( common.inner.phrasing )
-
-## Ruby Text Container: <rtc>
-
-       rtc.elem =
-               element rtc { rtc.inner & rtc.attrs }
-       rtc.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       rtc.inner =
-               (       common.inner.phrasing
-                       |       rt.elem
-                       |       rp.elem
-               )*
-
-## Ruby Base: <rb>
-
-       rb.elem =
-               element rb { rb.inner & rb.attrs }
-       rb.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       rb.inner =
-               ( common.inner.phrasing )
-
-## Ruby Parenthesis: <rp>
-
-       rp.elem =
-               element rp { rp.inner & rp.attrs }
-       rp.attrs =
-               (       common.attrs
-               &       common.attrs.aria?
-               )
-       rp.inner =
-               ( common.inner.phrasing )
diff --git a/packages/html5-schema/sectional.rnc 
b/packages/html5-schema/sectional.rnc
deleted file mode 100644
index afbac8f..0000000
--- a/packages/html5-schema/sectional.rnc
+++ /dev/null
@@ -1,172 +0,0 @@
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Sectioning Markup                     #
-# #####################################################################
-
-# #####################################################################
-## Headings
-
-## Heading (Rank 1): <h1>
-
-       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>
-
-       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>
-
-       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>
-
-       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>
-
-       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>
-
-       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>
-
-       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>
-
-       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>
-
-       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
diff --git a/packages/html5-schema/structural.rnc 
b/packages/html5-schema/structural.rnc
deleted file mode 100644
index 410f34d..0000000
--- a/packages/html5-schema/structural.rnc
+++ /dev/null
@@ -1,135 +0,0 @@
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Block Markup Added in HTML5           #
-# #####################################################################
-
-## Section: <section>
-
-       section.elem =
-               element section { section.inner & section.attrs }
-       section.attrs =
-               (       common.attrs
-               &       (       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.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.main
-                       |       common.attrs.aria.landmark.search
-                       )?
-               )
-       section.inner =
-               ( common.inner.flow )
-
-       common.elem.flow |= section.elem
-
-## Navigational Links: <nav>
-
-       nav.elem =
-               element nav { nav.inner & nav.attrs }
-       nav.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.implicit.navigation
-                       |       common.attrs.aria.landmark.navigation
-                       )?
-               )
-       nav.inner =
-               ( common.inner.flow )
-
-       common.elem.flow |= nav.elem
-
-## Article: <article>
-
-       article.elem =
-               element article { article.inner & article.attrs }
-       article.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.implicit.article
-                       |       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*
-               ,       common.inner.flow 
-               )
-               
-       common.elem.flow |= article.elem
-
-## Tangential Aside: <aside>
-
-       aside.elem =
-               element aside { aside.inner & aside.attrs }
-       aside.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.implicit.complementary
-                       |       common.attrs.aria.landmark.note
-                       |       common.attrs.aria.landmark.complementary
-                       |       common.attrs.aria.landmark.search
-                       |       common.attrs.aria.role.presentation
-                       )?
-               )
-       aside.inner =
-               (       style.elem*
-               ,       common.inner.flow 
-               )
-
-       common.elem.flow |= aside.elem
-
-## Header: <header>
-
-       header.elem =
-               element header { header.inner & header.attrs }
-       header.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.implicit.banner
-                       |       common.attrs.aria.landmark.banner
-                       |       common.attrs.aria.role.group
-                       |       common.attrs.aria.role.presentation
-                       )?
-               )
-       header.inner =
-               ( common.inner.flow )
-
-       common.elem.flow |= header.elem
-
-## Footer: <footer>
-
-       footer.elem =
-               element footer { footer.inner & footer.attrs }
-       footer.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.implicit.contentinfo
-                       |       common.attrs.aria.landmark.contentinfo
-                       |       common.attrs.aria.role.group
-                       |       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.main
-                       |       common.attrs.aria.landmark.main
-                       )?
-               )
-       main.inner =
-               ( common.inner.flow )
-
-       common.elem.flow |= main.elem
diff --git a/packages/html5-schema/tables.rnc b/packages/html5-schema/tables.rnc
deleted file mode 100644
index b6021da..0000000
--- a/packages/html5-schema/tables.rnc
+++ /dev/null
@@ -1,244 +0,0 @@
-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 )
diff --git a/packages/html5-schema/web-components.rnc 
b/packages/html5-schema/web-components.rnc
deleted file mode 100644
index bf45715..0000000
--- a/packages/html5-schema/web-components.rnc
+++ /dev/null
@@ -1,43 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Web Components
-# #####################################################################
-
-## Templates: <template>
-
-       template.elem =
-               element template { template.inner & template.attrs }
-       template.attrs =
-               ( common.attrs )
-       template.inner =
-               (       common.inner.metadata
-               |       common.inner.flow
-               |       ol.inner
-               |       ul.inner
-               |       dl.inner
-               |       figure.inner
-               |       ruby.inner
-               |       object.inner.flow
-               |       object.inner.phrasing
-               |       video.inner.flow
-               |       video.inner.phrasing
-               |       audio.inner.flow
-               |       audio.inner.phrasing
-               |       table.inner
-               |       colgroup.inner
-               |       thead.inner
-               |       tbody.inner
-               |       tfoot.inner
-               |       tr.inner
-               |       fieldset.inner
-               |       select.inner
-               |       details.inner
-               |       menu.popup.inner
-               )
-       common.elem.metadata |= template.elem
-       common.elem.phrasing |= template.elem
-       common.elem.script-supporting |= template.elem
-
-# also allow <script> wherever <template> is allowed
-       common.elem.script-supporting |= script.elem
diff --git a/packages/html5-schema/web-forms-scripting.rnc 
b/packages/html5-schema/web-forms-scripting.rnc
deleted file mode 100644
index 63fe1c4..0000000
--- a/packages/html5-schema/web-forms-scripting.rnc
+++ /dev/null
@@ -1,27 +0,0 @@
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Web Forms 1.0 Scripting               #
-# #####################################################################
-
-       scripting.attr.form.select =
-               attribute onselect { string }
-       scripting.attr.form.change =
-               attribute onchange { string }
-
-#      input.text.attrs &=
-#              (       scripting.attr.form.select?
-#              )
-
-#      shared-form.attrs &=
-#              (       scripting.attr.form.change?
-#              )
-
-#      form.attrs &=
-#              (       scripting.attr.form.reset?
-#              &       scripting.attr.form.submit?
-#              )
-               scripting.attr.form.submit =
-                       attribute onsubmit { string }
-               scripting.attr.form.reset =
-                       attribute onreset { string } 
-               
-               
diff --git a/packages/html5-schema/web-forms.rnc 
b/packages/html5-schema/web-forms.rnc
deleted file mode 100644
index c58e652..0000000
--- a/packages/html5-schema/web-forms.rnc
+++ /dev/null
@@ -1,607 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Web Forms 1.0 markup                  #
-# #####################################################################
-
-## Shared attributes for form controls
-
-       common-form.attrs =
-               (       common-form.attrs.name?
-               &       common-form.attrs.disabled?
-               )
-               
-       common-form.attrs.name = 
-               attribute name {
-                       form.data.nonemptystring
-               }
-
-       common-form.attrs.disabled = 
-               attribute disabled {
-                       w:string "disabled" | w:string ""
-               }
-
-       shared-form.attrs.readonly = 
-               attribute readonly {
-                       w:string "readonly" | w:string ""
-               }
-
-       shared-form.attrs.maxlength = 
-               attribute maxlength {
-                       common.data.integer.non-negative
-               }
-
-       shared-form.attrs.size = 
-               attribute size {
-                       common.data.integer.positive
-               }
-       
-       # REVISIT tabindex goes in common.attrs
-
-## Shared attributes for <input>
-       
-       input.attrs.checked = 
-               attribute checked {
-                       w:string "checked" | w:string ""
-               }
-
-## Text Field: <input type='text'>
-
-       input.text.elem = 
-               element input { input.text.attrs }
-       input.text.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.text.attrs.type?
-               &       shared-form.attrs.maxlength? 
-               &       shared-form.attrs.readonly?
-               &       shared-form.attrs.size?
-               &       input.text.attrs.value? 
-               &       (       common.attrs.aria.implicit.textbox
-                       |       common.attrs.aria.implicit.combobox
-                       |       common.attrs.aria.role.textbox
-                       |       common.attrs.aria.role.combobox
-                       )?
-               )
-               input.text.attrs.type = 
-                       attribute type {
-                               w:string "text"
-                       }
-               input.text.attrs.value =
-                       attribute value {
-                               form.data.stringwithoutlinebreaks
-                       }
-               
-       input.elem = input.text.elem
-
-## Password Field: <input type='password'>
-
-       input.password.elem = 
-               element input { input.password.attrs }
-       input.password.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.password.attrs.type
-               &       shared-form.attrs.maxlength? 
-               &       shared-form.attrs.readonly? 
-               &       shared-form.attrs.size?
-               &       input.password.attrs.value? 
-               &       (       common.attrs.aria.implicit.textbox
-                       |       common.attrs.aria.role.textbox
-                       )?
-               )
-               input.password.attrs.type = 
-                       attribute type {
-                               w:string "password"
-                       }
-               input.password.attrs.value =
-                       attribute value {
-                               form.data.stringwithoutlinebreaks
-                       }
-               
-       input.elem |= input.password.elem
-               
-## Checkbox: <input type='checkbox'>
-
-       input.checkbox.elem = 
-               element input { input.checkbox.attrs }
-       input.checkbox.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.checkbox.attrs.type
-               &       input.attrs.checked? 
-               &       input.checkbox.attrs.value? 
-               &       (       common.attrs.aria.implicit.checkbox
-                       |       common.attrs.aria.role.checkbox
-                       |       common.attrs.aria.role.menuitemcheckbox
-                       |       common.attrs.aria.role.switch
-                       )?
-               )
-               input.checkbox.attrs.type = 
-                       attribute type {
-                               w:string "checkbox"
-                       }
-               input.checkbox.attrs.value =
-                       attribute value {
-                               string #REVISIT require non-empty value?
-                       }
-               
-       input.elem |= input.checkbox.elem
-       
-## Radiobutton: <input type='radio'>
-
-       input.radio.elem = 
-               element input { input.radio.attrs }
-       input.radio.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.radio.attrs.type
-               &       input.attrs.checked? 
-               &       input.radio.attrs.value? 
-               &       (       common.attrs.aria.implicit.radio
-                       |       common.attrs.aria.role.radio
-                       |       common.attrs.aria.role.menuitemradio
-                       )?
-               )
-               input.radio.attrs.type = 
-                       attribute type {
-                               w:string "radio"
-                       }
-               input.radio.attrs.value =
-                       attribute value {
-                               string #REVISIT require non-empty value?
-                       }
-               
-       input.elem |= input.radio.elem
-       
-## Scripting Hook Button: <input type='button'>
-
-       input.button.elem = 
-               element input { input.button.attrs }
-       input.button.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.button.attrs.type
-               &       input.button.attrs.value? 
-               &       (       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
-                       |       common.attrs.aria.role.switch
-                       )?
-               )
-               input.button.attrs.type = 
-                       attribute type {
-                               w:string "button"
-                       }
-               input.button.attrs.value =
-                       attribute value {
-                               string #REVISIT require non-empty value?
-                       }
-               
-       input.elem |= input.button.elem
-       #REVISIT should this be enabled by a scripting module only?
-       
-## Submit Button: <input type='submit'>
-
-       input.submit.elem = 
-               element input { input.submit.attrs }
-       input.submit.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.submit.attrs.type
-               &       input.submit.attrs.value? 
-               &       (       common.attrs.aria.implicit.button
-                       |       common.attrs.aria.role.button
-                       )?
-               )
-               input.submit.attrs.type = 
-                       attribute type {
-                               w:string "submit"
-                       }
-               input.submit.attrs.value =
-                       attribute value {
-                               string #REVISIT require non-empty value?
-                       }
-               
-       input.elem |= input.submit.elem
-               
-## Reset Button: <input type='reset'>
-
-       input.reset.elem = 
-               element input { input.reset.attrs }
-       input.reset.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.reset.attrs.type
-               &       input.reset.attrs.value? 
-               &       (       common.attrs.aria.implicit.button
-                       |       common.attrs.aria.role.button
-                       )?
-               )
-               input.reset.attrs.type = 
-                       attribute type {
-                               w:string "reset"
-                       }
-               input.reset.attrs.value =
-                       attribute value {
-                               string #REVISIT require non-empty value?
-                       }
-               
-       input.elem |= input.reset.elem
-       # REVISIT does reset make sense outside a form?
-               
-## File Upload: <input type='file'>
-
-       input.file.elem = 
-               element input { input.file.attrs }
-       input.file.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.file.attrs.type
-               &       input.file.attrs.accept?
-               &       common.attrs.aria?
-               )
-               input.file.attrs.type = 
-                       attribute type {
-                               w:string "file"
-                       }
-               input.file.attrs.accept = 
-                       attribute accept {
-                               form.data.mimetypelist
-                       }
-
-       input.elem |= input.file.elem
-       
-## Hidden String: <input type='hidden'>
-
-       input.hidden.elem = 
-               element input { input.hidden.attrs }
-       input.hidden.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.hidden.attrs.type
-               &       input.hidden.attrs.value? 
-               &       common.attrs.aria?
-               )
-               input.hidden.attrs.type = 
-                       attribute type {
-                               w:string "hidden"
-                       }
-               input.hidden.attrs.value =
-                       attribute value {
-                               string
-                       }
-               
-       input.elem |= input.hidden.elem
-               
-## Image Submit Button: <input type='image'>
-
-       input.image.elem = 
-               element input { input.image.attrs }
-       input.image.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.image.attrs.type
-               &       input.image.attrs.alt 
-               &       input.image.attrs.src? 
-               &       (       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
-                       |       common.attrs.aria.role.switch
-                       )?
-               )       
-               input.image.attrs.type = 
-                       attribute type {
-                               w:string "image"
-                       }
-               input.image.attrs.alt = 
-                       attribute alt {
-                               form.data.nonemptystring
-                       }
-               input.image.attrs.src = 
-                       attribute src {
-                               common.data.uri.non-empty
-                       }
-       
-       input.elem |= input.image.elem
-       
-       common.elem.phrasing |= input.elem
-
-## Text Area: <textarea>
-
-       textarea.elem =
-               element textarea { textarea.inner & textarea.attrs }
-       textarea.attrs =
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-form.attrs.readonly?
-               &       textarea.attrs.rows-and-cols-wf1
-               &       (       common.attrs.aria.implicit.textbox
-                       |       common.attrs.aria.role.textbox
-                       )?
-               #FIXME onfocus, onblur, onselect,onchange
-               )
-               # This is ugly. 
-               textarea.attrs.rows-and-cols-wf1 = 
-                       textarea.attrs.rows-and-cols-wf1.inner  
-               textarea.attrs.rows-and-cols-wf1.inner =
-                       (       textarea.attrs.cols
-                       &       textarea.attrs.rows
-                       )
-               textarea.attrs.cols = 
-                       attribute cols {
-                               common.data.integer.positive
-                       }
-               textarea.attrs.rows = 
-                       attribute rows {
-                               common.data.integer.positive
-                       }
-       textarea.inner =
-               ( text )
-
-       common.elem.phrasing |= textarea.elem
-
-# Due to limitations with interleave, handling single/multiple selection
-# enforcement in RELAX NG seems to be possible but really awkward.
-# Tried it. Leaving it to Schematron.
-
-## Select menu option: <option selected>
-
-       option.elem =
-               element option { option.inner & option.attrs }
-       option.attrs =
-               (       common.attrs
-               &       common-form.attrs.disabled?
-               &       option.attrs.selected?
-               &       option.attrs.label?
-               &       option.attrs.value?
-               &       (       common.attrs.aria.implicit.option
-                       |       common.attrs.aria.role.option
-                       )?
-               )
-               option.attrs.selected =
-                       attribute selected {
-                               w:string "selected" | w:string ""
-                       }
-               option.attrs.label =
-                       attribute label {
-                               form.data.nonemptystring
-                       }               
-               option.attrs.value =
-                       attribute value {
-                               string
-                       }               
-       option.inner =
-               ( text )
-
-## Option Group: <optgroup>
-
-       optgroup.elem =
-               element optgroup { optgroup.inner & optgroup.attrs }
-       optgroup.attrs = 
-               (       common.attrs
-               &       optgroup.attrs.label
-               &       common-form.attrs.disabled?
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               optgroup.attrs.label =
-                       attribute label {
-                               string
-                       }
-       optgroup.inner =
-               (       option.elem*
-               &       common.elem.script-supporting*
-               )
-
-## Selection Menu: <select>
-
-       select.elem =
-               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.implicit.listbox
-                       |       common.attrs.aria.role.listbox # 
aria-multiselectable depends on "multiple" value; check in assertions
-                       )?
-               )
-               select.attrs.size =
-                       attribute size {
-                               common.data.integer.positive
-                       }
-               select.attrs.multiple =
-                       attribute multiple {
-                               w:string "multiple" | w:string ""
-                       }
-       select.inner =
-               (       optgroup.elem*
-               &       option.elem*
-               &       common.elem.script-supporting*
-               )
-
-       common.elem.phrasing |= select.elem
-       
-## Shared Definitions for Complex Button
-       
-       button.attrs.value =
-               attribute value {
-                       string
-               }
-       button.inner = 
-               ( common.inner.phrasing )
-       
-## Complex Submit Button: <button type='submit'>
-
-       button.submit.elem =
-               element button { button.inner & button.submit.attrs }   
-       button.submit.attrs =
-               (       common.attrs
-               &       common-form.attrs
-               &       button.submit.attrs.type?
-               &       button.attrs.value?
-               &       (       common.attrs.aria.implicit.button
-                       |       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.radio
-                       )?
-               )
-               button.submit.attrs.type =
-                       attribute type {
-                               w:string "submit"
-                       }
-
-       button.elem = button.submit.elem
-       
-## Complex Reset Button: <button type='reset'>
-
-       button.reset.elem =
-               element button { button.inner & button.reset.attrs }    
-       button.reset.attrs =
-               (       common.attrs
-               &       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.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.radio
-                       |       common.attrs.aria.role.switch
-                       )?
-               )
-               button.reset.attrs.type =
-                       attribute type {
-                               w:string "reset"
-                       }
-
-       button.elem |= button.reset.elem
-       
-## Complex Push Button: <button type='button'>
-
-       button.button.elem =
-               element button { button.inner & button.button.attrs }   
-       button.button.attrs =
-               (       common.attrs
-               &       common-form.attrs
-               &       button.button.attrs.type
-               &       button.attrs.value? #REVISIT I guess this still affects 
the DOM
-               &       (       common.attrs.aria.implicit.button
-                       |       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.radio
-                       |       common.attrs.aria.role.switch
-                       )?
-               )
-               button.button.attrs.type =
-                       attribute type {
-                               w:string "button"
-                       }
-
-       button.elem |= button.button.elem
-
-       common.elem.phrasing |= button.elem
-
-## Form: <form>
-
-       form.elem =
-               element form { form.inner & form.attrs }
-       form.attrs =
-               (       common.attrs
-               &       form.attrs.action? #REVISIT Should this be required 
anyway?
-               &       form.attrs.method?
-               &       form.attrs.enctype?
-               &       common-form.attrs.name?
-               &       form.attrs.accept-charset?
-               &       (       common.attrs.aria.implicit.form
-                       |       common.attrs.aria.landmark.form
-                       |       common.attrs.aria.role.search
-                       |       common.attrs.aria.role.presentation
-                       )?
-               )
-               form.attrs.action =
-                       attribute action {
-                               common.data.uri.non-empty
-                       }
-               form.attrs.method =
-                       attribute method {
-                               form.attrs.method.data
-                       }
-                       form.attrs.method.data = 
-                               ( w:string "get" | w:string "post" )
-               form.attrs.enctype =
-                       attribute enctype {
-                               form.attrs.enctype.data
-                       }
-                       form.attrs.enctype.data = 
-                               (       w:string 
"application/x-www-form-urlencoded" 
-                               |       w:string "multipart/form-data"
-                               )
-               form.attrs.accept-charset =
-                       attribute accept-charset {
-                               form.data.charsetlist
-                       }       
-       form.inner =
-               ( common.inner.flow )
-
-       common.elem.flow |= form.elem
-
-## Fieldset: <fieldset>
-
-       fieldset.elem =
-               element fieldset { fieldset.inner & fieldset.attrs }
-       fieldset.attrs =
-               (       common.attrs
-               &       (       common.attrs.aria.implicit.group
-                       |       common.attrs.aria
-                       )?
-               )
-       fieldset.inner =
-               (       legend.elem? #REVISIT should this be required?
-               ,       common.inner.flow
-               )
-
-       common.elem.flow |= fieldset.elem
-       
-## Label: <label>
-
-       label.elem =
-               element label { label.inner & label.attrs }
-       label.attrs =
-               (       common.attrs
-               &       label.attrs.for?
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               label.attrs.for =
-                       attribute for {
-                               common.data.idref
-                       }
-       label.inner =
-               ( common.inner.phrasing ) #REVISIT making obvious guess
-
-       common.elem.phrasing |= label.elem
-
diff --git a/packages/html5-schema/web-forms2-scripting.rnc 
b/packages/html5-schema/web-forms2-scripting.rnc
deleted file mode 100644
index e0f6a38..0000000
--- a/packages/html5-schema/web-forms2-scripting.rnc
+++ /dev/null
@@ -1,9 +0,0 @@
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Web Forms 2.0 Scripting               #
-# #####################################################################
-
-#      output.attrs &=
-#              (       scripting.attr.form.formchange?
-#              &       scripting.attr.form.forminput?
-#              &       scripting.attr.form.change?
-#              )
diff --git a/packages/html5-schema/web-forms2.rnc 
b/packages/html5-schema/web-forms2.rnc
deleted file mode 100644
index ebd3ee4..0000000
--- a/packages/html5-schema/web-forms2.rnc
+++ /dev/null
@@ -1,789 +0,0 @@
-datatypes w = "http://whattf.org/datatype-draft";
-
-# #####################################################################
-##  RELAX NG Schema for HTML 5: Web Forms 2.0 markup                  #
-# #####################################################################
-
-## Shared attributes for form controls
-
-       common-form.attrs &=
-               ( common-form.attrs.form? )
-
-       common-form.attrs.form |= 
-               attribute form {
-                       common.data.idref
-               }
-
-       shared-form.attrs.formaction =
-               attribute formaction {
-                       common.data.uri.non-empty
-               }
-
-       shared-form.attrs.formenctype =
-               attribute formenctype {
-                       shared-form.attrs.formenctype.data
-               }
-               shared-form.attrs.formenctype.data = 
-                       (       w:string "application/x-www-form-urlencoded" 
-                       |       w:string "multipart/form-data"
-                       |       w:string "text/plain"
-                       )
-
-       shared-form.attrs.formmethod =
-               attribute formmethod {
-                       shared-form.attrs.formmethod.data
-               }
-               shared-form.attrs.formmethod.data = 
-                       ( w:string "get"
-                       | w:string "post"
-                       )
-
-       shared-form.attrs.formtarget = 
-               attribute formtarget {
-                       common.data.browsing-context-or-keyword
-               }
-
-       shared-form.attrs.formnovalidate = 
-               attribute formnovalidate {
-                       w:string "formnovalidate" | w:string ""
-               }
-
-       shared-form.attrs.autofocus = 
-               attribute autofocus {
-                       w:string "autofocus" | w:string ""
-               }
-       
-       shared-form.attrs.pattern = 
-               attribute pattern {
-                       form.data.pattern
-               }
-
-       shared-form.attrs.template = 
-               attribute template {
-                       common.data.idref
-               }
-
-       shared-form.attrs.required = 
-               attribute required {
-                       w:string "required" | w:string ""
-               }
-
-       shared-form.attrs.placeholder = 
-               attribute placeholder {
-                       form.data.stringwithoutlinebreaks
-               }
-
-       shared-form.attrs.dirname = 
-               attribute dirname {
-                       form.data.nonemptystring
-               }
-
-       shared-form.attrs.inputmode =
-               attribute inputmode {
-                       string
-               }
-
-       shared-form.attrs.minlength =
-               attribute minlength {
-                       common.data.integer.non-negative
-               }
-
-## Shared attributes for <input>
-               
-       shared-input.attrs =
-               (       input.attrs.autocomplete?
-               &       shared-form.attrs.autofocus?
-               &       input.attrs.list?
-               &       shared-form.attrs.maxlength?
-               &       shared-form.attrs.minlength?
-               &       shared-form.attrs.pattern?
-               &       shared-form.attrs.placeholder?
-               &       shared-form.attrs.readonly?
-               &       shared-form.attrs.required?
-               &       shared-form.attrs.size?
-               )
-
-       input.attrs.autocomplete = 
-               attribute autocomplete {
-                       w:string "on" | w:string "off"
-               }
-       
-       input.attrs.list = 
-               attribute list {
-                       common.data.idref
-               }
-       
-       input.attrs.step.float = 
-               attribute step {
-                       w:string "any" | common.data.float.positive
-               }
-       
-       input.attrs.step.integer = 
-               attribute step {
-                       w:string "any" | common.data.integer.positive 
-               }
-       
-       input.attrs.multiple = 
-               attribute multiple {
-                       w:string "multiple" | w:string ""
-               }
-               
-## Text Field: <input type='text'>, Extensions
-
-       input.text.attrs &=
-               (       input.attrs.autocomplete?
-               &       shared-form.attrs.autofocus?
-               &       shared-form.attrs.dirname?
-               &       input.attrs.list?
-               &       shared-form.attrs.pattern?
-               &       shared-form.attrs.required?
-               &       shared-form.attrs.placeholder?
-               &       shared-form.attrs.inputmode?
-               &       shared-form.attrs.minlength?
-               )
-
-## Password Field: <input type='password'>, Extensions
-
-       input.password.attrs &=
-               (       input.attrs.autocomplete?
-               &       shared-form.attrs.autofocus?
-               &       input.attrs.list?
-               &       shared-form.attrs.pattern?
-               &       shared-form.attrs.placeholder?
-               &       shared-form.attrs.required?
-               &       shared-form.attrs.minlength?
-               )
-
-## Checkbox <input type='checkbox'>, Extensions
-
-       input.checkbox.attrs &=
-               (       shared-input.attrs      )
-
-## Radiobutton: <input type='radio'>, Extensions
-
-       input.radio.attrs &=
-               (       shared-input.attrs      )
-
-## Scripting Hook Button: <input type='button'>, Extensions
-
-       input.button.attrs &=
-               (       shared-input.attrs      )
-
-## Submit Button: <input type='submit'>, Extensions
-
-       input.submit.attrs &=
-               (       shared-input.attrs
-               &       shared-form.attrs.formaction?
-               &       shared-form.attrs.formenctype?
-               &       shared-form.attrs.formmethod?
-               &       shared-form.attrs.formtarget?
-               &       shared-form.attrs.formnovalidate?
-               )
-
-## Reset Button: <input type='reset'>, Extensions
-
-       input.reset.attrs &=
-               (       shared-input.attrs      )
-
-## File Upload: <input type='file'>, Extensions
-
-       input.file.attrs &=
-               (       shared-input.attrs
-               &       input.attrs.multiple?
-               )
-
-## Image Submit Button: <input type='image'>, Extensions
-
-       input.image.attrs &=
-               (       shared-input.attrs
-               &       shared-form.attrs.formaction?
-               &       shared-form.attrs.formenctype?
-               &       shared-form.attrs.formmethod?
-               &       shared-form.attrs.formtarget?
-               &       shared-form.attrs.formnovalidate?
-               &       input.image.attrs.height?
-               &       input.image.attrs.width?
-               )       
-               input.image.attrs.height =
-                       attribute height {
-                               common.data.integer.non-negative
-                       }
-               input.image.attrs.width =
-                       attribute width {
-                               common.data.integer.non-negative
-                       }
-
-## Global Date and Time: <input type='datetime'>
-
-       input.datetime.elem = 
-               element input { input.datetime.attrs }
-       input.datetime.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.datetime.attrs.type
-               &       input.datetime.attrs.min?
-               &       input.datetime.attrs.max?
-               &       input.attrs.step.float?
-               &       input.datetime.attrs.value?
-               &       common.attrs.aria?
-               )       
-               input.datetime.attrs.type = 
-                       attribute type {
-                               w:string "datetime"
-                       }
-               input.datetime.attrs.min =
-                       attribute min {
-                               common.data.datetime
-                       }
-               input.datetime.attrs.max =
-                       attribute max {
-                               common.data.datetime
-                       }       
-               input.datetime.attrs.value =
-                       attribute value {
-                               w:string "" | common.data.datetime
-                       }
-               
-       input.elem |= input.datetime.elem
-
-## Date and Time with No Time Zone Information: <input type='datetime-local'>
-
-       input.datetime-local.elem = 
-               element input { input.datetime-local.attrs }
-       input.datetime-local.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.datetime-local.attrs.type
-               &       input.datetime-local.attrs.min?
-               &       input.datetime-local.attrs.max?
-               &       input.attrs.step.float?
-               &       input.datetime-local.attrs.value?
-               &       common.attrs.aria?
-               )       
-               input.datetime-local.attrs.type = 
-                       attribute type {
-                               w:string "datetime-local"
-                       }
-               input.datetime-local.attrs.min =
-                       attribute min {
-                               form.data.datetime-local
-                       }
-               input.datetime-local.attrs.max =
-                       attribute max {
-                               form.data.datetime-local                        
-                       }       
-               input.datetime-local.attrs.value =
-                       attribute value {
-                               w:string "" | form.data.datetime-local
-                       }
-               
-       input.elem |= input.datetime-local.elem
-
-## Date: <input type='date'>
-
-       input.date.elem = 
-               element input { input.date.attrs }
-       input.date.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.date.attrs.type
-               &       input.date.attrs.min?
-               &       input.date.attrs.max?
-               &       input.attrs.step.integer?
-               &       input.date.attrs.value?
-               &       common.attrs.aria?
-               )       
-               input.date.attrs.type = 
-                       attribute type {
-                               w:string "date"
-                       }
-               input.date.attrs.min =
-                       attribute min {
-                               form.data.date
-                       }
-               input.date.attrs.max =
-                       attribute max {
-                               form.data.date                  
-                       }       
-               input.date.attrs.value =
-                       attribute value {
-                               w:string "" | form.data.date
-                       }
-               
-       input.elem |= input.date.elem
-
-## Year and Month: <input type='month'>
-
-       input.month.elem = 
-               element input { input.month.attrs }
-       input.month.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.month.attrs.type
-               &       input.month.attrs.min?
-               &       input.month.attrs.max?
-               &       input.attrs.step.integer?
-               &       input.month.attrs.value?
-               &       common.attrs.aria?
-               )       
-               input.month.attrs.type = 
-                       attribute type {
-                               w:string "month"
-                       }
-               input.month.attrs.min =
-                       attribute min {
-                               form.data.month
-                       }
-               input.month.attrs.max =
-                       attribute max {
-                               form.data.month                 
-                       }       
-               input.month.attrs.value =
-                       attribute value {
-                               w:string "" | form.data.month
-                       }
-               
-       input.elem |= input.month.elem
-
-## Time without Time Zone Information: <input type='time'>
-
-       input.time.elem = 
-               element input { input.time.attrs }
-       input.time.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.time.attrs.type
-               &       input.time.attrs.min?
-               &       input.time.attrs.max?
-               &       input.attrs.step.float?
-               &       input.time.attrs.value?
-               &       common.attrs.aria?
-               )       
-               input.time.attrs.type = 
-                       attribute type {
-                               w:string "time"
-                       }
-               input.time.attrs.min =
-                       attribute min {
-                               form.data.time
-                       }
-               input.time.attrs.max =
-                       attribute max {
-                               form.data.time                  
-                       }       
-               input.time.attrs.value =
-                       attribute value {
-                               w:string "" | form.data.time
-                       }
-               
-       input.elem |= input.time.elem
-
-## Year and Week: <input type='week'>
-
-       input.week.elem = 
-               element input { input.week.attrs }
-       input.week.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.week.attrs.type
-               &       input.week.attrs.min?
-               &       input.week.attrs.max?
-               &       input.attrs.step.integer?
-               &       input.week.attrs.value?
-               &       common.attrs.aria?
-               )       
-               input.week.attrs.type = 
-                       attribute type {
-                               w:string "week"
-                       }
-               input.week.attrs.min =
-                       attribute min {
-                               form.data.week
-                       }
-               input.week.attrs.max =
-                       attribute max {
-                               form.data.week                  
-                       }       
-               input.week.attrs.value =
-                       attribute value {
-                               w:string "" | form.data.week
-                       }
-               
-       input.elem |= input.week.elem
-
-## Number: <input type='number'>
-
-       input.number.elem = 
-               element input { input.number.attrs }
-       input.number.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.number.attrs.type
-               &       input.number.attrs.min?
-               &       input.number.attrs.max?
-               &       input.attrs.step.float?
-               &       input.number.attrs.value?
-               &       (       common.attrs.aria.implicit.spinbutton
-                       |       common.attrs.aria.role.spinbutton
-                       )?
-               )       
-               input.number.attrs.type = 
-                       attribute type {
-                               w:string "number"
-                       }
-               input.number.attrs.min =
-                       attribute min {
-                               common.data.float
-                       }
-               input.number.attrs.max =
-                       attribute max {
-                               common.data.float                       
-                       }       
-               input.number.attrs.value =
-                       attribute value {
-                               w:string "" | common.data.float
-                       }
-               
-       input.elem |= input.number.elem
-
-## Imprecise Number: <input type='range'>
-
-       input.range.elem = 
-               element input { input.range.attrs }
-       input.range.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.range.attrs.type
-               &       input.range.attrs.min?
-               &       input.range.attrs.max?
-               &       input.attrs.step.float?
-               &       input.range.attrs.value?
-               &       (       common.attrs.aria.implicit.slider
-                       |       common.attrs.aria.role.slider
-                       )?
-               )       
-               input.range.attrs.type = 
-                       attribute type {
-                               w:string "range"
-                       }
-               input.range.attrs.min =
-                       attribute min {
-                               common.data.float
-                       }
-               input.range.attrs.max =
-                       attribute max {
-                               common.data.float                       
-                       }       
-               input.range.attrs.value =
-                       attribute value {
-                               common.data.float
-                       }
-               
-       input.elem |= input.range.elem
-
-## Email Address: <input type='email'>
-
-       input.email.elem = 
-               element input { input.email.attrs }     
-       input.email.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.email.attrs.type
-               &       (       (       input.attrs.multiple
-                               &       input.email.attrs.value.multiple?
-                               )
-                       |       input.email.attrs.value.single?
-                       )?
-               &       (       common.attrs.aria.implicit.textbox
-                       |       common.attrs.aria.implicit.combobox
-                       |       common.attrs.aria.role.textbox
-                       |       common.attrs.aria.role.combobox
-                       )?
-               )       
-               input.email.attrs.type = 
-                       attribute type {
-                               w:string "email"
-                       }
-               input.email.attrs.value.single =
-                       attribute value {
-                               form.data.emailaddress
-                       }
-               input.email.attrs.value.multiple =
-                       attribute value {
-                               form.data.emailaddresslist
-                       }
-               
-       input.elem |= input.email.elem
-
-## IRI: <input type='url'>
-
-       input.url.elem = 
-               element input { input.url.attrs }
-       input.url.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.url.attrs.type
-               &       input.url.attrs.value?
-               &       (       common.attrs.aria.implicit.textbox
-                       |       common.attrs.aria.implicit.combobox
-                       |       common.attrs.aria.role.textbox
-                       |       common.attrs.aria.role.combobox
-                       )?
-               )       
-               input.url.attrs.type = 
-                       attribute type {
-                               w:string "url"
-                       }
-               input.url.attrs.value =
-                       attribute value {
-                               w:string "" | common.data.uri.absolute
-                       }
-               
-       input.elem |= input.url.elem
-
-## Search: <input type='search'>
-
-       input.search.elem = 
-               element input { input.search.attrs }
-       input.search.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.search.attrs.type
-               &       input.search.attrs.value?
-               &       shared-form.attrs.dirname?
-               &       (       common.attrs.aria.implicit.textbox
-                       |       common.attrs.aria.implicit.combobox
-                       |       common.attrs.aria.role.textbox
-                       |       common.attrs.aria.role.combobox
-                       )?
-               )       
-               input.search.attrs.type = 
-                       attribute type {
-                               w:string "search"
-                       }
-               input.search.attrs.value =
-                       attribute value {
-                               form.data.stringwithoutlinebreaks
-                       }
-               
-       input.elem |= input.search.elem
-
-## Telephone Number: <input type='tel'>
-
-       input.tel.elem = 
-               element input { input.tel.attrs }       
-       input.tel.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       shared-input.attrs
-               &       input.tel.attrs.type
-               &       input.tel.attrs.value?
-               &       (       common.attrs.aria.implicit.textbox
-                       |       common.attrs.aria.implicit.combobox
-                       |       common.attrs.aria.role.textbox
-                       |       common.attrs.aria.role.combobox
-                       )?
-               )       
-               input.tel.attrs.type = 
-                       attribute type {
-                               w:string "tel"
-                       }
-               input.tel.attrs.value =
-                       attribute value {
-                               form.data.stringwithoutlinebreaks
-                       }
-               
-       input.elem |= input.tel.elem
-
-## Color: <input type='color'>
-
-       input.color.elem = 
-               element input { input.color.attrs }     
-       input.color.attrs = 
-               (       common.attrs
-               &       common-form.attrs
-               &       input.color.attrs.type
-               &       input.color.attrs.value?
-               &       shared-input.attrs
-               &       common.attrs.aria?
-               )       
-               input.color.attrs.type = 
-                       attribute type {
-                               w:string "color"
-                       }
-               input.color.attrs.value =
-                       attribute value {
-                               w:string "" | form.data.color
-                       }
-               
-       input.elem |= input.color.elem
-
-## Form Output: <output>
-
-       output.elem =
-               element output { output.inner & output.attrs }
-       output.attrs =
-               (       common.attrs
-               &       common-form.attrs.name?
-               &       common-form.attrs.form?
-               &       output.attrs.for?
-               &       (       common.attrs.aria.implicit.status
-                       |       common.attrs.aria
-                       )?
-               )
-               output.attrs.for = 
-                       attribute for {
-                               common.data.idrefs #REVISIT spec says 
space--not whitespace
-                       }
-       output.inner =
-               ( common.inner.phrasing )
-
-       common.elem.phrasing |= output.elem
-
-## Text Area: <textarea>, extensions
-
-       textarea.attrs.rows-and-cols-wf1.inner &=
-               notAllowed
-       textarea.attrs.rows-and-cols-wf1 |= 
-               empty
-       textarea.attrs &=
-               (       shared-form.attrs.maxlength?
-               &       shared-form.attrs.minlength?
-               &       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
-                               )
-                       |       (       textarea.attrs.wrap.soft?
-                               &       textarea.attrs.cols?
-                               )
-                       )
-               &       shared-form.attrs.inputmode?
-               )
-               textarea.attrs.wrap.hard =
-                       attribute wrap {
-                               w:string "hard"
-                       }
-               textarea.attrs.wrap.soft =
-                       attribute wrap {
-                               w:string "soft"
-                       }
-
-## List of Prefill Data: <datalist>
-
-       #REVISIT should the options in datalist be non-selectable?
-
-       datalist.elem =
-               element datalist { datalist.inner & datalist.attrs }
-       datalist.inner =
-               ( option.elem* & common.inner.phrasing )
-       datalist.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
-
-## Complex Submit Button: <button type='submit'>, extensions
-
-       button.submit.attrs &=
-               (       shared-form.attrs.formaction? 
-               &       shared-form.attrs.autofocus? 
-               &       shared-form.attrs.formenctype? 
-               &       shared-form.attrs.formmethod? 
-               &       shared-form.attrs.formtarget? 
-               &       shared-form.attrs.formnovalidate? 
-               )
-       
-## Complex Reset Button: <button type='reset'>, extensions
-
-       button.reset.attrs &=
-               ( shared-form.attrs.autofocus? )
-       
-## Complex Push Button: <button type='button'>, extensions
-
-       button.button.attrs &=
-               ( shared-form.attrs.autofocus? )
-
-## Form: <form>, extensions
-       form.attrs &= 
-               (       form.attrs.novalidate?
-               &       form.attrs.target?
-               &       form.attrs.autocomplete?
-               )
-               form.attrs.novalidate = 
-                       attribute novalidate {
-                               w:string "novalidate" | w:string ""
-                       }
-               form.attrs.target = 
-                       attribute target {
-                               common.data.browsing-context-or-keyword
-                       }
-               form.attrs.autocomplete = 
-                       attribute autocomplete {
-                               w:string "on" | w:string "off"
-                       }
-               # REVISIT should this be case-insensitive in conforming XHTML 
documents?
-               form.attrs.enctype.data |= 
-                       ( w:string "text/plain" )
-
-## Fieldset: <fieldset>, extensions
-
-       fieldset.attrs &=
-               ( common-form.attrs )
-
-## Label: <label>, extensions
-
-       label.attrs &=
-               ( common-form.attrs.form? )
-
-## Key-pair generator/input control: <keygen>
-
-       keygen.elem =
-               element keygen { keygen.inner & keygen.attrs }
-       keygen.attrs =
-               (       common.attrs
-               &       keygen.attrs.challenge?
-               &       keygen.attrs.keytype?
-               &       shared-form.attrs.autofocus? 
-               &       common-form.attrs?
-               &       (       common.attrs.aria.role.presentation
-                       |       common.attrs.aria.role.menuitem
-                       )?
-               )
-               keygen.attrs.challenge =
-                       attribute challenge {
-                               string
-                       }
-               keygen.attrs.keytype = 
-                       attribute keytype {
-                               w:string "rsa"
-                       }
-       keygen.inner =
-               ( empty )
-
-       common.elem.phrasing |= keygen.elem
-
-## Selection Menu: <select>, Extensions
-
-       select.attrs &=
-               (       shared-form.attrs.autofocus? 
-               &       shared-form.attrs.required? 
-               )
diff --git a/packages/html5-schema/xhtml5.rnc b/packages/html5-schema/xhtml5.rnc
deleted file mode 100644
index 1c6c524..0000000
--- a/packages/html5-schema/xhtml5.rnc
+++ /dev/null
@@ -1,40 +0,0 @@
-default namespace = "http://www.w3.org/1999/xhtml";
-# #####################################################################
-##  RELAX NG Schema for XHTML 5                                       #
-# #####################################################################
-
-  # To validate an XHTML 5 document, you must first validate against #
-  # this schema and then ALSO validate against assertions.sch        #
-
-# #####################################################################
-## Schema Framework & Parameters
-
-include "common.rnc" {
-       # XHTML flavor #
-               XMLonly = empty
-               HTMLonly = notAllowed
-       # HTML 4 compat #
-               v5only = empty
-}
-
-# #####################################################################
-## Language Definitions
-
-start = html.elem
-
-include "meta.rnc"
-include "phrase.rnc"
-include "block.rnc"
-include "sectional.rnc"
-include "structural.rnc"
-include "revision.rnc"
-include "embed.rnc"
-include "ruby.rnc"
-include "media.rnc"
-include "core-scripting.rnc"
-include "tables.rnc"
-include "form-datatypes.rnc"
-include "web-forms.rnc"
-include "web-forms2.rnc"
-include "applications.rnc"
-include "data.rnc"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]