Subject: Re: [xsl] FW: How to store a node in a local variable using if or when From: Mukul Gandhi <mukulw3@xxxxxxxxx> Date: Thu, 31 Jul 2003 21:23:49 -0700 (PDT) |
You may try a XSL as below .. <xsl:template match="something"> <xsl:if test="condition1"> <xsl:call-template name="process-node"> <xsl:with-param name="x" select="some-xpath1"/> </xsl:call-template> </xsl:if> <xsl:if test="condition2"> <xsl:call-template name="process-node"> <xsl:with-param name="x" select="some-xpath2"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="process-node"> <xsl:param name="x"/> <xsl:for-each select="$x"> <!-- process --> </xsl:for-each> </xsl:template> Here i am creating a named template process-node. You can call it with xsl:call-template with a different parameter value, depending which condition evaluates true.. Regards, Mukul --- Néstor_Boscán <nestor.boscan@xxxxxxxxxx> wrote: > Hi > > I would like to process information from a node that > can come from two > different places in the XML tree. Because the > processing is the same I > create a variable and with a choice element I will > set the variable to > one of the two nodes. So I can figure out only two > ways of doing it that > doesn't work. Here are the two examples: > > First example use <xsl:value-of>: > > <xsl:variable name="node"/> > <xsl:choose> > <xsl:when test="condition1"> > <xsl:value-of select="/a/b/c"/> > </xsl:when> > <xsl:when test="condition2"> > <xsl:value-of select="/c"/> > </xsl:when> > </xsl:choose> > </xsl:variable> > > <xsl:for-each select="$node"> > process > </xsl:for-each> > > Will not work because <xsl:value-of> only selects > strings not nodes. So > <xsl:variable name="node" select="path"/> is not the > same as > <xsl:variable name="node"><xsl:value-of > select="path"/></xsl:variable> > > Second example use "select" attribute in variable: > > <xsl:choose> > <xsl:when test="condition1"> > <xsl:variable name="node" select="/a/b/c"/> > </xsl:when> > <xsl:when test="condition2"> > <xsl:variable name="node" select="/c"/> > </xsl:when> > </xsl:choose> > </xsl:variable> > > <xsl:for-each select="$node"> > process > </xsl:for-each> > > Will not work because variable "node" is out of > scope. > > Any ideas? > > > > XSL-List info and archive: > http://www.mulberrytech.com/xsl/xsl-list > __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] FW: How to store a node i, ohmson ampere | Thread | RE: [xsl] FW: How to store a node i, Néstor Boscán |
RE: [xsl] FW: How to store a node i, ohmson ampere | Date | [xsl] Re: How to store a node in a , Dimitre Novatchev |
Month |