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