datatypes w = "http://whattf.org/datatype-draft" namespace local = "" # ##################################################################### ## RELAX NG Schema for HTML 5: Embedded Content # # ##################################################################### ####################################################################### ## Replaced Content ## Images: 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.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.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.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.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.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: