|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: variable binding
> > So then what does it mean to say that "variable bindings declared in > templates should be visible to descendants and following siblings"? > This is what it says in the specs. Actually, it says "for all following-siblings and their descendants". This means nodes in the stylesheet tree that are following-siblings, or descendants of following-siblings, of the xsl:variable element in the stylesheet tree. Michael Kay > > Also, the whole reason I wanted to do this was because I am > trying to find > the leftmost daughter of the element ng. > Is there a way to do this? I have really thought about it a > lot but can't > seem to find anything workable. > -Shipra > > > > On Wed, 5 Nov 2003, Michael Kay wrote: > > > > > > > I'm having trouble with variable binding - basically, I read > > > that variable > > > bindings declared in templates should be visible to > descendants and > > > following siblings, but I'm getting not getting the behavior > > > I thought I > > > would with my stylesheet using Saxon 6.5.2... > > > > You've misunderstood the rules. The scope of variables is > static, not > > dynamic. It doesn't depend on your source document, and it doesn't > > depend on the way in which templates call each other. > You're trying to > > reference a variable in one template that's declared in a different > > template. What you need to do is pass the value as a parameter from > > one template to the other, using xsl:with-param and xsl:param. > > > > Michael Kay > > > > > > > > > > so the relevant part of my file looks like this (it's a > > > subbranch of s): > > > <ng of='proteins' role='h'> > > > <nx head='targeting' role='h'> > > > <W index='92'>the</W> > > > <W role='h' index='93'>targeting</W> > > > </nx> > > > <W index='94'>of</W> > > > <nx head='proteins' role='k'> > > > <W index='95'>the</W> > > > <W index='96'>myosin</W> > > > <W role='h' index='97'>proteins</W> > > > </nx> > > > </ng> > > > > > > and my stylesheet looks like this: > > > > > > <xsl:template match="@* | * | comment() | > processing-instruction() | > > > node()"> > > > <xsl:copy> > > > <xsl:apply-templates select="@*|node()"/> > > > </xsl:copy> > > > </xsl:template> > > > > > > <xsl:template match="s//ng//*[1]" priority="5"> > > > <xsl:variable name="branch">right</xsl:variable> > > > <xsl:copy> > > > <xsl:attribute name="branch"><xsl:value-of > > > select="$branch"/></xsl:attribute> > > > <xsl:apply-templates select="@*|node()"/> > > > </xsl:copy> > > > </xsl:template> > > > > > > > > > <xsl:template match="s//ng//*" priority="4"> > > > <xsl:copy> > > > <xsl:attribute name="branch"><xsl:value-of > > > select="$branch"/></xsl:attribute> > > > <xsl:apply-templates select="@*|node()"/> > > > </xsl:copy> > > > </xsl:template> > > > > > > but when I try to run it, it tells me that the variable > > > branch has not > > > been declared, even though it should first have processed > the first > > > daughter of ng, where it has been declared. > > > > > > Best, > > > shipra > > > > > > > > > XSL-List info and archive: > > > http://www.mulberrytech.com/xsl/xsl-list > > > > > > > > > XSL-List info and archive: > http://www.mulberrytech.com/xsl/xsl-list > > > > > > > XSL-List > info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








