Subject: RE: Predicate not allowed on root matching template match pattern
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 26 Aug 2005 17:50:45 +0100
|
This syntax isn't allowed either in an XPath expression or in an XSLT match
pattern, either in 1.0 or 2.0.
No particular reason except that the grammar surrounding "/" is pretty
tortuous.
In XPath (but not in a match pattern) you can write (/)[predicate].
In XSLT 2.0 patterns you can write match="document-node()[predicate]"
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: andrew welch [mailto:andrew.j.welch@xxxxxxxxx]
> Sent: 26 August 2005 16:48
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Predicate not allowed on root matching
> template match pattern
>
> I've just noticed you can't have a predicate on the root
> matching template:
>
> <xsl:template match="/[some condition]"/>
>
> I noticed because I have two root matching templates, one for testing
> and one for production, and I wanted an easy way to switch between
> them eg:
>
> <xsl:template match="/[false()]">
>
> or say using a parameter:
>
> <xsl:template match="/[$testing]">
>
> The processors (Saxon 6.5.4, 8.5b, msxml 3 and 4) all complain about
> the unexpected token '[', apparently not realising this is the root
> matching template and not a step in a pattern.
>
> Is it wrong to use multiple root matching templates in this way?
|