Hi,
Trying to formalize rules 37-41 at
http://www.w3.org/WAI/GL/WCAG20/tests/test37.htmlhttp://www.w3.org/WAI/GL/WCAG20/tests/test38.htmlhttp://www.w3.org/WAI/GL/WCAG20/tests/test39.htmlhttp://www.w3.org/WAI/GL/WCAG20/tests/test40.htmlhttp://www.w3.org/WAI/GL/WCAG20/tests/test41.html
for headers h1, h2, h3, h4, h5, and h6, I agree in the contents (anything
after h5 will be OK, ...), but not in the method they are written. The
error should not be found in the next header, but in the header itself.
For example:
* all h1 will always be OK, anywhere they are.
* Those h2 having no preceding h1 are an error: maybe they should be
h1. This is no a problem of a non existing h1. It is a problem of an
existing h2 that has no h1 before.
* And so on ...
I provided XQuery expressions for all these:
For h1:
()
For h2:
//h2[preceding::h1 = ()]
For h3:
//h3[let $h3:=self::h3 return
let $h2:=$h3/preceding::h2[1] return
let $h1:=$h3/preceding::h1[1] return
$h1=() or $h2=() or $h1>>$h2]
Which says that for every h3, there should be a prior h1 and h2 and that
those should be in order (the h1 before the h2). Otherwise, the h3 is in
error.
For h4:
//h4[let $h4:=self::h4 return
let $h3:=$h4/preceding::h3[1] return
let $h2:=$h4/preceding::h2[1] return
let $h1:=$h4/preceding::h1[1] return
$h1=() or $h2=() or $h3=() or $h1>>$h2 or $h2>>$h3]
For h5:
//h5[let $h5:=self::h5 return
let $h4:=$h5/preceding::h4[1] return
let $h3:=$h5/preceding::h3[1] return
let $h2:=$h5/preceding::h2[1] return
let $h1:=$h5/preceding::h1[1] return
$h1=() or $h2=() or $h3=() or $h4=()
or $h1>>$h2 or $h2>>$h3 or $h3>>$h4]
For h6:
//h6[let $h6:=self::h6 return
let $h5:=$h6/preceding::h5[1] return
let $h4:=$h6/preceding::h4[1] return
let $h3:=$h6/preceding::h3[1] return
let $h2:=$h6/preceding::h2[1] return
let $h1:=$h6/preceding::h1[1] return
$h1=() or $h2=() or $h3=() or $h4=() or $h5=() or
$h1>>$h2 or $h2>>$h3 or $h3>>$h4 or $h4>>$h5]
Comments?
Vicente Luque Centeno
Dep. IngenierÃ­a TelemÃ¡tica
Universidad Carlos III de Madrid
http://www.it.uc3m.es/vlc