Subject: RE: [xsl] XSL to generate required output From: "Amrit Pal Singh" <ampsingh@xxxxxxxxx> Date: Mon, 12 Dec 2005 19:15:09 +0530 |
Hi Mike, I tried using following xsl: <xsl:template match="Root[Cell='##']"> <xsl:variable name="poscurrent" select="position()"/> <Level> <xsl:copy-of select="following-sibling::Row[not(Cell='##')][position() < poscurrent]"/> </Level> </xsl:template> Please let me know where I'm going wrong? <Root> <Cell>###</Cell> <Cell>x</Cell> <Cell>y</Cell> <Cell>###</Cell> <Cell>z</Cell> </Root> <Root> <Level> <Cell>x</Cell> <Cell>y</Cell> </Level> <Level> <Cell>z</Cell> </Level> </Root> Thanks, Amrit -----Original Message----- From: Michael Kay [mailto:mike@xxxxxxxxxxxx] Sent: Monday, December 12, 2005 2:28 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] XSL to generate required output It's a positional grouping problem. For XSLT 2.0, do <xsl:for-each-group select="Row" group-starting-with="Row[Cell='##']"> For XSLT 1.0 solutions, google for "XSLT positional grouping". Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Amrit Pal Singh [mailto:ampsingh@xxxxxxxxx] > Sent: 12 December 2005 04:45 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] XSL to generate required output > > Hi friends, > > I'm Having following input xml file. > > <?xml version="1.0" encoding="UTF-8"?> <WoorkBook> > <WorkSheet> > <Name>Tarifs Clts & prog. de commande</Name> > <table> > <Row> > <Cell>##</Cell> > </Row> > <Row> > <Cell>COUPE</Cell> > <Cell>Puissance</Cell> > <Cell>Transmission</Cell> > <Cell>Puissance fiscale</Cell> > <Cell>Prix clientTTC EUR </Cell> > <Cell>Code modhle</Cell> > </Row> > <Row/> > <Row> > <Cell>Audi TT</Cell> > <Cell>163 ch</Cell> > <Cell>BV 5 </Cell> > <Cell>10 CV*</Cell> > <Cell>28900</Cell> > <Cell>8N30L40C00</Cell> > </Row> > <Row> > <Cell>Audi TT</Cell> > <Cell>190 ch</Cell> > <Cell>BV 5 </Cell> > <Cell>12 CV*</Cell> > <Cell>30800</Cell> > <Cell>8N30M40C00</Cell> > </Row> > <Row> > <Cell>##</Cell> > </Row> > <Row/> > <Row> > <Cell>Audi TT</Cell> > <Cell>163 ch</Cell> > <Cell>BV 5 </Cell> > <Cell>10 CV*</Cell> > <Cell>31000</Cell> > <Cell>8N90L40C00</Cell> > </Row> > <Row> > <Cell>Audi TT</Cell> > <Cell>190 ch</Cell> > <Cell>BV 5 </Cell> > <Cell>12 CV*</Cell> > <Cell>33300</Cell> > <Cell>8N90M40C00</Cell> > </Row> > </table> > </WorkSheet> > </WoorkBook> > > > I need to generate the ouput as below. i.e to take hierarchy one level > down when I see ## in Cell. > > <?xml version="1.0" encoding="UTF-8"?> <WoorkBook> > <WorkSheet> > <Name>Tarifs Clts & prog. de commande</Name> > <table> > <New> > <Row> > <Cell>COUPE</Cell> > <Cell>Puissance</Cell> > <Cell>Transmission</Cell> > <Cell>Puissance fiscale</Cell> > <Cell>Prix clientTTC EUR </Cell> > <Cell>Code modhle</Cell> > </Row> > <Row/> > <Row> > <Cell>Audi TT</Cell> > <Cell>163 ch</Cell> > <Cell>BV 5 </Cell> > <Cell>10 CV*</Cell> > <Cell>28900</Cell> > <Cell>8N30L40C00</Cell> > </Row> > <Row> > <Cell>Audi TT</Cell> > <Cell>190 ch</Cell> > <Cell>BV 5 </Cell> > <Cell>12 CV*</Cell> > <Cell>30800</Cell> > <Cell>8N30M40C00</Cell> > </Row> > </New> > <New> > <Row> > <Cell>Audi TT</Cell> > <Cell>163 ch</Cell> > <Cell>BV 5 </Cell> > <Cell>10 CV*</Cell> > <Cell>31000</Cell> > <Cell>8N90L40C00</Cell> > </Row> > <Row> > <Cell>Audi TT</Cell> > <Cell>190 ch</Cell> > <Cell>BV 5 </Cell> > <Cell>12 CV*</Cell> > <Cell>33300</Cell> > <Cell>8N90M40C00</Cell> > </Row> > </New> > </table> > </WorkSheet> > </WoorkBook> > > Please let me know how to achaive this. > > Thanks, > Amrit
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XSL to generate required , Michael Kay | Thread | Re: [xsl] XSL to generate required , Ragulf Pickaxe |
Re: [xsl] <empty /> vs <empty></emp, drkm | Date | Re: [xsl] XSL to generate required , Ragulf Pickaxe |
Month |