xsl-list
[Top] [All Lists]

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

2009-12-17 08:41:26


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:choose>
  <xsl:when test="some predicate">
    <xsl:sequence select="this"/>
  </xsl:when>
  <xsl:otherwise>
        <xsl:sequence select="orthis"/>
  </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

David



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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--