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