No warnings, and warnings are no suppressed.

However, I did find something else that may or may not have anything to do with this. In my real-world exmaple, putting the "[1]" filter in did not help things. After messing around a bit I found that I had to stick a "current()" before the "preceding-sibling" to get it to work.

In particular, this code does not work as expected:

<xsl:for-each-group select="saxon:discard-document(document(sessionExtractor/@file))/student/session"
        group-starting-with="session[date:date(udf:dT(current()/@startedOn)) gt date:date(udf:dT(preceding-sibling::session[1]/@startedOn))]">
   
(udf:dT converts lexical form to match xs:dateTime.)

But when I put a "current()" into the second portion, it works great:

<xsl:for-each-group select="saxon:discard-document(document(sessionExtractor/@file))/student/session"
        group-starting-with="session[date:date(udf:dT(current()/@startedOn)) gt date:date(udf:dT(current()/preceding-sibling::session[1]/@startedOn))]">
   
I was quite surprised to find that inserting a "current()/" was at all meaninful there, but I definitely get different output.
Don't feel compelled to respond since I at least have something that works for me now, but in case the "Current()" thing rings any bells, I thought I'd pass it along. I obviously don't understand Patterns since I don't see why it would make any difference there.

-David



On Fri, May 18, 2012 at 12:49 AM, Michael Kay <mike@saxonica.com> wrote:
I suspect this is caused by the XSLT rule that makes dynamic errors in patterns recoverable. (The pattern doesn't match a node if evaluation fails.) But I would expect Saxon to output a warning when this happens, unless warnings are suppressed.

Michael Kay
Saxonica

--

"A false conclusion, once arrived at and widely accepted is not dislodged easily, and the less it is understood, the more tenaciously it is held." - Cantor's Law of Preservation of Ignorance.