Subject: [xsl] params - keys? how to calculate product of parents with multiple children From: "Whitney, Dan (CanWest Interactive)" <DWhitney@xxxxxxxxxxx> Date: Wed, 13 Apr 2005 08:58:12 -0400 |
Hi am having trouble conceptualizing how/if I can calculate the following: I want to take the children of RECORDSECTION and divide attribute value newshares by attribute value oldshares. I then want to multiply the results of each those calculations (there may be 0 - any number of occurrences of RECORDSECTION). So for below it would be: (1/2)*(1/2)= 0.25 Any help/examples would be appreciated. Dan Whitney XML <?xml version="1.0" encoding="windows-1252"?> <?xml-stylesheet type="text/xsl" href="test/split_total.xsl"?> <PUBLICATION> <DOCUMENT source="splits" group="surveys" output="body"> <RECORD fragment="splits" recid="12129" fragid="13" product="surveys" group="surveys" status="1"><ID idtype="fpid">12129</ID> <RECORDSECTION docfragment="splits"> <RECORDITEM sqlsource="oldshares">2</RECORDITEM> <RECORDITEM sqlsource="newshares">1</RECORDITEM> </RECORDSECTION> <RECORDSECTION docfragment="splits"> <RECORDITEM sqlsource="oldshares">2</RECORDITEM> <RECORDITEM sqlsource="newshares">1</RECORDITEM> </RECORDSECTION> </RECORD> </DOCUMENT> </PUBLICATION> XSL <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="iso-8859-1" indent="yes" version="4.0"/> <xsl:template match="PUBLICATION"> <table border="0" cellpadding="2" cellspacing="2" width="410" cols="2" > <tr> <td> <xsl:for-each select="DOCUMENT/RECORD"> <!-- below would like to only define param once but have it increment based on position--> <xsl:variable name="product[position()]" select="RECORDSECTION[1]/RECORDITEM[@sqlsource='newshares'] div RECORDSECTION[1]/RECORDITEM[@sqlsource='oldshares']"/> <xsl:variable name="product[position()]" select="RECORDSECTION[2]/RECORDITEM[@sqlsource='newshares'] div RECORDSECTION[1]/RECORDITEM[@sqlsource='oldshares']"/> <!-- this was a half conceived attempt <xsl:for-each select="RECORDSECTION[1]"> <xsl:call-template name="splitfactor"> <xsl:with-param name="factor-subset" select="following-sibling::RECORDSECTION"/> </xsl:call-template>) </xsl:for-each> --> <!-- here don't even know how I would write this --> <xsl:value-of select="$product1 * $product2"/> </xsl:for-each> </td> </tr> </table> </xsl:template> <!-- half conceived attempt --> <xsl:template name="splitfactor"> <xsl:param name="factor-subset" select="1"/> <xsl:if test="$factor-subset[1]"> <xsl:call-template name="splitfactor"> <xsl:with-param name="factor-subset" select="$factor-subset[position() > 1]"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template match="ID"/> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] transfer comma to other X, Pawson, David | Thread | Re: [xsl] params - keys? how to cal, David Carlisle |
[xsl] transfer comma to other XML f, Marcos Hercules dos | Date | RE: [xsl] Load XSL dynamically, Maria Amuchastegui |
Month |