From af7a5f7f24f1392e1e839117c087ce51c70d17bf Mon Sep 17 00:00:00 2001 From: Romain Deltour Date: Mon, 15 Nov 2021 01:34:55 +0100 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 --------------------- docs: switch to higher quality reference for alternative text Co-authored-by: Jens Oliver Meiert --------------------- switch to higher quality reference for alternative text fixes #1146 Co-authored-by: Steve Faulkner --------------------- ARIA: Allow aria-required with special input types Add aria-required to input types datetime-local / date / month / time / week Co-authored-by: Daniel --------------------- Allow rel attribute on SVG element Fixes https://github.com/validator/validator/pull/1008 Closes https://github.com/validator/validator/issues/1009 Co-authored-by: MattGarrish --------------------- Allow any ARIA role for element Fixes https://github.com/validator/validator/issues/1096 Fixes https://github.com/validator/validator/issues/981 Co-authored-by: Michael[tm] Smith --------------------- Allow aria.prop.posinset|setsize w/ role=tab Fixes https://github.com/validator/validator/issues/1060 Co-authored-by: Michael[tm] Smith --------------------- Allow “aria-placeholder” where “placeholder” is allowed Also, report error if element with “placeholder” also has “aria-placeholder”. Fixes https://github.com/validator/validator/issues/1098 Co-authored-by: Michael[tm] Smith --------------------- Allow only presentation|none for br[role] Fixes https://github.com/validator/validator/issues/1097 Co-authored-by: Michael[tm] Smith --------------------- Update required states for input[type=radio|checkbox] Fixes https://github.com/validator/validator/issues/1109 Co-authored-by: Michael[tm] Smith --------------------- Update allowed roles for figure element Fixes https://github.com/validator/validator/issues/1108 Co-authored-by: Michael[tm] Smith --------------------- Allow th[aria-rowspan] & th[aria-colspan] Relates to https://github.com/validator/validator/issues/1107 Co-authored-by: Michael[tm] Smith --------------------- Allow math element to have global ARIA attributes Fixes https://github.com/validator/validator/issues/1114 Co-authored-by: Michael[tm] Smith --------------------- Add menu, menubar, and tablist to allowed nav roles Fixes https://github.com/validator/validator/issues/1110 Co-authored-by: Michael[tm] Smith --------------------- Align aria-valuemin checking with current spec Fixes https://github.com/validator/validator/issues/1120 Co-authored-by: Michael[tm] Smith --------------------- Align aria-valuemax checking with current spec Fixes https://github.com/validator/validator/issues/1119 Co-authored-by: Michael[tm] Smith --------------------- Allow aria-description Fixes https://github.com/validator/validator/issues/1155 Co-authored-by: Michael[tm] Smith --------------------- Allow -1 for aria-setsize Fixes https://github.com/validator/validator/issues/1158 Co-authored-by: Michael[tm] Smith --------------------- update the allowed roles for wbr update allowed roles for `wbr` to match `br` element Co-authored-by: Scott O'Hara --- .../epubcheck/schema/30/epub-xhtml-30.rnc | 2 + .../epubcheck/schema/30/mod/html5/LAST_UPDATE | 2 +- .../epubcheck/schema/30/mod/html5/aria.rnc | 47 +++++- .../schema/30/mod/html5/assertions.sch | 140 +++++++++--------- .../epubcheck/schema/30/mod/html5/data.rnc | 2 + .../epubcheck/schema/30/mod/html5/embed.rnc | 1 + .../epubcheck/schema/30/mod/html5/media.rnc | 4 +- .../epubcheck/schema/30/mod/html5/phrase.rnc | 4 +- .../schema/30/mod/html5/structural.rnc | 3 + .../schema/30/mod/html5/web-forms.rnc | 6 +- .../schema/30/mod/html5/web-forms2.rnc | 20 +++ .../30/mod/svg11/svg-basic-structure.rnc | 4 +- .../schema/30/mod/svg11/svg-hyperlink.rnc | 3 +- 13 files changed, 151 insertions(+), 87 deletions(-) diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/epub-xhtml-30.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/epub-xhtml-30.rnc index 8a3368292..408574fff 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/epub-xhtml-30.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/epub-xhtml-30.rnc @@ -9,6 +9,8 @@ include "./mod/epub-svg-inc.rnc" { common.elem.phrasing |= svg common.elem.phrasing |= math +math.attributes &= aria.global? + svg.title.content |= common.elem.phrasing svg.foreignObject.content |= 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 717b477b7..c6fe963c4 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 @@ -224d49b95e1ec27706652639fad85ecec1b8291e \ No newline at end of file +9b11254fbe3c5cb2339794101e17e7d8ec844223 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 adf32917d..a214b0647 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 @@ -31,6 +31,7 @@ aria.global = & aria.prop.owns? & aria.prop.relevant? & aria.prop.roledescription? + & aria.prop.description? ) common.attrs.other &= aria.global? @@ -144,7 +145,6 @@ common.attrs.aria.implicit.searchbox |= ( aria.prop.activedescendant? & aria.prop.autocomplete? & aria.prop.multiline? - & aria.prop.placeholder? & aria.prop.readonly? & aria.prop.required? ) @@ -198,6 +198,10 @@ common.attrs.aria.implicit.column-or-row-header |= ( aria.prop.sort? & aria.prop.readonly? & aria.prop.required? + & aria.prop.colspan? + & aria.prop.colindex? + & aria.prop.rowspan? + & aria.prop.rowindex? & aria.state.selected? & aria.state.expanded? ) @@ -397,6 +401,12 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark common.data.idrefs #REVISIT add Schematron check } +## description + aria.prop.description = + attribute aria-description { + string + } + ## details aria.prop.details = attribute aria-details { @@ -584,7 +594,9 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark ## setsize aria.prop.setsize = attribute aria-setsize { - common.data.integer.non-negative + ( common.data.integer.non-negative + | string "-1" + ) } ## sort @@ -695,6 +707,7 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark aria.cell = ( aria.role.cell & aria.prop.colspan? + & aria.prop.colindex? & aria.prop.rowspan? & aria.prop.rowindex? ) @@ -873,6 +886,7 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark & aria.state.expanded? & aria.prop.required? & aria.prop.colspan? + & aria.prop.colindex? & aria.prop.rowspan? & aria.prop.rowindex? ) @@ -1086,6 +1100,13 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark common.attrs.aria |= aria.menuitemcheckbox common.attrs.aria.role.menuitemcheckbox |= aria.menuitemcheckbox +## menuitemcheckbox w/o checked required + aria.menuitemcheckbox-checked-not-required = + ( aria.role.menuitemcheckbox ) + aria.role.menuitemcheckbox-checked-not-required = + attribute role { string "menuitemcheckbox" } + common.attrs.aria.role.menuitemcheckbox-checked-not-required |= aria.menuitemcheckbox-checked-not-required + ## menuitemradio aria.menuitemradio = ( aria.role.menuitemradio @@ -1100,6 +1121,17 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark common.attrs.aria |= aria.menuitemradio common.attrs.aria.role.menuitemradio |= aria.menuitemradio +## menuitemradio w/o checked required + aria.menuitemradio-checked-not-required = + ( aria.role.menuitemradio + & aria.state.selected? + & aria.prop.posinset? + & aria.prop.setsize? + ) + aria.role.menuitemradio-checked-not-required = + attribute role { string "menuitemradio" } + common.attrs.aria.role.menuitemradio-checked-not-required |= aria.menuitemradio-checked-not-required + ## navigation aria.navigation = ( aria.role.navigation @@ -1257,7 +1289,6 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark & aria.prop.activedescendant? & aria.prop.autocomplete? & aria.prop.multiline? - & aria.prop.placeholder? & aria.prop.readonly? & aria.prop.required? ) @@ -1357,11 +1388,20 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark common.attrs.aria |= aria.switch common.attrs.aria.role.switch |= aria.switch +## switch w/o checked required + aria.switch-checked-not-required = + ( aria.role.switch ) + aria.role.switch-checked-not-required = + attribute role { string "switch" } + common.attrs.aria.role.switch-checked-not-required |= aria.switch-checked-not-required + ## tab aria.tab = ( aria.role.tab & aria.state.selected? & aria.state.expanded? + & aria.prop.posinset? + & aria.prop.setsize? ) aria.role.tab = attribute role { string "tab" } @@ -1421,7 +1461,6 @@ common.attrs.aria.implicit.navigation |= common.attrs.aria.implicit.landmark & aria.prop.activedescendant? & aria.prop.autocomplete? # not inherited & aria.prop.multiline? # not inherited - & aria.prop.placeholder? & aria.prop.readonly? # not inherited & aria.prop.required? ) diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/assertions.sch b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/assertions.sch index 2b34fcc01..115365042 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/assertions.sch +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/assertions.sch @@ -65,7 +65,7 @@ THE SOFTWARE. “alt” attribute, except under certain conditions. For details, consult guidance on providing text alternatives for images. - http://www.w3.org/wiki/HTML/Usage/TextAlternatives + https://www.w3.org/WAI/tutorials/images/ @@ -76,14 +76,14 @@ THE SOFTWARE. - The “” element must not contain any nested + The “” element must not contain any nested “” elements. - The “” element must not contain any nested + The “” element must not contain any nested “” elements. - The “for” attribute of the “label” + The “for” attribute of the “label” element must refer to a form control. @@ -133,22 +133,22 @@ THE SOFTWARE. - The “” element must not appear as a + The “” element must not appear as a descendant of the “address” element. - The “” element must not appear as a + The “” element must not appear as a descendant of the “footer” element. - The “” element must not appear as a + The “” element must not appear as a descendant of the “address” element. - The “header” element must not appear as a + The “header” element must not appear as a descendant of the “header” element. @@ -173,8 +173,8 @@ THE SOFTWARE. - - - + @@ -291,15 +291,15 @@ THE SOFTWARE. - The “img” element with the - “ismap” attribute set must have an ancestor + The “img” element with the + “ismap” attribute set must have an ancestor “a” element with the “href” attribute. - The “list” attribute of the “input” + The “list” attribute of the “input” element must refer to a “datalist” element. @@ -330,8 +330,8 @@ THE SOFTWARE. - The “select” element cannot have more than one - selected “option” element descendant unless the + The “select” element cannot have more than one + selected “option” element descendant unless the “multiple” attribute is specified. @@ -918,7 +918,7 @@ THE SOFTWARE. The value of the “border” attribute on the “” element - must be either “1” or the empty string. To regulate the thickness of table borders, + must be either “1” or the empty string. To regulate the thickness of table borders, Use CSS instead. http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes @@ -980,18 +980,18 @@ THE SOFTWARE. - The “contextmenu” attribute must refer to a + The “contextmenu” attribute must refer to a “menu” element. - + - + - + @@ -1002,74 +1002,74 @@ THE SOFTWARE. - An element with “role=option” requires + An element with “role=option” requires “role=listbox” on the parent. - An element with “role=menuitem” requires + An element with “role=menuitem” requires “role=menu” on the parent. - An element with “role=menuitemcheckbox” requires + An element with “role=menuitemcheckbox” requires “role=menu” on the parent. - An element with “role=menuitemradio” requires + An element with “role=menuitemradio” requires “role=menu” on the parent. - An element with “role=tab” requires + An element with “role=tab” requires “role=tablist” on the parent. - An element with “role=treeitem” requires + An element with “role=treeitem” requires “role=tree” on the parent. - An element with “role=listitem” requires + An element with “role=listitem” requires “role=list” on the parent. - - An element with “role=row” requires + An element with “role=row” requires “role=treegrid” or “role=grid” on the parent or grandparent. - + - An element with “role=gridcell” requires + An element with “role=gridcell” requires “role=row” on the parent. - + @@ -1078,78 +1078,78 @@ THE SOFTWARE. - + - An element must not be a child of - “role=menu” unless it has - “role=menuitem”, - “role=menuitemcheckbox” or + “role=menu” unless it has + “role=menuitem”, + “role=menuitemcheckbox” or “role=menuitemradio”. - + An element must not be a child of - “role=tree” unless it has + “role=tree” unless it has “role=treeitem”. - + An element must not be a child of - “role=list” unless it has + “role=list” unless it has “role=listitem”. - + An element must not be a child of - “role=radiogroup” unless it has + “role=radiogroup” unless it has “role=radio”. - + An element must not be a child of - “role=row” unless it has + “role=row” unless it has “role=gridcell”. - + An element must not be a child of - “role=tablist” unless it has + “role=tablist” unless it has “role=role”. - + - The “aria-activedescendant” attribute must refer to a + The “aria-activedescendant” attribute must refer to a descendant element. @@ -1158,7 +1158,7 @@ THE SOFTWARE. - The “aria-controls” attribute must point to an element in the + The “aria-controls” attribute must point to an element in the same document. @@ -1167,7 +1167,7 @@ THE SOFTWARE. - The “aria-describedby” attribute must point to an element in the + The “aria-describedby” attribute must point to an element in the same document. @@ -1176,7 +1176,7 @@ THE SOFTWARE. - The “aria-flowto” attribute must point to an element in the + The “aria-flowto” attribute must point to an element in the same document. @@ -1185,7 +1185,7 @@ THE SOFTWARE. - The “aria-labelledby” attribute must point to an element in the + The “aria-labelledby” attribute must point to an element in the same document. @@ -1194,7 +1194,7 @@ THE SOFTWARE. - The “aria-owns” attribute must point to an element in the + The “aria-owns” attribute must point to an element in the same document. diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/data.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/data.rnc index fc5592c9f..f705620a8 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/data.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/data.rnc @@ -61,9 +61,11 @@ ( common.attrs & meter.attrs.value & meter.attrs.min? + & aria.prop.valuemin? & meter.attrs.low? & meter.attrs.high? & meter.attrs.max? + & aria.prop.valuemax? & meter.attrs.optimum? ) meter.attrs.value = 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 011b0783f..b4cc0b6aa 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 @@ -290,6 +290,7 @@ namespace local = "" | aria-current | aria-details | aria-describedby + | aria-description | aria-disabled | aria-dropeffect | aria-errormessage diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/media.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/media.rnc index b70d7100e..83bc673f7 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/media.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/media.rnc @@ -182,9 +182,7 @@ figure.attrs = ( common.attrs & ( common.attrs.aria.implicit.figure - | common.attrs.aria.role.figure - | common.attrs.aria.role.presentation - | common.attrs.aria.role.group + | common.attrs.aria? )? ) figure.inner = diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/phrase.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/phrase.rnc index 80185d00c..d6a0c371d 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/phrase.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/html5/phrase.rnc @@ -406,7 +406,7 @@ referrerpolicy = element br { br.inner & br.attrs } br.attrs = ( common.attrs - & common.attrs.aria? + & common.attrs.aria.role.presentation? ) br.inner = ( empty ) @@ -419,7 +419,7 @@ referrerpolicy = element wbr { wbr.inner & wbr.attrs } wbr.attrs = ( common.attrs - & common.attrs.aria? + & common.attrs.aria.role.presentation? ) wbr.inner = ( empty ) 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 356893484..77b040e27 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 @@ -74,6 +74,9 @@ | common.attrs.aria.role.doc-index | common.attrs.aria.role.doc-pagelist | common.attrs.aria.role.doc-toc + | common.attrs.aria.role.menu + | common.attrs.aria.role.menubar + | common.attrs.aria.role.tablist )? ) nav.inner = 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 86f687361..7a4dfb62e 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 @@ -112,9 +112,9 @@ & ( common.attrs.aria.implicit.checkbox | common.attrs.aria.role.checkbox | common.attrs.aria.role.button - | common.attrs.aria.role.menuitemcheckbox + | common.attrs.aria.role.menuitemcheckbox-checked-not-required | common.attrs.aria.role.option - | common.attrs.aria.role.switch + | common.attrs.aria.role.switch-checked-not-required )? ) input.checkbox.attrs.type = @@ -140,7 +140,7 @@ & input.radio.attrs.value? & ( common.attrs.aria.implicit.radio | common.attrs.aria.role.radio - | common.attrs.aria.role.menuitemradio + | common.attrs.aria.role.menuitemradio-checked-not-required )? ) input.radio.attrs.type = 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 10cde3524..1aa3df73c 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 @@ -87,6 +87,7 @@ & shared-form.attrs.minlength? & shared-form.attrs.pattern? & shared-form.attrs.placeholder? + & aria.prop.placeholder? & shared-form.attrs.readonly? & shared-form.attrs.required? ) @@ -97,6 +98,7 @@ & shared-form.attrs.minlength? & shared-form.attrs.pattern? & shared-form.attrs.placeholder? + & aria.prop.placeholder? & shared-form.attrs.readonly? & shared-form.attrs.required? & shared-form.attrs.size? @@ -155,6 +157,7 @@ & shared-form.attrs.pattern? & shared-form.attrs.required? & shared-form.attrs.placeholder? + & aria.prop.placeholder? & shared-form.attrs.minlength? ) @@ -165,6 +168,7 @@ & input.attrs.list? & shared-form.attrs.pattern? & shared-form.attrs.placeholder? + & aria.prop.placeholder? & shared-form.attrs.required? & aria.prop.required? & shared-form.attrs.minlength? @@ -249,8 +253,11 @@ & shared-input.attrs & input.datetime-local.attrs.type & input.datetime-local.attrs.min? + & aria.prop.valuemin? & input.datetime-local.attrs.max? + & aria.prop.valuemax? & input.attrs.step.float? + & aria.prop.required? & input.datetime-local.attrs.value? ) input.datetime-local.attrs.type = @@ -282,7 +289,10 @@ & shared-input.attrs & input.date.attrs.type & input.date.attrs.min? + & aria.prop.valuemin? & input.date.attrs.max? + & aria.prop.valuemax? + & aria.prop.required? & input.attrs.step.integer? & input.date.attrs.value? ) @@ -315,7 +325,10 @@ & shared-input.attrs & input.month.attrs.type & input.month.attrs.min? + & aria.prop.valuemin? & input.month.attrs.max? + & aria.prop.valuemax? + & aria.prop.required? & input.attrs.step.integer? & input.month.attrs.value? ) @@ -348,7 +361,10 @@ & shared-input.attrs & input.time.attrs.type & input.time.attrs.min? + & aria.prop.valuemin? & input.time.attrs.max? + & aria.prop.valuemax? + & aria.prop.required? & input.attrs.step.float? & input.time.attrs.value? ) @@ -381,7 +397,10 @@ & shared-input.attrs & input.week.attrs.type & input.week.attrs.min? + & aria.prop.valuemin? & input.week.attrs.max? + & aria.prop.valuemax? + & aria.prop.required? & input.attrs.step.integer? & input.week.attrs.value? ) @@ -661,6 +680,7 @@ & shared-form.attrs.minlength? & shared-form.attrs.required? & textarea.attrs.placeholder? + & aria.prop.placeholder? & shared-form.attrs.dirname? & textarea.attrs.rows? & ( ( textarea.attrs.wrap.hard diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/svg11/svg-basic-structure.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/svg11/svg-basic-structure.rnc index 209f6c16f..60d833a82 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/svg11/svg-basic-structure.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/svg11/svg-basic-structure.rnc @@ -175,9 +175,7 @@ grammar { SVG.DocumentEvents.attrib, SVG.GraphicalEvents.attrib, SVG.External.attrib, - (common.attrs.aria.role.application - | common.attrs.aria.landmark.document - | common.attrs.aria.role.img)?, + common.attrs.aria?, attribute x { Coordinate.datatype }?, attribute y { Coordinate.datatype }?, attribute width { Length.datatype }?, diff --git a/src/main/resources/com/adobe/epubcheck/schema/30/mod/svg11/svg-hyperlink.rnc b/src/main/resources/com/adobe/epubcheck/schema/30/mod/svg11/svg-hyperlink.rnc index 457d4956a..15a396fad 100644 --- a/src/main/resources/com/adobe/epubcheck/schema/30/mod/svg11/svg-hyperlink.rnc +++ b/src/main/resources/com/adobe/epubcheck/schema/30/mod/svg11/svg-hyperlink.rnc @@ -65,5 +65,6 @@ grammar { SVG.External.attrib, (common.attrs.aria.implicit.link | common.attrs.aria)?, attribute transform { TransformList.datatype }?, - attribute target { LinkTarget.datatype }? + attribute target { LinkTarget.datatype }?, + attribute rel { string }? }