| Subject: Re: [xsl] RE: Returning A Tree From: "Swen Thuemmler" <Swen.Thuemmler@xxxxxxxxxxxx> Date: Thu, 6 Sep 2001 10:51:26 +0200 (CEST) | 
On Wed, 5 Sep 2001, Darren Hayduk wrote:
> OK, here is an example.
[...]
> <xsl:template name="selectNodes">
>   <xsl:param name="doWhat"/>
>   <xsl:choose>
>      <xsl:when test="$doWhat='GiveMeA'">
>         <xsl:for-each select="//A">
>            <xsl:value-of select="."/>
This only gives you a text node with the string value of A.
>         </xsl:for-each>
>      </xsl:when>
>      <xsl:when test="$doWhat='GiveMeB'">
>         <xsl:copy-of select="//B"/>
Ok, here you have a node-set.
>      </xsl:when>
>   </xsl:choose>
> </xsl:template>
Now, you can't return a node-set with call-template, so your variable now contains
a result tree fragment (when you use xsl:copy-of select="$B", you get:
  <B>B1</B>
  <B>B2</B>
  <B>B3</B>
  <B>B4</B>
Now in XSL1.0, the only thing you can do with a node set is converting it to a
string or copy it to the current output destination. But some processors have
an extension function, which allows you to convert this to a node-set (containing
a single synthetic root node which has in your case the B nodes as children)
[Note: this is just my understanding, I might be wrong here].
You could then do something like (I think):
  <xsl:for-each select="saxon:node-set($B)/B">
     <xsl:value-of select="."/>
     <xsl:if test="not(position()=last())">
        <xsl:text>,</xsl:text>
     </xsl:if>
  </xsl:for-each>
But newer processors seemt to do the conversion themselves (in anticipation of
the changes in XSL-1.1 (or 2.0), so with Saxon 6.4 I can also say:
  <xsl:for-each select="$B/B">
     <xsl:value-of select="."/>
     <xsl:if test="not(position()=last())">
        <xsl:text>,</xsl:text>
     </xsl:if>
  </xsl:for-each>
Hope this helps
--Swen
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| [xsl] RE: Returning A Tree, Darren Hayduk | Thread | Re: [xsl] RE: Returning A Tree, Jeni Tennison | 
| Re: [xsl] Selecting between multipl, Jeni Tennison | Date | Re: [xsl] RE: Returning A Tree, Jeni Tennison | 
| Month |