[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
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.
|
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
|