[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Restrictions on XPath expressions in


Subject: RE: [xsl] Restrictions on XPath expressions in <xsl:key>
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 19 Dec 2007 22:15:03 -0000

> >Does someone know a reason why this won't compile:
> >
> ><xsl:key name="templates"
> >match="/onm:NetworkModel/onm:Graph/(onm:Nodes|onm:Links)/(onm
> :Link|onm:
> >N ode)/onm:Templates/onm:Template" use="@Name" />
> 
> Because match= attributes are restricted to be XPath 
> patterns, not all XPath expressions.
> 
> >...but this will:
> >
> ><xsl:template match="onm:Graph">
> >     <xsl:copy>
> >         <xsl:if
>
>test="(onm:Nodes/onm:Node|onm:Links/onm:Link)/onm:Attributes/onm:Attribute"
>
> 
> Because test= is not restricted to only being a pattern.
> 

And even if it weren't a distinction between patterns and expressions, in an
XPath 1.0 expression (which I suspect you are using) a union expression can
be used on the lhs of "/" but not on the rhs of "/".

Michael Kay
http://www.saxonica.com/


Current Thread
Keywords