RE: [xsl] Predicate not allowed on root matching template match pattern

Subject: RE: [xsl] 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: [xsl] 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?

Current Thread