|
Subject: Re: [xsl] for-each loop question From: David Carlisle <davidc@xxxxxxxxx> Date: Mon, 3 Apr 2006 13:20:49 +0100 |
Input XML:
----------
<RetainedProduct>
<Product Quantity="2" Code="A56390"/>
<Product Quantity="3" Code="A70978"/>
</RetainedProduct>
Main template:
------------------
<xsl:template name="mainTemplate">
<xsl:variable name="ProductCount"
select="count(RetainedProduct/Product)"/>
You probably don't need this variable.
<xsl:call-template name="productTemplate ">
<xsl:with-param name="ProductCount" select="$ProductCount"/>
</xsl:call-template>
ProductTemplate:
------------------
<xsl:template name="productTemplate">
<xsl:param name="ProductCount"/>
<xsl:variable name="Quantity" select="*/Product/@Quantity" />
This variable selects a node set of all the Quantity attributes of all
the Products.
<xsl:if test="$ProductCount >: 0">
This test does nothing as if it is false the following for-each would
produce no output anyway so there is no need to skip it.
<xsl:for-each select="*/Product"
<xsl:call-template name="genericMapping">
<xsl:with-param name="quantity" select="$Quantity"/>
This means that you pass the same $quantity value (the set of all
quantity attributes) for each product. I think you just want to pass in
the current Quantity attribute ie select="@Quantity, which moeans that
you do notneed the Quantity variable defined above.
</xsl:call-template>
</xsl:for-each>
</xsl:if>
</xsl:template>
GenericMapping template (Recursive):
-------------------
<xsl:template name="genericMapping">
<xsl:param name="quantity"/>
...
<xsl:call-template name="genericMapping">
<xsl:with-param name="quantity" select="$quantity - 1"/>
</xsl:call-template>
This recursive call needs to be guarded by an
xsl:if test="$quantity >1"
otherwise you will recurse forever.
</xsl:template>
David
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] for-each loop question, Khorasani, Houman | Thread | RE: [xsl] for-each loop question, Khorasani, Houman |
| Re: [xsl] xslt 2.0 calendar, David Carlisle | Date | RE: [xsl] for-each loop question, Khorasani, Houman |
| Month |