User submits form... I have code which converts Form Vars to an XML source called BROWSER_VARS. Now I have a whole bunch of BROWSER_VARS, in the above case it would be 50 X 3, so 150 (which begins to look like this): <VARS> <FORMVARS> <Element @name="name_1">Karl</Element> <Element @name="country_1">US</Element> <Element @name="phone_1">999-999-9999</Element> <Element @name="name_2">Michael</Element> <Element @name="country_2">US</Element> <Element @name="phone_2">999-999-9999</Element> ... etc ... <Element @name="name_1"></Element><!-- don't consider this one--> </FORMVARS> <QUERYVARS/> </VARS> So now, back to my <ABC/> source. I look through this, using the existing structure of this to support writing the browser variables back to the web page and see where I have a matching BROWSER variable. Basically, to consider the browser variable set, there must be a value for the Element @name. (shoot, where was I going with this???) Anyhow, does this help to understand the logic at all? The ABC source is like the driver... the BROWSER VARIABLES may ore may not exist. Because of the limitation of submitting form variables, there is no other way to build my BROWSER VARIABLES source any other way than how it is (probably arguable, but it is the way it is for now). In English, the for-each loop would need to be: Loop for (consider) each ABC/Entry where the corresponding BROWSER_VARS//Element @name has a value... HERE IS "WORK IN PROGRESS", if you are interested: http://www.meetscoresonline.com/entry/ Thanks for the help! Karl Responsible for the following form elements: <input name="name_1"/> -----Original Message----- From: Michael Kay [mailto:mhk@xxxxxxxxx] Sent: Thursday, July 22, 2004 4:15 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: Return position in for-each In general, move the "test" condition into a predicate in the select expression of the xsl:for-each. Change <xsl:for-each select="x"> <xsl:if test="y"> to <xsl:for-each select="x[y]"> In your example it's not quite so easy because you are defining a variable before the <xsl:if>, and the variable itself accesses the position. I don't understand your logic well enough at this time of night to suggest a rewrite. Incidentally, <xsl:variable name="x"><xsl:value-of select="y"/></xsl:variable> should in 99.99% of cases be rewritten <xsl:variable name="x" select="y"/> Michael Kay > -----Original Message----- > From: Karl J. Stubsjoen [mailto:karl@xxxxxxxxxxxxxxxxxxxx] > Sent: 22 July 2004 23:46 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Return position in for-each > > Hello, > > A disadvantage to an xsl:for-each is that the position() > increases by one > for each step. so, if an xsl:if test validates the current > step and says > "Yes apply templates for this step", "don't apply templates > for this step", > and you are interested in a positiion which reflects the > total number of > "YES" steps... well you have a problem. Take into consideration this > for-each rule: > > <xsl:for-each select="Entry"> > <xsl:variable name="element_name"><xsl:value-of > select="concat('competitor_name_',position())"/></xsl:variable> > <xsl:if > test="string($BROWSER_VARS//ELEMENT[@name=$element_name]/.)"> > <tr> > > <!-- [[[ HERE WE ADD A COLUMN THAT HAS AN INCREMENTING > NUMBER ]]] --> > <td><xsl:value-of select="concat(position(),'.')"/></td> > > <!-- [[[ HERE WE GET THE REST OF THE COLUMN DATA ]]] --> > <xsl:apply-templates select="Element" mode="PRINTER_FRIENDLY"> > <xsl:with-param name="position"><xsl:value-of > select="position()"/></xsl:with-param> > </xsl:apply-templates> > </tr> > </xsl:if> > </xsl:for-each> > > > Is there a work-around, or another way to accomplish an > incrementing number > for the TD? > > Karl
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