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