]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/html5-schema/common.rnc
Add 'packages/html5-schema/' from commit '6e7c7c331e7f6692be6c7d39fb9485792f0d3513'
[gnu-emacs-elpa] / packages / html5-schema / common.rnc
diff --git a/packages/html5-schema/common.rnc b/packages/html5-schema/common.rnc
new file mode 100644 (file)
index 0000000..68d9acc
--- /dev/null
@@ -0,0 +1,526 @@
+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 )