From 843ae99db12912545f1ec8192726b3661d447f45 Mon Sep 17 00:00:00 2001 From: Romain Deltour Date: Fri, 7 Jul 2023 00:20:58 +0200 Subject: [PATCH] feat: update to latest schemas from the Nu HTML Checker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --------------------- Add `plaintext-only` value to `contenteditable` attribute https://github.com/validator/validator/commit/228ea687b Co-authored-by: Niedziolka Michal --------------------- add warnings for deprecated ARIA attributes (#1560) https://github.com/validator/validator/commit/e61fbeb2c Co-authored-by: Steve Faulkner --------------------- disallow aria attributes on datalist (#1557) https://github.com/validator/validator/commit/b4849c04b Co-authored-by: Steve Faulkner --------------------- allow role=button on area https://github.com/validator/validator/commit/89ff1fc2b Co-authored-by: stevefaulkner --------------------- fix: allow -1 for aria-colcount https://github.com/validator/validator/commit/2466e73c4 Co-authored-by: Nick Schonning --------------------- fix: Allow -1 for aria-rowcount https://github.com/validator/validator/commit/eac205b6b Co-authored-by: Nick Schonning --------------------- Add `fetchpriority` attribute https://github.com/validator/validator/commit/7c9991405 Co-authored-by: Niedziolka Michal --------------------- Script type importmap (#1478) https://github.com/validator/validator/commit/4054c56f5 Co-authored-by: Michał Niedziółka --------------------- Move “manifest” attribute to legacy-attributes list https://github.com/validator/validator/commit/175e62d3a Co-authored-by: Michael[tm] Smith --------------------- Pointer Events (#1481) https://github.com/validator/validator/commit/5eb52a931 Co-authored-by: Michał Niedziółka --------------------- Report a better error message for obsolete “manifest” attribute https://github.com/validator/validator/commit/ae924b625 Co-authored-by: Michael[tm] Smith --------------------- onscrollend https://github.com/validator/validator/commit/87287a97f Co-authored-by: Niedziolka Michal --------------------- slot element https://github.com/validator/validator/commit/d6cf423c1 Co-authored-by: Niedziolka Michal --------------------- Allow paragraphs in hgroup (#1467) https://github.com/validator/validator/commit/3ff53973f Co-authored-by: Michał Niedziółka --------------------- blocking="render" (#1466) https://github.com/validator/validator/commit/df5d4e23a Co-authored-by: Michał Niedziółka --------------------- inert https://github.com/validator/validator/commit/507f551b2 Co-authored-by: Niedziolka Michal --------------------- hidden=until-found https://github.com/validator/validator/commit/a424d55a8 Co-authored-by: Niedziolka Michal --------------------- media attribute in meta element https://github.com/validator/validator/commit/af3e94d22 Co-authored-by: Niedziolka Michal --------------------- Sync event handlers https://github.com/validator/validator/commit/58bea51c7 Co-authored-by: Niedziolka Michal --------------------- Remove manifest attribute https://github.com/validator/validator/commit/66510f3ca Co-authored-by: Niedziolka Michal --------------------- enterkeyhint https://github.com/validator/validator/commit/70f3044d7 Co-authored-by: Niedziolka Michal --------------------- Form method dialog (#1443) https://github.com/validator/validator/commit/0db229a44 Co-authored-by: Michał Niedziółka --------------------- imagesrcset and imagesizes in link (#1444) https://github.com/validator/validator/commit/49656dbfc Co-authored-by: Michał Niedziółka --------------------- feat: add support width and height of source in picture https://github.com/validator/validator/commit/176d98e4f Co-authored-by: Takeshi Kurosawa --------------------- Update: allow none/presentation on nav element (#1323) https://github.com/validator/validator/commit/5e25edb39 Co-authored-by: Scott O'Hara --------------------- Update schema/html5/web-forms.rnc https://github.com/validator/validator/commit/95ba6c7cf Co-authored-by: Michael[tm] Smith --------------------- update role allowances for button and input type=button https://github.com/validator/validator/commit/6cc14c4d7 Co-authored-by: Scott O'Hara --------------------- adds role=radio alowance to img alt=foo https://github.com/validator/validator/commit/b013aa02b Co-authored-by: Scott O'Hara --------------------- remove deprecated dpub role allowances https://github.com/validator/validator/commit/b0fb152c0 Co-authored-by: Scott O'Hara --------------------- allow section element to have role=group https://github.com/validator/validator/commit/078341d37 Co-authored-by: Scott O'Hara --- src/build/update-validator-schemas.sh | 2 +- .../epubcheck/schema/30/mod/html5/LAST_UPDATE | 2 +- .../schema/30/mod/html5/applications.rnc | 51 +++++++--- .../epubcheck/schema/30/mod/html5/aria.rnc | 25 ++--- .../epubcheck/schema/30/mod/html5/block.rnc | 2 - .../epubcheck/schema/30/mod/html5/common.rnc | 18 +++- .../schema/30/mod/html5/core-scripting.rnc | 92 ++++++++++++------- .../epubcheck/schema/30/mod/html5/embed.rnc | 40 ++++++-- .../epubcheck/schema/30/mod/html5/meta.rnc | 38 ++++++-- .../schema/30/mod/html5/sectional.rnc | 3 +- .../schema/30/mod/html5/structural.rnc | 3 + .../schema/30/mod/html5/web-components.rnc | 23 +++++ .../schema/30/mod/html5/web-forms.rnc | 8 +- .../schema/30/mod/html5/web-forms2.rnc | 6 +- 14 files changed, 221 insertions(+), 92 deletions(-) diff --git a/src/build/update-validator-schemas.sh b/src/build/update-validator-schemas.sh index e39abfbb3..0f8dcfc07 100755 --- a/src/build/update-validator-schemas.sh +++ b/src/build/update-validator-schemas.sh @@ -57,7 +57,7 @@ git fetch $UPSTREAM ## Create patches since last update (to the `latest` tag) echo "Creating paches of changes since the last update" -git format-patch -o $EPUBCHECK_DIR $LAST_SHA1..latest schema +git format-patch -o $EPUBCHECK_DIR/ $LAST_SHA1..latest schema ## Get the SHA-1 of the `latest` tag LATEST=`git rev-list -n 1 latest` diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/LAST_UPDATE b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/LAST_UPDATE index c6fe963c4..126b31fe7 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/LAST_UPDATE +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/LAST_UPDATE @@ -1 +1 @@ -9b11254fbe3c5cb2339794101e17e7d8ec844223 +b118bf6031b0b06797f3ccdc25d0f74c1447139a diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/applications.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/applications.rnc index e87f7a1a0..0254ac45e 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/applications.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/applications.rnc @@ -10,8 +10,6 @@ ( common.attrs.contenteditable? & common.attrs.draggable? & common.attrs.hidden? - & common.attrs.spellcheck? - & common.attrs.autocapitalize? ) common.attrs.other &= common.attrs.interact @@ -20,7 +18,7 @@ common.attrs.contenteditable = attribute contenteditable { - "true" | "false" | "" + "true" | "plaintext-only" | "false" | "" } ## Draggable Element: draggable @@ -34,13 +32,39 @@ common.attrs.hidden = attribute hidden { - "hidden" | "" + "hidden" | "until-found" | "" + } + +## Global attributes applicable on elements with editable content + + common.attrs.editing &= + ( common.attrs.inputmode? + & common.attrs.spellcheck? + & common.attrs.autocapitalize? + & common.attrs.enterkeyhint? + ) + + common.attrs.other &= common.attrs.editing + +## Hint expected data type: inputmode + + common.attrs.inputmode = + attribute inputmode { + ( "none" + | "text" + | "tel" + | "url" + | "email" + | "numeric" + | "decimal" + | "search" + ) } ## Spellchecking and grammar checking: spellcheck common.attrs.spellcheck = - attribute spellcheck{ + attribute spellcheck { "true" | "false" | "" } @@ -57,14 +81,19 @@ ) } -## Application Cache: manifest +## Type of Enter button on virtual keyboards: enterkeyhint - html.attrs.manifest = - attribute manifest { - common.data.uri.non-empty + common.attrs.enterkeyhint = + attribute enterkeyhint { + ( "enter" + | "done" + | "go" + | "next" + | "previous" + | "search" + | "send" + ) } - - html.attrs &= html.attrs.manifest? ## Progess Indicator: diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/aria.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/aria.rnc index a214b0647..faa9ea287 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/aria.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/aria.rnc @@ -17,10 +17,8 @@ aria.global = & aria.prop.describedby? & aria.prop.details? & aria.state.disabled? - & aria.state.dropeffect? & aria.prop.errormessage? & aria.prop.flowto? - & aria.state.grabbed? & aria.prop.haspopup? & aria.state.hidden? & aria.state.invalid? @@ -288,13 +286,6 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark | string "false" #default } -## dropeffect - aria.state.dropeffect = - attribute aria-dropeffect - { - list { ("copy" | "execute" | "link" | "move" | "none" | "popup") + } - } - ## expanded aria.state.expanded = attribute aria-expanded @@ -303,14 +294,6 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark | string "undefined" #default } -## grabbed - aria.state.grabbed = - attribute aria-grabbed - { string "true" - | string "false" - | string "undefined" #default - } - ## hidden aria.state.hidden = attribute aria-hidden @@ -374,7 +357,9 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark ## colcount aria.prop.colcount = attribute aria-colcount { - common.data.integer.positive + ( common.data.integer.non-negative + | string "-1" + ) } ## colindex @@ -576,7 +561,9 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark ## rowcount aria.prop.rowcount = attribute aria-rowcount { - common.data.integer.positive + ( common.data.integer.non-negative + | string "-1" + ) } ## rowindex diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/block.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/block.rnc index 714531882..0bae92579 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/block.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/block.rnc @@ -101,8 +101,6 @@ | common.attrs.aria.role.treeitem | common.attrs.aria.role.separator | common.attrs.aria.role.presentation - | common.attrs.aria.role.doc-biblioentry - | common.attrs.aria.role.doc-endnote )? ) li.inner = diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/common.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/common.rnc index 06e1e4c79..e6c10958e 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/common.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/common.rnc @@ -202,8 +202,8 @@ common.attrs.present = common.attrs.other = ( common.attrs.autofocus? - & common.attrs.inputmode? & common.attrs.nonce? + & common.attrs.inert? ) common.attrs.autofocus = @@ -211,9 +211,14 @@ common.attrs.other = "autofocus" | "" } - common.attrs.inputmode = - attribute inputmode { - string + common.attrs.blocking = + attribute blocking { + list { "render" } + } + + common.attrs.fetchpriority = + attribute fetchpriority { + "high" | "low" | "auto" } common.attrs.nonce = @@ -221,6 +226,11 @@ common.attrs.other = string } + common.attrs.inert = + attribute inert { + w:string "inert" | w:string "" + } + # ##################################################################### ## Common Datatypes # # ##################################################################### diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/core-scripting.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/core-scripting.rnc index a63913770..e51f2b529 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/core-scripting.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/core-scripting.rnc @@ -33,6 +33,8 @@ & script.attrs.language? # restricted in Schematron & script.attrs.integrity? & embedded.content.attrs.crossorigin? + & common.attrs.blocking? + & common.attrs.fetchpriority? & referrerpolicy? ) script.attrs.src = @@ -49,7 +51,7 @@ } & v5only script.attrs.type = attribute type { - "module" | "" | common.data.scripttype # XXX without charset parameter! + "module" | "importmap" | "" | common.data.scripttype # XXX without charset parameter! } script.attrs.nomodule = attribute nomodule { @@ -112,8 +114,9 @@ ## Event Handler Attribute Definitions common.attrs.scripting &= - ( scripting.attr.onabort? - & scripting.attr.onauxclick? + ( scripting.attr.onauxclick? + & scripting.attr.onbeforeinput? + & scripting.attr.onbeforematch? & scripting.attr.onblur? & scripting.attr.oncancel? & scripting.attr.oncanplay? @@ -121,7 +124,9 @@ & scripting.attr.onchange? & scripting.attr.onclick? & scripting.attr.onclose? + & scripting.attr.oncontextlost? & scripting.attr.oncontextmenu? + & scripting.attr.oncontextrestored? & scripting.attr.oncopy? & scripting.attr.oncuechange? & scripting.attr.oncut? @@ -138,8 +143,6 @@ & scripting.attr.onended? & scripting.attr.onerror? & scripting.attr.onfocus? - & scripting.attr.onfocusin? - & scripting.attr.onfocusout? & scripting.attr.onformdata? & scripting.attr.oninput? & scripting.attr.oninvalid? @@ -166,6 +169,7 @@ & scripting.attr.onreset? & scripting.attr.onresize? & scripting.attr.onscroll? + & scripting.attr.onscrollend? & scripting.attr.onsecuritypolicyviolation? & scripting.attr.onseeked? & scripting.attr.onseeking? @@ -176,10 +180,6 @@ & scripting.attr.onsuspend? & scripting.attr.ontimeupdate? & scripting.attr.ontoggle? - & scripting.attr.ontransitioncancel? - & scripting.attr.ontransitionend? - & scripting.attr.ontransitionrun? - & scripting.attr.ontransitionstart? & scripting.attr.onvolumechange? & scripting.attr.onwaiting? & scripting.attr.onwheel? @@ -187,16 +187,18 @@ common.attrs.other &= common.attrs.scripting - scripting.attr.onabort = - attribute onabort { common.data.functionbody } scripting.attr.onauxclick = attribute onauxclick { common.data.functionbody } + scripting.attr.onbeforeinput = + attribute onbeforeinput { common.data.functionbody } + scripting.attr.onbeforematch = + attribute onbeforematch { common.data.functionbody } scripting.attr.onblur = attribute onblur { common.data.functionbody } - scripting.attr.oncanplay = - attribute oncanplay { common.data.functionbody } scripting.attr.oncancel = attribute oncancel { common.data.functionbody } + scripting.attr.oncanplay = + attribute oncanplay { common.data.functionbody } scripting.attr.oncanplaythrough = attribute oncanplaythrough { common.data.functionbody } scripting.attr.onchange = @@ -205,8 +207,12 @@ attribute onclick { common.data.functionbody } scripting.attr.onclose = attribute onclose { common.data.functionbody } + scripting.attr.oncontextlost = + attribute oncontextlost { common.data.functionbody } scripting.attr.oncontextmenu = attribute oncontextmenu { common.data.functionbody } + scripting.attr.oncontextrestored = + attribute oncontextrestored { common.data.functionbody } scripting.attr.oncopy = attribute oncopy { common.data.functionbody } scripting.attr.oncuechange = @@ -239,16 +245,8 @@ attribute onerror { common.data.functionbody } scripting.attr.onfocus = attribute onfocus { common.data.functionbody } - scripting.attr.onfocusin = - attribute onfocusin { common.data.functionbody } - scripting.attr.onfocusout = - attribute onfocusout { common.data.functionbody } - scripting.attr.onformchange = - attribute onformchange { common.data.functionbody } scripting.attr.onformdata = attribute onformdata { common.data.functionbody } - scripting.attr.onforminput = - attribute onforminput { common.data.functionbody } scripting.attr.oninput = attribute oninput { common.data.functionbody } scripting.attr.oninvalid = @@ -281,8 +279,6 @@ attribute onmouseover { common.data.functionbody } scripting.attr.onmouseup = attribute onmouseup { common.data.functionbody } - scripting.attr.onwheel = - attribute onwheel { common.data.functionbody } scripting.attr.onpaste = attribute onpaste { common.data.functionbody } scripting.attr.onpause = @@ -301,6 +297,8 @@ attribute onresize { common.data.functionbody } scripting.attr.onscroll = attribute onscroll { common.data.functionbody } + scripting.attr.onscrollend = + attribute onscrollend { common.data.functionbody } scripting.attr.onsecuritypolicyviolation = attribute onsecuritypolicyviolation { common.data.functionbody } scripting.attr.onseeked = @@ -321,18 +319,50 @@ attribute ontimeupdate { common.data.functionbody } scripting.attr.ontoggle = attribute ontoggle { common.data.functionbody } - scripting.attr.ontransitioncancel = - attribute ontransitioncancel { common.data.functionbody } - scripting.attr.ontransitionend = - attribute ontransitionend { common.data.functionbody } - scripting.attr.ontransitionrun = - attribute ontransitionrun { common.data.functionbody } - scripting.attr.ontransitionstart = - attribute ontransitionstart { common.data.functionbody } scripting.attr.onvolumechange = attribute onvolumechange { common.data.functionbody } scripting.attr.onwaiting = attribute onwaiting { common.data.functionbody } + scripting.attr.onwheel = + attribute onwheel { common.data.functionbody } + +## Pointer Events + common.attrs.scripting &= + ( scripting.attr.onpointerover? + & scripting.attr.onpointerenter? + & scripting.attr.onpointerdown? + & scripting.attr.onpointermove? + & scripting.attr.onpointerrawupdate? + & scripting.attr.onpointerup? + & scripting.attr.onpointercancel? + & scripting.attr.onpointerout? + & scripting.attr.onpointerleave? + & scripting.attr.ongotpointercapture? + & scripting.attr.onlostpointercapture? + ) + + scripting.attr.onpointerover = + attribute onpointerover { common.data.functionbody } + scripting.attr.onpointerenter = + attribute onpointerenter { common.data.functionbody } + scripting.attr.onpointerdown = + attribute onpointerdown { common.data.functionbody } + scripting.attr.onpointermove = + attribute onpointermove { common.data.functionbody } + scripting.attr.onpointerrawupdate = + attribute onpointerrawupdate { common.data.functionbody } + scripting.attr.onpointerup = + attribute onpointerup { common.data.functionbody } + scripting.attr.onpointercancel = + attribute onpointercancel { common.data.functionbody } + scripting.attr.onpointerout = + attribute onpointerout { common.data.functionbody } + scripting.attr.onpointerleave = + attribute onpointerleave { common.data.functionbody } + scripting.attr.ongotpointercapture = + attribute ongotpointercapture { common.data.functionbody } + scripting.attr.onlostpointercapture = + attribute onlostpointercapture { common.data.functionbody } # scripting.attr.common = # ( scripting.attr.mouse diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/embed.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/embed.rnc index b4cc0b6aa..6a271d4ca 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/embed.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/embed.rnc @@ -22,6 +22,7 @@ namespace local = "" & img.attrs.ismap? & img.attrs.decoding? & img.attrs.loading? + & common.attrs.fetchpriority? & img.attrs.border? # obsolete & referrerpolicy? & embedded.content.attrs.crossorigin? @@ -44,6 +45,7 @@ namespace local = "" | common.attrs.aria.role.option | common.attrs.aria.role.presentation | common.attrs.aria.role.progressbar + | common.attrs.aria.role.radio | common.attrs.aria.role.scrollbar | common.attrs.aria.role.separator | common.attrs.aria.role.slider @@ -138,6 +140,8 @@ namespace local = "" & source.picture.attrs.srcset & source.picture.attrs.sizes? & source.picture.attrs.type? + & source.picture.attrs.width? + & source.picture.attrs.height? ) source.picture.attrs.media = attribute media { @@ -155,6 +159,14 @@ namespace local = "" attribute type { common.data.mimetype } + source.picture.attrs.width = + attribute width { + common.data.integer.non-negative + } + source.picture.attrs.height = + attribute height { + common.data.integer.non-negative + } source.picture.inner = ( empty ) @@ -207,13 +219,15 @@ namespace local = "" | style | tabindex | autofocus + | inert | contenteditable | draggable | hidden | inputmode | nonce - | onabort | onauxclick + | onbeforeinput + | onbeforematch | onblur | oncancel | oncanplay @@ -221,7 +235,9 @@ namespace local = "" | onchange | onclick | onclose + | oncontextlost | oncontextmenu + | oncontextrestored | oncopy | oncuechange | oncut @@ -238,8 +254,6 @@ namespace local = "" | onended | onerror | onfocus - | onfocusin - | onfocusout | onformdata | oninput | oninvalid @@ -266,23 +280,31 @@ namespace local = "" | onreset | onresize | onscroll + | onscrollend | onsecuritypolicyviolation | onseeked | onseeking - | onslotchange | onselect + | onslotchange | onstalled | onsubmit | onsuspend | ontimeupdate | ontoggle - | ontransitioncancel - | ontransitionend - | ontransitionrun - | ontransitionstart | onvolumechange | onwaiting | onwheel + | onpointerover + | onpointerenter + | onpointerdown + | onpointermove + | onpointerrawupdate + | onpointerup + | onpointercancel + | onpointerout + | onpointerleave + | ongotpointercapture + | onlostpointercapture | role | aria-atomic | aria-busy @@ -310,6 +332,7 @@ namespace local = "" | aria-roledescription | spellcheck | autocapitalize + | enterkeyhint | accesskey | itemref | itemprop @@ -577,6 +600,7 @@ namespace local = "" & shared-hyperlink.attrs.type? & area.attrs.shape? & ( common.attrs.aria.role.link + | common.attrs.aria.role.button | common.attrs.aria.implicit.link )? ) diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/meta.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/meta.rnc index f0a08f613..46779b343 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/meta.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/meta.rnc @@ -55,13 +55,17 @@ & body.attrs.onbeforeprint? & body.attrs.onbeforeunload? & body.attrs.onhashchange? + & body.attrs.onlanguagechange? & body.attrs.onmessage? + & body.attrs.onmessageerror? & body.attrs.onoffline? & body.attrs.ononline? & body.attrs.onpagehide? & body.attrs.onpageshow? & body.attrs.onpopstate? + & body.attrs.onrejectionhandled? & body.attrs.onstorage? + & body.attrs.onunhandledrejection? & body.attrs.onunload? ) body.inner = @@ -75,26 +79,28 @@ attribute onbeforeunload { common.data.functionbody } body.attrs.onhashchange = attribute onhashchange { common.data.functionbody } + body.attrs.onlanguagechange = + attribute onlanguagechange { common.data.functionbody } body.attrs.onmessage = attribute onmessage { common.data.functionbody } + body.attrs.onmessageerror = + attribute onmessageerror { common.data.functionbody } body.attrs.onoffline = attribute onoffline { common.data.functionbody } body.attrs.ononline = attribute ononline { common.data.functionbody } - body.attrs.onpopstate = - attribute onpopstate { common.data.functionbody } body.attrs.onpagehide = attribute onpagehide { common.data.functionbody } body.attrs.onpageshow = attribute onpageshow { common.data.functionbody } - body.attrs.onredo = - attribute onredo { common.data.functionbody } - body.attrs.onresize = - attribute onresize { common.data.functionbody } + body.attrs.onpopstate = + attribute onpopstate { common.data.functionbody } + body.attrs.onrejectionhandled = + attribute onrejectionhandled { common.data.functionbody } body.attrs.onstorage = attribute onstorage { common.data.functionbody } - body.attrs.onundo = - attribute onundo { common.data.functionbody } + body.attrs.onunhandledrejection = + attribute onunhandledrejection { common.data.functionbody } body.attrs.onunload = attribute onunload { common.data.functionbody } @@ -142,8 +148,8 @@ & common.attrs.i18n & common.attrs.present & common.attrs.other - & link.attrs.href & link.attrs.rel + & link.attrs.href? & link.attrs.as? & link.attrs.integrity? & shared-hyperlink.attrs.hreflang? @@ -156,8 +162,12 @@ & link.attrs.scope? & link.attrs.updateviacache? & link.attrs.workertype? + & link.attrs.imagesrcset? + & link.attrs.imagesizes? + & common.atrrs.fetchpriority? # link.attrs.title included in common.attrs & embedded.content.attrs.crossorigin? + & common.attrs.blocking? & common.attrs.aria.role.link? ) link.attrs.href = @@ -222,6 +232,14 @@ string "classic" | string "module" } + link.attrs.imagesrcset = + attribute imagesrcset { + string + } & v5only + link.attrs.imagesizes = + attribute imagesizes { + common.data.source.size.list + } & v5only link.inner = ( empty ) @@ -237,6 +255,7 @@ ( common.attrs & style.attrs.type? & style.attrs.media? + & common.attrs.blocking? # style.attrs.title included in common.attrs ) style.attrs.type = @@ -267,6 +286,7 @@ & common.attrs.microdata.itemscope? & common.attrs.microdata.itemtype? & common.attrs.microdata.itemid? + & shared-hyperlink.attrs.media? ) meta.name.attrs.name = attribute name { diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/sectional.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/sectional.rnc index 7fd910510..5ab308b53 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/sectional.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/sectional.rnc @@ -129,8 +129,9 @@ | h5.elem | h6.elem ) + & p.elem* & common.elem.script-supporting* - )+ + ) common.elem.flow |= hgroup.elem diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/structural.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/structural.rnc index 77b040e27..75792b1bc 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/structural.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/structural.rnc @@ -14,6 +14,7 @@ | common.attrs.aria.role.application | common.attrs.aria.role.dialog | common.attrs.aria.role.feed + | common.attrs.aria.role.group | common.attrs.aria.role.log | common.attrs.aria.role.marquee | common.attrs.aria.role.presentation @@ -76,6 +77,8 @@ | common.attrs.aria.role.doc-toc | common.attrs.aria.role.menu | common.attrs.aria.role.menubar + | common.attrs.aria.role.none + | common.attrs.aria.role.presentation | common.attrs.aria.role.tablist )? ) diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-components.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-components.rnc index be8b8c01a..f3c4e2c34 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-components.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-components.rnc @@ -50,5 +50,28 @@ namespace c = "http://n.validator.nu/custom-elements/" ## The "is" attribute common.attrs.other &= attribute is { common.data.custom.element.name }? +## Slot: + + slot.elem.flow = + element slot { slot.inner.flow & slot.attrs } + slot.elem.phrasing = + element slot { slot.inner.phrasing & slot.attrs } + slot.attrs = + ( common.attrs + & slot.attrs.name? + & common.attrs.aria? + ) + slot.attrs.name = + attribute name { + string + } + slot.inner.flow = + ( common.inner.transparent.flow ) + slot.inner.phrasing = + ( common.inner.phrasing ) + + common.elem.flow |= slot.elem.flow + common.elem.phrasing |= slot.elem.phrasing + ## The "slot" attribute common.attrs.other &= attribute slot { text }? diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-forms.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-forms.rnc index 7a4dfb62e..c91ac0df6 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-forms.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-forms.rnc @@ -165,6 +165,8 @@ & input.button.attrs.value? & ( common.attrs.aria.implicit.button | common.attrs.aria.role.button + | common.attrs.aria.role.checkbox + | common.attrs.aria.role.combobox | common.attrs.aria.role.link | common.attrs.aria.role.menuitem | common.attrs.aria.role.menuitemcheckbox @@ -457,6 +459,7 @@ & ( common.attrs.aria.implicit.button | common.attrs.aria.role.button | common.attrs.aria.role.checkbox + | common.attrs.aria.role.combobox | common.attrs.aria.role.link | common.attrs.aria.role.menuitem | common.attrs.aria.role.menuitemcheckbox @@ -558,7 +561,10 @@ form.attrs.method.data } form.attrs.method.data = - ( "get" | "post" ) + ( "get" + | "post" + | "dialog" + ) form.attrs.enctype = attribute enctype { form.attrs.enctype.data diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-forms2.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-forms2.rnc index 1aa3df73c..5e0a03a32 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-forms2.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/web-forms2.rnc @@ -36,6 +36,7 @@ shared-form.attrs.formmethod.data = ( "get" | "post" + | "dialog" ) shared-form.attrs.formtarget = @@ -715,10 +716,7 @@ ( option.elem* & common.inner.phrasing ) datalist.attrs = ( common.attrs - & ( common.attrs.aria.role.listbox # aria-multiselectable must be false; check by assertions - | common.attrs.aria.implicit.listbox - )? - ) + ) common.elem.phrasing |= datalist.elem