|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Using a parameter in a select within a recursive
Just a minor point:
<xsl:param name="number" select="141"/> is correctly treated as a
number because the first character of an element name must be a letter
or underscore (_)
Josh
On Sun, 19 Sep 2004 00:31:07 -0700, M. David Peterson
<m.david@xxxxxxxxxx> wrote:
> Hello again Helen :)
>
> Yeah, this stylesheet has several things keeping it from working. First, your
> xsl:param elements need to either not use the select attribute and just set the
> value within the opening and closing tags or use single quotes inside the select
> attribute to tell the processor to use the contents as an absolute value. The
> way its setup right now you are telling the processor to set there value to the
> value of the elements named 141 and 19.
>
> The second problem is that you are telling the processor to output the literal
> string value of the concatenation of the string "FIELD_" and the value of
> $number. The way around this is to instead do a test using the local-name()
> function to compare to your concated string value and output the value of the
> element that matches...
>
> I would try something like the following. Note: I excluded the fo elements to
> simplify -- just add it back as needed. I also lowered the number values of the
> number and cols params to simplify the input and output for testing.
>
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
>
> <xsl:template match="/">
> <xsl:call-template name="adddata">
> <xsl:with-param name="number" select="'5'"/>
> <xsl:with-param name="cols" select="'0'"/>
> </xsl:call-template>
> </xsl:template>
>
> <xsl:template name="adddata">
> <xsl:param name="number"/>
> <xsl:param name="cols"/>
>
> <xsl:choose>
> <xsl:when test="$number >= $cols">
> <xsl:value-of select="//*[local-name() = concat('FIELD_',$number)]"/>
> <xsl:call-template name="adddata">
> <xsl:with-param name="number" select="$number - 1"/>
> <xsl:with-param name="cols" select="$cols" />
> </xsl:call-template>
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of select="$cols"/>
> </xsl:otherwise>
> </xsl:choose>
>
> </xsl:template>
> </xsl:stylesheet>
>
> Which when you process this XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <fields>
> <FIELD_1>test of field 1</FIELD_1>
> <FIELD_2>test of field 2</FIELD_2>
> <FIELD_3>test of field 3</FIELD_3>
> <FIELD_4>test of field 4</FIELD_4>
> <FIELD_5>test of field 5</FIELD_5>
> </fields>
>
> Looks like this:
>
> test of field 5test of field 4test of field 3test of field 2test of field 10
>
> Hope this helps!
>
> Best regards,
>
> <M:D/>
>
>
>
> Sean & Helen wrote:
> > Hi everyone,
> > I am attempting to use a parameter within a recursive template to select a
> > different node whenever the template loops.
> >
> > My datafile looks something like this:
> >
> > <FIELD_1>
> > <FIELD_2>
> > <FIELD_3>
> > <FIELD_4>
> > <FIELD_5>
> > ...
> > <FIELD_142>
> >
> > I would like to loop through and use the incremented parameter to select the
> > contents of the node. So far I have been trying to use this template:
> >
> > <xsl:template name="adddata">
> > <xsl:param name="number" select="141" />
> > <xsl:param name="cols" select="19" />
> >
> > <xsl:choose>
> > <xsl:when test="$number <= $cols">
> > <xsl:value-of select="cols"/>
> > </xsl:when>
> > <xsl:otherwise>
> > <xsl:call-template name="adddata">
> > <xsl:with-param name="number" select="$number - 1"/>
> > <xsl:with-param name="cols" select="$cols" />
> > </xsl:call-template>
> > <fo:table-cell >
> > <fo:block><xsl:value-of select="concat('FIELD_',$number)"
> > /></fo:block>
> > </fo:table-cell>
> > </xsl:otherwise>
> > </xsl:choose>
> > </xsl:template>
> >
> > However, the output gives me:
> > FIELD_1 FIELD_2 FIELD_3 etc....
> > rather than the data contained within these nodes. Can someone shed some
> > light for me?
> >
> > TIA,
> > Helen.
|
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








