I need to write xsl document to collect data csv:field[4] for each line groubing by csv:field[1] <csv:line> <csv:field>48</csv:field> <csv:field>20</csv:field> <csv:field>6</csv:field> <csv:field>6430</csv:field> </csv:line> <csv:line> <csv:field>23</csv:field> <csv:field>18</csv:field> <csv:field>5</csv:field> <csv:field>4621</csv:field> </csv:line> <csv:line> <csv:field>48</csv:field> <csv:field>23</csv:field> <csv:field>198</csv:field> <csv:field>5770</csv:field> </csv:line> <csv:line> <csv:field>25</csv:field> <csv:field>27</csv:field> <csv:field>7</csv:field> <csv:field>8873</csv:field> </csv:line>
wrote in message news:c9937992-2f37-4d12-ba03-45c5b10dfd21@59g2000hsb.googlegroups.com... > I need to write xsl document to collect data csv:field[4] for each > line groubing by > csv:field[1] > > <csv:line> > <csv:field>48</csv:field> > <csv:field>20</csv:field> > <csv:field>6</csv:field> > <csv:field>6430</csv:field> > </csv:line> > <csv:line> > <csv:field>23</csv:field> > <csv:field>18</csv:field> > <csv:field>5</csv:field> > <csv:field>4621</csv:field> > </csv:line> > <csv:line> > <csv:field>48</csv:field> > <csv:field>23</csv:field> > <csv:field>198</csv:field> > <csv:field>5770</csv:field> > </csv:line> > <csv:line> > <csv:field>25</csv:field> > <csv:field>27</csv:field> > <csv:field>7</csv:field> > <csv:field>8873</csv:field> > </csv:line> > > In XSLT 2.0 use for-each-group, in XSLT 1.0 search for Muenchian Grouping. -- Joe Fawcett (MVP - XML) http://joe.fawcett.name
On Jun 26, 10:35 am, "Joe Fawcett" <joefawc...@newsgroup.nospam> wrote: > wrote in message > > news:c9937992-2f37-4d12-ba03-45c5b10dfd21@59g2000hsb.googlegroups.com... > > > > > I need to write xsl document to collect data csv:field[4] for each > > line groubing by > > csv:field[1] > > > <csv:line> > > <csv:field>48</csv:field> > > <csv:field>20</csv:field> > > <csv:field>6</csv:field> > > <csv:field>6430</csv:field> > > </csv:line> > > <csv:line> > > <csv:field>23</csv:field> > > <csv:field>18</csv:field> > > <csv:field>5</csv:field> > > <csv:field>4621</csv:field> > > </csv:line> > > <csv:line> > > <csv:field>48</csv:field> > > <csv:field>23</csv:field> > > <csv:field>198</csv:field> > > <csv:field>5770</csv:field> > > </csv:line> > > <csv:line> > > <csv:field>25</csv:field> > > <csv:field>27</csv:field> > > <csv:field>7</csv:field> > > <csv:field>8873</csv:field> > > </csv:line> > > In XSLT 2.0 use for-each-group, in XSLT 1.0 search for Muenchian Grouping> Joe Fawcett (MVP - XML)http://joe.fawcett.name- Hide quoted text - > > - Show quoted text - Sorry for duplicted message but i was think the message is not in right Topic I tried to do it like that <xsl:for-each-group select="csv:line" group-by="csv:field[1]"> <xsl:element name="element"> <xsl:attribute name="Id">ID</xsl:attribute> <xsl:value-of select="csv:field[1]"/> </xsl:element> <xsl:element name="element"> <xsl:attribute name="Id">Sum</xsl:attribute> <xsl:value-of select="sum(csv:field[4])"/> </xsl:element> </xsl:for-each-group> but it didnt get the sum value its gust get the csv:field[4] for first line only
wrote in message news:3dc31f09-4c8e-42a8-b643-16a481d0b03c@m73g2000hsh.googlegroups.com... > On Jun 26, 10:35 am, "Joe Fawcett" <joefawc...@newsgroup.nospam> > wrote: >> wrote in message >> >> news:c9937992-2f37-4d12-ba03-45c5b10dfd21@59g2000hsb.googlegroups.com... >> >> >> >> > I need to write xsl document to collect data csv:field[4] for each >> > line groubing by >> > csv:field[1] >> >> > <csv:line> >> > <csv:field>48</csv:field> >> > <csv:field>20</csv:field> >> > <csv:field>6</csv:field> >> > <csv:field>6430</csv:field> >> > </csv:line> >> > <csv:line> >> > <csv:field>23</csv:field> >> > <csv:field>18</csv:field> >> > <csv:field>5</csv:field> >> > <csv:field>4621</csv:field> >> > </csv:line> >> > <csv:line> >> > <csv:field>48</csv:field> >> > <csv:field>23</csv:field> >> > <csv:field>198</csv:field> >> > <csv:field>5770</csv:field> >> > </csv:line> >> > <csv:line> >> > <csv:field>25</csv:field> >> > <csv:field>27</csv:field> >> > <csv:field>7</csv:field> >> > <csv:field>8873</csv:field> >> > </csv:line> >> >> In XSLT 2.0 use for-each-group, in XSLT 1.0 search for Muenchian >> Grouping. >> >> -- >> >> Joe Fawcett (MVP - XML)http://joe.fawcett.name- Hide quoted text - >> >> - Show quoted text - > > > Sorry for duplicted message but i was think the message is not in > right Topic > > I tried to do it like that > > <xsl:for-each-group select="csv:line" group-by="csv:field[1]"> > <xsl:element name="element"> > <xsl:attribute name="Id">ID</xsl:attribute> > <xsl:value-of select="csv:field[1]"/> > </xsl:element> > <xsl:element name="element"> > <xsl:attribute name="Id">Sum</xsl:attribute> > <xsl:value-of select="sum(csv:field[4])"/> > </xsl:element> > </xsl:for-each-group> > > but it didnt get the sum value its gust get the csv:field[4] for first > line only > Not exactly sure what you want but try this: <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:csv="http://tempuri.com" exclude-result-prefixes="csv"> <xsl:template match="/csv:data"> <output> <xsl:for-each-group select="csv:line" group-by="csv:field[1]"> <element Id="ID"> <xsl:value-of select="current-grouping-key()"/> </element> <element Id="Sum"> <xsl:value-of select="sum(current-group()/csv:field[4])"/> </element> </xsl:for-each-group> </output> </xsl:template> </xsl:stylesheet> against this xml: <csv:data xmlns:csv="http://tempuri.com"> <csv:line> <csv:field>48</csv:field> <csv:field>20</csv:field> <csv:field>6</csv:field> <csv:field>6430</csv:field> </csv:line> <csv:line> <csv:field>23</csv:field> <csv:field>18</csv:field> <csv:field>5</csv:field> <csv:field>4621</csv:field> </csv:line> <csv:line> <csv:field>48</csv:field> <csv:field>23</csv:field> <csv:field>198</csv:field> <csv:field>5770</csv:field> </csv:line> <csv:line> <csv:field>25</csv:field> <csv:field>27</csv:field> <csv:field>7</csv:field> <csv:field>8873</csv:field> </csv:line> </csv:data> -- Joe Fawcett (MVP - XML) http://joe.fawcett.name
On Jun 26, 2:50 pm, "Joe Fawcett" <joefawc...@newsgroup.nospam> wrote: > wrote in message > > news:3dc31f09-4c8e-42a8-b643-16a481d0b03c@m73g2000hsh.googlegroups.com... > > > > > On Jun 26, 10:35 am, "Joe Fawcett" <joefawc...@newsgroup.nospam> > > wrote: > >> wrote in message > > >>news:c9937992-2f37-4d12-ba03-45c5b10dfd21@59g2000hsb.googlegroups.com..> >> > I need to write xsl document to collect data csv:field[4] for each > >> > line groubing by > >> > csv:field[1] > > >> > <csv:line> > >> > <csv:field>48</csv:field> > >> > <csv:field>20</csv:field> > >> > <csv:field>6</csv:field> > >> > <csv:field>6430</csv:field> > >> > </csv:line> > >> > <csv:line> > >> > <csv:field>23</csv:field> > >> > <csv:field>18</csv:field> > >> > <csv:field>5</csv:field> > >> > <csv:field>4621</csv:field> > >> > </csv:line> > >> > <csv:line> > >> > <csv:field>48</csv:field> > >> > <csv:field>23</csv:field> > >> > <csv:field>198</csv:field> > >> > <csv:field>5770</csv:field> > >> > </csv:line> > >> > <csv:line> > >> > <csv:field>25</csv:field> > >> > <csv:field>27</csv:field> > >> > <csv:field>7</csv:field> > >> > <csv:field>8873</csv:field> > >> > </csv:line> > > >> In XSLT 2.0 use for-each-group, in XSLT 1.0 search for Muenchian > >> Grouping. > > >> -- > > >> Joe Fawcett (MVP - XML)http://joe.fawcett.name-Hide quoted text - > > >> - Show quoted text - > > > Sorry for duplicted message but i was think the message is not in > > right Topic > > > I tried to do it like that > > > <xsl:for-each-group select="csv:line" group-by="csv:field[1]"> > > <xsl:element name="element"> > > <xsl:attribute name="Id">ID</xsl:attribute> > > <xsl:value-of select="csv:field[1]"/> > > </xsl:element> > > <xsl:element name="element"> > > <xsl:attribute name="Id">Sum</xsl:attribute> > > <xsl:value-of select="sum(csv:field[4])"/> > > </xsl:element> > > </xsl:for-each-group> > > > but it didnt get the sum value its gust get the csv:field[4] for first > > line only > > Not exactly sure what you want but try this: > <?xml version="1.0" encoding="UTF-8" ?> > <xsl:stylesheet version="2.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:csv="http://tempuri.com" exclude-result-prefixes="csv"> > <xsl:template match="/csv:data"> > <output> > <xsl:for-each-group select="csv:line" group-by="csv:field[1]"> > <element Id="ID"> > <xsl:value-of select="current-grouping-key()"/> > </element> > <element Id="Sum"> > <xsl:value-of select="sum(current-group()/csv:field[4])"/> > </element> > </xsl:for-each-group> > </output> > </xsl:template> > </xsl:stylesheet> > > against this xml: > <csv:data xmlns:csv="http://tempuri.com"> > <csv:line> > <csv:field>48</csv:field> > <csv:field>20</csv:field> > <csv:field>6</csv:field> > <csv:field>6430</csv:field> > </csv:line> > <csv:line> > <csv:field>23</csv:field> > <csv:field>18</csv:field> > <csv:field>5</csv:field> > <csv:field>4621</csv:field> > </csv:line> > <csv:line> > <csv:field>48</csv:field> > <csv:field>23</csv:field> > <csv:field>198</csv:field> > <csv:field>5770</csv:field> > </csv:line> > <csv:line> > <csv:field>25</csv:field> > <csv:field>27</csv:field> > <csv:field>7</csv:field> > <csv:field>8873</csv:field> > </csv:line> > > </csv:data> > > -- > > Joe Fawcett (MVP - XML)http://joe.fawcett.name- Hide quoted text - > > - Show quoted text - Its Working Thanks for help I have another question. For each element in the group I need to get ceiling of divide operation then get the summation for group element I tried this code but its doesnt work <xsl:value-of select="sum(ceiling(current-group()/csv:field[4] div 1000))"/>