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