This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: variable as select for template




> -----Original Message-----
> From: Jörg Heinicke [mailto:Joerg.Heinicke@gmx.de]
> Sent: Wednesday, September 19, 2001 5:42 PM
> To: xsl-list@lists.mulberrytech.com
> Subject: RE: [xsl] variable as select for template
> 
> 
> > > > I'd like to make it with <xsl:value-of...> or something else
> > > > because i have
> > > > to decide on the fly which node set i need. My thought was
> > > > may be i can use
> > > > document() function here???
> > > 
> > > I think you need to explain what you're trying to achieve. 
> > > Your solution
> > > isn't going to work, because xsl:value-of produces text as 
> > > its result, not a
> > > node-set.
> > > 
> > > Mike Kay
> > 
> > That was my try (it's a fragment):
> > 
> > <xsl:variable name="parent_comp">  <!-- I wanted to get a 
> node set in
> > variable -->
> >   <xsl:choose>
> >    <xsl:when test="$comp_id=''">   <!-- the node set depends on a
> > condition
> > -->
> >      <xsl:value-of select="component[@class=$comp_class and 
> not(@id)]"/>
> >    </xsl:when>
> >    <xsl:otherwise>
> >      <xsl:value-of select="component[@class=$comp_class and
> > @id=$comp_id]"/>
> >    </xsl:otherwise>
> >   </xsl:choose>
> > </xsl:variable>
> > 
> > then i could use variable $parent_comp just as node set 
> here and in other
> > places in stylesheet:
> > <xsl:apply-templates mode="extract_property" select="$parent_comp">
> > 
> > If <xsl:value-of select"..."/> always get text() as result, 
> are there any
> > solutions???
> > 
> > thanks for advise
> > 
> > Dmitri
> 
> A solution would be <xsl:copy-of 
> select="component[condition]"/> instead of
> you <xsl:value-of select=""/>.
> 
Hmmm. Have I understood you right???
I've tried to put instead of <xsl:value-of...> <xsl:copy-of ...> in
<xsl:variable>
as next:
<xsl:variable name="parent_comp">  
  <xsl:choose>
   <xsl:when test="$comp_id=''">   
     <xsl:copy-of select="component[@class=$comp_class and not(@id)]"/>
   </xsl:when>
   <xsl:otherwise>
     <xsl:copy-of select="component[@class=$comp_class and @id=$comp_id]"/>
   </xsl:otherwise>
 </xsl:choose>
</xsl:variable>
the call <xsl:apply-templates select="$parent_comp">
brings me:
XSLT Error (javax.xml.transform.TransformerException): Can not convert
#RTREEFRAG to a NodeList!
It seems to me the only solutions is to use nodeset() function. But I don't
want to do it because 
i'd like my stylesheet stays "cross processor".

> Problem: You have now stored a ResultTreeFragment in your 
> variable. For
> changing the RTF into a nodeset you need an extension like 
> msxsl:node-set() or
> xalan:nodeset().
> 
> Joerg
> 
> -- 
> GMX - Die Kommunikationsplattform im Internet.
> http://www.gmx.net
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]