diff --git a/schema/html5/common.rnc b/schema/html5/common.rnc index 59a5e1404..2a134398d 100644 --- a/schema/html5/common.rnc +++ b/schema/html5/common.rnc @@ -211,6 +211,11 @@ common.attrs.other = w:string "autofocus" | w:string "" } + common.attrs.blocking = + attribute blocking { + list { w:string "render" } + } + common.attrs.nonce = attribute nonce { string diff --git a/schema/html5/core-scripting.rnc b/schema/html5/core-scripting.rnc index 69ec1c856..ac43aad0b 100644 --- a/schema/html5/core-scripting.rnc +++ b/schema/html5/core-scripting.rnc @@ -33,6 +33,7 @@ datatypes w = "http://whattf.org/datatype-draft" & script.attrs.language? # restricted in Schematron & script.attrs.integrity? & embedded.content.attrs.crossorigin? + & common.attrs.blocking? & referrerpolicy? ) script.attrs.src = diff --git a/schema/html5/meta.rnc b/schema/html5/meta.rnc index ef075a2ac..6c7033419 100644 --- a/schema/html5/meta.rnc +++ b/schema/html5/meta.rnc @@ -166,6 +166,7 @@ datatypes w = "http://whattf.org/datatype-draft" & link.attrs.imagesizes? # link.attrs.title included in common.attrs & embedded.content.attrs.crossorigin? + & common.attrs.blocking? & common.attrs.aria.role.link? ) link.attrs.href = @@ -253,6 +254,7 @@ datatypes w = "http://whattf.org/datatype-draft" ( common.attrs & style.attrs.type? & style.attrs.media? + & common.attrs.blocking? # style.attrs.title included in common.attrs ) style.attrs.type = diff --git a/src/nu/validator/checker/schematronequiv/Assertions.java b/src/nu/validator/checker/schematronequiv/Assertions.java index dd965168b..737178034 100644 --- a/src/nu/validator/checker/schematronequiv/Assertions.java +++ b/src/nu/validator/checker/schematronequiv/Assertions.java @@ -3166,6 +3166,18 @@ else if ("bdo" == localName && atts.getIndex("", "dir") < 0) { + " \u201Cprerender\u201D, or" + " \u201Cstylesheet\u201D."); } + if (atts.getIndex("", "blocking") > -1 + && (atts.getIndex("", "rel") == -1 + || !(relList.contains("modulepreload") + || relList.contains("preload") + || relList.contains("stylesheet")))) { + err("A \u201Clink\u201D element with a" + + " \u201Cblocking\u201D attribute must have a" + + " \u201Crel\u201D attribute whose value is" + + " \u201Cmodulepreload\u201D," + + " \u201Cpreload\u201D, or" + + " \u201Cstylesheet\u201D."); + } } // microdata