Subject: RE: Testing implicit XHTML hierarchy
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 5 Jul 2007 11:04:45 +0100
|
> > The rules could be expressed like this:
> >
> > 1. There can only be one h1, and it must be the first heading.
> > 2. The first heading after h1 must be h2.
> > 3. The first heading after h2 must be h2 or h3.
> > 4. The first heading after h3 must be h2 or h3 or h4.
> > 5. The first heading after h4 must be h2 or h3 or h4 or h5
> > 6. The first heading after h5 or h6 can be anything except h1.
Of course, I translated your rules too literally. In each case what you
meant to say is "The first heading after X, if there is one, must be...". So
change the result to
> >
>
> Assuming the context node is one of these headings:
>
not(following-sibling::*[h:is-heading(.)][1][h:level(.) le 1 or h:level(.)
gt h:level(current())+1])
>
> where
>
> h:is-heading() is {matches(local-name(), 'h[1-6]')}
>
> and
>
> h:level() is {xs:integer(substring(local-name(), 2))
>
> (And add a condition on the parent element that there is an h1)
>
> Michael Kay
> http://www.saxonica.com/
|