Cool. I have another hassle with JSL that I'll document in a test case today hopefully.
Thanks for the quick turnaround. I had no idea on how to fix this and it'll save me lots of grey hair knowing it's fixed :) -- dIon Gillard, Multitask Consulting Work: http://www.multitask.com.au Developers: http://adslgateway.multitask.com.au/developers "James Strachan" <[EMAIL PROTECTED]> wrote on 20/11/2002 12:31:53 AM: > OK this bug is now fixed - thanks once again for both finding it and > replicating it in a JellyUnit test case. This made fixing it considerably > easier. > > It was a strange, hard to explain bug caused by the current TagScript > implementation (in the impl package). The bug is due to the body of a > <jsl:template> actually being invoked from outside of the TemplateTag's > doTag() method (as its invoked from inside the stylesheet) and so the parent > of the nested tags could get stale when the stylesheet is redefined in a > loop. This is now fixed in CVS. > > James > ------- > http://radio.weblogs.com/0112098/ > ----- Original Message ----- > From: <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Sunday, November 17, 2002 3:52 AM > Subject: [jelly] [jsl] XPath context for templates and looping > > > > I have what appears to be a bug in the jsl tag library wrt relative select > > attributes. > > > > In a script (actually the conversion of Maven's site.dvsl to jelly's jsl), > > I > > 1)loop through a set of files using core:forEach. > > 2) Within the loop each file is then parsed using xml:parse. > > 3) The parsed doc is then used as the source of the jsl:stylesheet > > 4) Within a template an xml:expr is used to retrieve nodes with a select > > relative to the template (or so I thought), e.g. > > select="./properties/author" > > > > First time through all gets extracted as expected. For every other > > iteration though, it appears the xpath context has 'remembered' the > > original document. > > > > Here's a snippet: > > ---------- Start Snippet --------- > > Step 1: <j:forEach var="file" items="${docFiles.iterator()}"> > > Step 2: <x:parse var="doc" xml="${file.toURL()}" /> > > Step 3: <jsl:stylesheet select="$doc"> > > <jsl:template match="document" trim="no"> > > <x:doctype name="html" > > publicId="-//CollabNet//DTD XHTML 1.0 Transitional//EN" > > systemId= > > "http://www.collabnet.com/dtds/collabnet_transitional_10.dtd" /> > > <html> > > <head> > > Step 4: <j:set var="docTitle"><x:expr select= > > "./properties/title" /></j:set> > > Test <x:expr select="./properties/title" /> - <x:expr > > select="$doc/document/properties/title" /> > > > > ---------- End Snippet ----------- > > > > On the Test line above, just after Step 4, the first expr stays the same > > all the way through the loop. > > The second expr changes as I would expect. > > > > Anything I can do to work around this, short of specifying the full select > > attribute each time? > > > > I've tried to find out where the bad code is, but so far no luck :) > > -- > > dIon Gillard, Multitask Consulting > > Work: http://www.multitask.com.au > > Developers: http://adslgateway.multitask.com.au/developers > > > > > > -- > > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > > > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > ForwardSourceID:NT0008FED6 -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
