Just a head's up that it appears no error is triggered in some cases where an illegal axis is used inside a pattern.

I was trying to use <xsl:for-each-group> today and forgot that only child and attribute axes are allowed in patterns. When I ran the following script, no error was reported.

<xsl:template match="/">
        <xsl:for-each-group select="Employees/Employee" group-starting-with="Employee[xs:date(@Bday) gt xs:date(preceding-sibling::Employee/@Bday)]">
            <xsl:copy-of select="."/>

Instead, the processor appears to just refuse to find any matches, so only one group is ever formed, even if there are nodes that would logically match the pattern in question.



"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.