Re: [xsl] Set variable via contents of <variable> element

Subject: Re: [xsl] Set variable via contents of <variable> element
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 17 Dec 2009 13:41:00 GMT
It depends if you are using xslt1 or 2.

In XSLT1 if you use content then you always generate a result tree
fragment (essentially a new node set, together with a restriction that
it may not be queried with xpath).
So then if you want to do a conditional you have to use the contition in
xpath, since xpath1 doesn't have if then else you have to be a bit
creative eg

<xsl:variable name="x"
   select="this[some predicate] | orthis[not(some predicate)]"/>

so although formally this is a union, only one of the branches is ever
non empty so really it is a conditional.

In xpath2 you could write that as

<xsl:variable name="x"
   select="if (some predicate) this else  orthis"/>

or, if you prefer

<xsl:variable name="x" as="element()*">
  <xsl:when test="some predicate">
    <xsl:sequence select="this"/>
        <xsl:sequence select="orthis"/>


The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 

Current Thread