RE: [xsl] Problem with str:tokenize

Subject: RE: [xsl] Problem with str:tokenize
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 27 Jun 2006 15:12:24 +0100
> The suggested way doesnot work. The problem is with 
> <xsl:for-each select="str:tokenize(//root/path1/info/name,',')">
> 
> If I have <xsl:for-each select="//root/path1/info">, then the 
> <xsl:for-each select="//root/path2/deptinfo"> for loop works.
> 
> So the real problem is with 
> "str:tokenize(//root/path1/info/name,',')".
> 
> Any suggestions for how I can get this working. I really do 
> not know what is the difference.

You clearly didn't understand the previous response. It's hard to know why,
since the response seems clear enough. str:tokenize() constructs a new
document containing the tokens. When you do xsl:for-each on these tokens,
this changes the context node and therefore the meaning of a path expression
starting with "/".

> 
> THanks
> Sanket
> 
> 
> 
> 
> On 6/27/06, David Carlisle <davidc@xxxxxxxxx> wrote:
> >
> > This is a faq, inside the loop the current node is not in your 
> > original document so // does not select nodes from the 
> input document. 
> > save the input document in a global variable
> >
> > <xsl:variable name="inputdoc" select="/"/>
> >
> > then refer to it as
> >
> >        <xsl:for-each select="$inputdoc/root/path2/deptinfo">
> >
> > assuming root is your top level element select="//root/ is a very 
> > expensive way to select it as it will search the entire document 
> > looking for root elements. You want /root not //root (or in 
> this case 
> > you want $inputdoc/root not $inputdoc//root )
> >
> > David
> >
> > 
> ______________________________________________________________________
> > __ This e-mail has been scanned for all viruses by Star. 
> The service 
> > is powered by MessageLabs. For more information on a proactive 
> > anti-virus service working around the clock, around the 
> globe, visit:
> > http://www.star.net.uk
> > 
> ______________________________________________________________________
> > __

Current Thread