RE: [xsl] XSL to generate required output

Subject: RE: [xsl] XSL to generate required output
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 12 Dec 2005 08:58:14 -0000
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 &amp; 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 &amp; 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