[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 “bdo” element must have a
- “dir” 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 “img” element must have an
- “alt” 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 “<name/>” element must not
contain any nested
- “<name/>” elements.
- </report>
- </rule>
-
- <rule context='h:label'>
- <report test='ancestor::*[name() = name(current())]'>
- The “<name/>” element must not
contain any nested
- “<name/>” elements.
- </report>
- <report test='count(descendant::h:input
- | descendant::h:button
- | descendant::h:select
- | descendant::h:keygen
- | descendant::h:textarea) > 1'>
- The “label” element may contain
at most one descendant
- “input” element,
- “button” element,
- “select” element,
- or “textarea” 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 “for” attribute of the
“label”
- 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 “<name/>”
must not
- appear as a descendant of the
“address” element.
- </report>
- </rule>
-
- <rule context='h:footer'>
- <report test='ancestor::h:header'>
- The element “footer” must not
- appear as a descendant of the
“header” element.
- </report>
- <report test='ancestor::h:footer'>
- The element “footer” must not
- appear as a descendant of the
“footer” element.
- </report>
- <report test='ancestor::h:address'>
- The element “footer” must not
- appear as a descendant of the
“address” element.
- </report>
- </rule>
-
- <rule context='h:h1|h:h2|h:h3|h:h4|h:h5|h:h6'>
- <report test='ancestor::h:address'>
- The “<name/>” element must not
appear as a
- descendant of the “address”
element.
- </report>
- </rule>
-
- <rule context='h:header'>
- <report test='ancestor::h:footer'>
- The “<name/>” element must not
appear as a
- descendant of the “footer”
element.
- </report>
- <report test='ancestor::h:address'>
- The “<name/>” element must not
appear as a
- descendant of the “address”
element.
- </report>
- <report test='ancestor::h:header'>
- The “header” element must not
appear as a
- descendant of the “header”
element.
- </report>
- </rule>
-
- <rule context='h:table'>
- <report test='ancestor::h:caption'>
- The element “table” must not
appear as a
- descendant of the “caption”
element.
- </report>
- <report test='@summary' role='warning'>
- The “summary” attribute on the
- “table” element is obsolete.
- Consider describing the structure of the table
- in a “caption” element or
- in a “figure” element containing
- the “table” 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 “<name/>”
must not
- appear as a descendant of the “a”
element.
- </report>
- <report test='ancestor::h:button'>
- The interactive element “<name/>”
must not
- appear as a descendant of the
“button” 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 “<name/>”
must not
- appear as a descendant of the “a”
element.
- </report>
- <report test='ancestor::h:button'>
- The interactive element “<name/>”
must not
- appear as a descendant of the
“button” element.
- </report>
- <report test='ancestor::h:label[@for] and
not(ancestor::h:label[@for = current()/@id])'>
- Any “<name/>” element descendant
of a “label” element
- with a “for” attribute must have
an
- ID value that matches that “for”
attribute.
- </report>
- </rule>
-
- <rule context='h:video[@controls]|h:audio[@controls]'>
- <report test='ancestor::h:a'>
- The interactive element “<name/>”
- with the attribute “controls”
must not
- appear as a descendant of the “a”
element.
- </report>
- <report test='ancestor::h:button'>
- The interactive element “<name/>”
- with the attribute “controls”
must not
- appear as a descendant of the
“button” element.
- </report>
- </rule>
-
- <rule context='h:menu[translate(@type, "TOLBAR",
"tolbar")="toolbar"]'>
- <report test='ancestor::h:a'>
- The element “menu”
- with the attribute “type” whose
value is “toolbar” must not
- appear as a descendant of the “a”
element.
- </report>
- <report test='ancestor::h:button'>
- The element “menu”
- with the attribute “type” whose
value is “toolbar” must not
- appear as a descendant of the
“button” element.
- </report>
- </rule>
-
- <rule context='h:img[@usemap]'>
- <report test='ancestor::h:a'>
- The element “img”
- with the attribute “usemap” must
not
- appear as a descendant of the “a”
element.
- </report>
- <report test='ancestor::h:button'>
- The element “img”
- with the attribute “usemap” must
not
- appear as a descendant of the
“button” element.
- </report>
- </rule>
-
- <rule context='h:object[@usemap]'>
- <report test='ancestor::h:a'>
- The element “object”
- with the attribute “usemap” must
not
- appear as a descendant of the “a”
element.
- </report>
- <report test='ancestor::h:button'>
- The element “object”
- with the attribute “usemap” must
not
- appear as a descendant of the
“button” 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 “area” element must have an
ancestor
- “map” element.
- </assert>
- </rule>
-
- <rule context='h:img[@ismap]'>
- <assert test='ancestor::h:a[@href]'>
- The “img” element with the
- “ismap” attribute set must have
an ancestor
- “a” element with the
“href” attribute.
- </assert>
- </rule>
-
- <rule context='h:input'>
- <report test='@list and not(//h:datalist[@id =
current()/@list])'>
- The “list” attribute of the
“input”
- element must refer to a
“datalist” element.
- </report>
- <report test='@type = "button" and (not(@value) or
@value = "")'>
- Element “input” with attribute
“type”
- whose value is “button” must have
non-empty attribute
- “value”.
- </report>
- </rule>
-
- <rule context='h:track'>
- <report test='@label = ""'>
- Attribute “label” for element
“track”
- must have non-empty value.
- </report>
- <report test='@default and
preceding-sibling::h:track[@default]'>
- The “default” attribute must not
occur on more than one
- “track” element within the same
“audio”
- element or “video” element.
- </report>
- </rule>
-
- <rule context='h:map[@id and @name]'>
- <assert test='@id = @name'>
- The “id” attribute on a
“map” element must have
- the same value as the “name”
attribute.
- </assert>
- </rule>
-
- <rule context='h:select'>
- <report test='not(@multiple) and
count(descendant::h:option[@selected]) > 1'>
- The “select” element cannot have
more than one
- selected “option” element
descendant unless the
- “multiple” 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 “select” element with
- a “required” attribute and without
- a “multiple” attribute, and whose
- size is “1”, must have a child
- “option” 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 “option” element
- of a “select” element with
- a “required” attribute and without
- a “multiple” attribute, and whose
- size is “1”, must have either an
- empty “value” 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 “script” with attribute
- “language” whose value is
“JavaScript”
- must not have attribute “type”
whose value is not
- “text/javascript”.
- </report>
- <report test='not(@src) and @charset'>
- Element “script” must not have
attribute
- “charset” unless attribute
“src” is
- also specified.
- </report>
- <report test='not(@src) and @defer'>
- Element “script” must not have
attribute
- “defer” unless attribute
“src” is
- also specified.
- </report>
- <report test='not(@src) and @async'>
- Element “script” must not have
attribute
- “async” unless attribute
“src” is
- also specified.
- </report>
- </rule>
-
- <rule context='h:time'>
- <report test='ancestor::h:time'>
- The element “time” must not
- appear as a descendant of the
“time” element.
- </report>
- </rule>
-
- <rule context='h:progress'>
- <report test='ancestor::h:progress'>
- The element “progress” must not
- appear as a descendant of the
“progress” element.
- </report>
- <assert test='@max and @value and number(@value) <=
number(@max)'>
- The value of the “value”
attribute must be less than or equal to
- the value of the “max” attribute.
- </assert>
- <assert test='not(@max) and @value and number(@value)
<= 1'>
- The value of the “value”
attribute must be less than or equal to
- one when the “max” 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 “meter” must not
- appear as a descendant of the
“meter” element.
- </report>
- <report test='@min and @value and not(number(@min)
<= number(@value))'>
- The value of the “min” attribute
must be less than or equal to
- the value of the “value”
attribute.
- </report>
- <report test='not(@min) and @value and not(0 <=
number(@value))'>
- The value of the “value”
attribute must be greater than or equal to
- zero when the “min” attribute is
absent.
- </report>
- <report test='@value and @max and not(number(@value)
<= number(@max))'>
- The value of the “value”
attribute must be less than or equal to
- the value of the “max” attribute.
- </report>
- <report test='@value and not(@max) and
not(number(@value) <= 1)'>
- The value of the “value”
attribute must be less than or equal to
- one when the “max” attribute is
absent.
- </report>
- <report test='@min and @max and not(number(@min) <=
number(@max))'>
- The value of the “min” attribute
must be less than or equal to
- the value of the “max” attribute.
- </report>
- <report test='not(@min) and @max and not(0 <=
number(@max))'>
- The value of the “max” attribute
must be greater than or equal to
- zero when the “min” attribute is
absent.
- </report>
- <report test='@min and not(@max) and not(number(@min)
<= 1)'>
- The value of the “min” attribute
must be less than or equal to
- one when the “max” attribute is
absent.
- </report>
- <report test='@min and @low and not(number(@min) <=
number(@low))'>
- The value of the “min” attribute
must be less than or equal to
- the value of the “low” attribute.
- </report>
- <report test='not(@min) and @low and not(0 <=
number(@low))'>
- The value of the “low” attribute
must be greater than or equal to
- zero when the “min” attribute is
absent.
- </report>
- <report test='@min and @high and not(number(@min) <=
number(@high))'>
- The value of the “min” attribute
must be less than or equal to
- the value of the “high” attribute.
- </report>
- <report test='not(@min) and @high and not(0 <=
number(@high))'>
- The value of the “high” attribute
must be greater than or equal to
- zero when the “min” attribute is
absent.
- </report>
- <report test='@low and @high and not(number(@low) <=
number(@high))'>
- The value of the “low” attribute
must be less than or equal to
- the value of the “high” attribute.
- </report>
- <report test='@high and @max and not(number(@high)
<= number(@max))'>
- The value of the “high”
attribute must be less than or equal to
- the value of the “max” attribute.
- </report>
- <report test='@high and not(@max) and not(number(@high)
<= 1)'>
- The value of the “high”
attribute must be less than or equal to
- one when the “max” attribute is
absent.
- </report>
- <report test='@low and @max and not(number(@low) <=
number(@max))'>
- The value of the “low” attribute
must be less than or equal to
- the value of the “max” attribute.
- </report>
- <report test='@low and not(@max) and not(number(@low)
<= 1)'>
- The value of the “low” attribute
must be less than or equal to
- one when the “max” attribute is
absent.
- </report>
- <report test='@min and @optimum and not(number(@min)
<= number(@optimum))'>
- The value of the “min” attribute
must be less than or equal to
- the value of the “optimum”
attribute.
- </report>
- <report test='not(@min) and @optimum and not(0 <=
number(@optimum))'>
- The value of the “optimum”
attribute must be greater than or equal to
- zero when the “min” attribute is
absent.
- </report>
- <report test='@optimum and @max and
not(number(@optimum) <= number(@max))'>
- The value of the “optimum”
attribute must be less than or equal to
- the value of the “max” attribute.
- </report>
- <report test='@optimum and not(@max) and
not(number(@optimum) <= 1)'>
- The value of the “optimum”
attribute must be less than or equal to
- one when the “max” attribute is
absent.
- </report>
- </rule>
- </pattern>
-
- <!-- Obsolete Elements - - - - - - - - - - - - - - - - - - - - - - -->
- <pattern name="obsolete elements">
- <rule context='h:acronym'>
- <report test='true()'>
- The “acronym” element is
obsolete. Use the “abbr” element instead.
- </report>
- </rule>
-
- <rule context='h:applet'>
- <report test='true()'>
- The “applet” element is obsolete.
Use the “object” element instead.
- </report>
- </rule>
-
- <rule context='h:center|h:font|h:big|h:strike|h:tt|h:basefont'>
- <report test='true()'>
- The “<name/>” 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 “dir” element is obsolete.
Use the “ul” element instead.
- </report>
- </rule>
-
- <rule context='h:frameset|h:noframes'>
- <report test='true()'>
- The “<name/>” element is obsolete.
- Use the “iframe” 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 “coords” attribute on the
“<name/>” element is obsolete.
- For image maps, use the “area”
element instead of the “a” element.
- </report>
- <report test='@shape'>
- The “shape” attribute on the
“<name/>” element is obsolete.
- For image maps, use the “area”
element instead of the “a” element.
- </report>
- <report test='@urn'>
- The “urn” attribute on the
“<name/>” element is obsolete.
- Specify the preferred persistent identifier
using the “href” attribute instead.
- </report>
- <report test='@charset'>
- The “charset” attribute on the
“<name/>” element is obsolete.
- Use an HTTP Content-Type header on the linked
resource instead.
- </report>
- <report test='@methods'>
- The “methods” attribute on the
“<name/>” element is obsolete.
- Use the HTTP OPTIONS feature instead.
- </report>
- <report test='@rev'>
- The “rev” attribute on the
“<name/>” element is obsolete.
- Use the “rel” attribute instead,
with a term having the opposite meaning.
- </report>
- </rule>
-
- <rule context='h:link'>
- <report test='@target'>
- The “target” attribute on the
“<name/>” element is obsolete.
- You can safely omit it.
- </report>
- <report test='@urn'>
- The “urn” attribute on the
“<name/>” element is obsolete.
- Specify the preferred persistent identifier
using the “href” attribute instead.
- </report>
- <report test='@charset'>
- The “charset” attribute on the
“<name/>” element is obsolete.
- Use an HTTP Content-Type header on the linked
resource instead.
- </report>
- <report test='@methods'>
- The “methods” attribute on the
“<name/>” element is obsolete.
- Use the HTTP OPTIONS feature instead.
- </report>
- <report test='@rev'>
- The “rev” attribute on the
“<name/>” element is obsolete.
- Use the “rel” attribute instead,
with a term having the opposite meaning.
- </report>
- </rule>
-
- <rule context="h:area">
- <report test='@nohref'>
- The “nohref” attribute on the
“<name/>” element is obsolete.
- Omitting the “href” attribute is
sufficient.
- </report>
- </rule>
-
- <rule context='h:embed'>
- <report test='@name'>
- The “name” attribute on the
“<name/>” element is obsolete.
- Use the “id” attribute instead.
- </report>
- </rule>
-
- <rule context='h:head'>
- <report test='@profile'>
- The “profile” attribute on the
“<name/>” element is obsolete.
- To declare which “meta” element
terms are used in the document, instead register the
- names as meta extensions.
<http://wiki.whatwg.org/wiki/MetaExtensions>
- To trigger specific UA behaviors, use a
“link” element instead.
- </report>
- </rule>
-
- <rule context='h:html'>
- <report test='@version'>
- The “version” attribute on the
“<name/>” element is obsolete.
- You can safely omit it.
- </report>
- </rule>
-
- <rule context='h:iframe'>
- <report test='@longdesc'>
- The “longdesc” attribute on the
“<name/>” element is obsolete.
- Use a regular “a” element to link
to the description.
- </report>
- </rule>
-
- <rule context='h:img'>
- <report test='@longdesc'>
- The “longdesc” attribute on the
“<name/>” element is obsolete.
- Use a regular “a” element to link
to the description.
- </report>
- <report test='@name'>
- The “name” attribute on the
“<name/>” element is obsolete.
- Use the “id” attribute instead.
- </report>
- </rule>
-
- <rule context='h:input'>
- <report test='@usemap'>
- The “usemap” attribute on the
“<name/>” element is obsolete.
- Use the “img” element instead of
the “input” element for image maps.
- </report>
- </rule>
-
- <rule context='h:li|h:ul'>
- <report test='@type'>
- The “type” attribute on the
“<name/>” 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 “scheme” attribute on the
“<name/>” 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 “meta” 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 “archive” attribute on the
“<name/>” element is obsolete.
- Use the “data” attribute and
“type” attribute to invoke plugins.
- To set a parameter with the name
“archive”, use the “param” element.
- </report>
- <report test='@classid'>
- The “classid” attribute on the
“<name/>” element is obsolete.
- Use the “data” attribute and
“type” attribute to invoke plugins.
- To set a parameter with the name
“classid”, use the “param” element.
- </report>
- <report test='@code'>
- The “code” attribute on the
“<name/>” element is obsolete.
- Use the “data” attribute and
“type” attribute to invoke plugins.
- To set a parameter with the name
“code”, use the “param” element.
- </report>
- <report test='@codebase'>
- The “codebase” attribute on the
“<name/>” element is obsolete.
- Use the “data” attribute and
“type” attribute to invoke plugins.
- To set a parameter with the name
“codebase”, use the “param” element.
- </report>
- <report test='@codetype'>
- The “codetype” attribute on the
“<name/>” element is obsolete.
- Use the “data” attribute and
“type” attribute to invoke plugins.
- To set a parameter with the name
“codetype”, use the “param” element.
- </report>
- <report test='@declare'>
- The “declare” attribute on the
“<name/>” element is obsolete.
- Repeat the “object” element
completely each time the resource is to be reused.
- </report>
- <report test='@standby'>
- The “standby” attribute on the
“<name/>” 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 “name” attribute on the
“<name/>” element is obsolete.
- Use the “id” attribute instead.
- </report>
- </rule>
-
- <rule context='h:param'>
- <report test='@type'>
- The “type” attribute on the
“<name/>” element is obsolete.
- Use the “name” attribute and
“value” attribute without declaring value types.
- </report>
- <report test='@valuetype'>
- The “valuetype” attribute on the
“<name/>” element is obsolete.
- Use the “name” attribute and
“value” attribute without declaring value types.
- </report>
- </rule>
-
- <rule context='h:script[@language and not(translate(@language,
"JAVSCRIPT", "javscript")="javascript")]'>
- <report test='true()'>
- The “language” attribute on the
“script” element is obsolete.
- Use the “type” attribute instead.
- </report>
- </rule>
-
- <rule context='h:td|h:th'>
- <report test='@scope and self::h:td'>
- The “scope” attribute on the
“td” element is obsolete.
- Use the “scope” attribute on a
“th” element instead.
- </report>
- <report test='@abbr'>
- The “abbr” attribute on the
“<name/>” element is obsolete.
- Consider instead beginning the cell contents
with concise text, followed by further elaboration if needed.
- </report>
- <report test='@axis'>
- The “axis” attribute on the
“<name/>” element is obsolete.
- Use the “scope” 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 “align” attribute on the
“<name/>” 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 “width” attribute on the
“<name/>” 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 “char” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@charoff'>
- The “charoff” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@valign'>
- The “valign” attribute on the
“<name/>” 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 “alink” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@background'>
- The “background” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@bgcolor'>
- The “bgcolor” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@link'>
- The “link” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@marginbottom'>
- The “marginbottom” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@marginheight'>
- The “marginheight” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@marginleft'>
- The “marginleft” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@marginright'>
- The “marginright” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@margintop'>
- The “margintop” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@marginwidth'>
- The “marginwidth” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@text'>
- The “text” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@vlink'>
- The “vlink” attribute on the
“<name/>” 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 “clear” attribute on the
“<name/>” 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 “hspace” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@vspace'>
- The “vspace” attribute on the
“<name/>” 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 “noshade” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@size'>
- The “size” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@color'>
- The “color” attribute on the
“<name/>” 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 “compact” attribute on the
“<name/>” 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 “allowtransparency” attribute
on the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@frameborder'>
- The “frameborder” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@marginheight'>
- The “marginheight” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@marginwidth'>
- The “marginwidth” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@scrolling'>
- The “scrolling” attribute on the
“<name/>” 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 “hspace” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@vspace'>
- The “vspace” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@border and self::h:object'>
- The “border” attribute on the
“<name/>” 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 “bgcolor” attribute on the
“<name/>” 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 “border”
attribute on the “<name/>” element
- must be either “1” 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 “cellpadding” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@cellspacing'>
- The “cellspacing” attribute on
the “<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@frame'>
- The “frame” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@rules'>
- The “rules” attribute on the
“<name/>” 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 “bgcolor” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@height'>
- The “height” attribute on the
“<name/>” element is obsolete.
- Use CSS instead.
http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes
- </report>
- <report test='@nowrap'>
- The “nowrap” attribute on the
“<name/>” 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 “bgcolor” attribute on the
“<name/>” 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 “lang” in no
namespace and the attribute “lang”
- 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 “contextmenu” attribute must
refer to a
- “menu” 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 “role=option”
requires
- “role=listbox” on the parent.
- </assert>
- </rule>
-
- <rule context='*[@role="menuitem"]'>
- <assert test='../@role="menu"'>
- An element with “role=menuitem”
requires
- “role=menu” on the parent.
- </assert>
- </rule>
-
- <rule context='*[@role="menuitemcheckbox"]'>
- <assert test='../@role="menu"'>
- An element with
“role=menuitemcheckbox” requires
- “role=menu” on the parent.
- </assert>
- </rule>
-
- <rule context='*[@role="menuitemradio"]'>
- <assert test='../@role="menu"'>
- An element with
“role=menuitemradio” requires
- “role=menu” on the parent.
- </assert>
- </rule>
-
- <rule context='*[@role="tab"]'>
- <assert test='../@role="tablist"'>
- An element with “role=tab”
requires
- “role=tablist” on the parent.
- </assert>
- </rule>
-
- <rule context='*[@role="treeitem"]'>
- <assert test='../@role="tree"'>
- An element with “role=treeitem”
requires
- “role=tree” on the parent.
- </assert>
- </rule>
-
- <rule context='*[@role="listitem"]'>
- <assert test='../@role="list"'>
- An element with “role=listitem”
requires
- “role=list” 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 “role=row”
requires
- “role=treegrid” or
“role=grid” 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 “role=gridcell”
requires
- “role=row” 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
- “role=listbox” unless it has
“role=option”.
- </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
- “role=menu” unless it has
- “role=menuitem”,
- “role=menuitemcheckbox” or
- “role=menuitemradio”.
- </report>
- </rule>
- </pattern>
-
- <pattern name='Not treeitem'>
- <rule context='*[not(@role="treeitem")]'>
- <report test='../@role="tree"'>
- An element must not be a child of
- “role=tree” unless it has
- “role=treeitem”.
- </report>
- </rule>
- </pattern>
-
- <pattern name='Not listitem'>
- <rule context='*[not(@role="listitem")]'>
- <report test='../@role="list"'>
- An element must not be a child of
- “role=list” unless it has
- “role=listitem”.
- </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
- “role=radiogroup” unless it has
- “role=radio”.
- </report>
- </rule>
- </pattern>
-
- <pattern name='Not gridcell'>
- <rule context='*[not(@role="gridcell")]'>
- <report test='../@role="row"'>
- An element must not be a child of
- “role=row” unless it has
- “role=gridcell”.
- </report>
- </rule>
- </pattern>
-
- <pattern name='Not tab'>
- <rule context='*[not(@role="tab")]'>
- <report test='../@role="tablist"'>
- An element must not be a child of
- “role=tablist” unless it has
- “role=role”.
- </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 “aria-activedescendant”
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 “aria-controls” 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 “aria-describedby” 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 “aria-flowto” 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 “aria-labelledby” 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 “aria-owns” 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 “border” attribute on the
“img” element is obsolete.
- Consider specifying “img { border: 0;
}“ 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 “language” attribute on the
“script” element is obsolete. You can safely omit it.
- </report>
- </rule>
- <rule context='h:a'>
- <report test='@name' role='warning'>
- The “name” attribute on the
“a” element is obsolete. Consider putting an
- “id” 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'>
- “<name/>” element has more than
one “track”
- child element with a “default”
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"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] master 18465e3: * externals-list: Convert html5-schema to :external,
Stefan Monnier <=