Subject: [xsl] RE: Re: Converting the flat XML to hierarchical format (plus grou ping, data replication and sorting) From: Shyam Chebrolu <schebrolu@xxxxxxxxxxxxxxx> Date: Wed, 30 Jan 2002 14:01:13 -0500 |
I tried to post this before. It was bounced back for some reason... Anyway, I was able to comeup with some solution. But it is not complete. I couldn't figure out how to sort the items after they are grouped... I used the below XSL: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:key name="products-by-group" match="GROUP_ID" use="." /> <xsl:variable name="product-id" select="DATA/PRODUCT_ID" /> <xsl:variable name="product-desc" select="DATA/PRODUCT_DESC"/> <xsl:variable name="group-id" select="DATA/GROUP_ID"/> <xsl:template match="/"> <DATA> <xsl:for-each select="DATA/GROUP_ID[count(. | key('products-by-group', .)[1]) = 1]"> <PRODUCTS> <xsl:attribute name="ID"><xsl:value-of select="." /></xsl:attribute> <xsl:variable name="n" select="." /> <xsl:for-each select="$group-id[. = $n or . = 0]"> <xsl:variable name="index" select="count(preceding-sibling::GROUP_ID) + 1" /> <PRODUCT> <xsl:copy-of select="$product-id[$index]" /> <xsl:copy-of select="$product-desc[$index]" /> </PRODUCT> </xsl:for-each> </PRODUCTS> </xsl:for-each> </DATA> </xsl:template> </xsl:stylesheet> -----Original Message----- From: Shyam Chebrolu Sent: 01/30/2002 8:55 AM To: 'XSL-List@xxxxxxxxxxxxxxxxxxxxxx' Subject: Re: Converting the flat XML to hierarchical format (plus grouping, data replication and sorting) I was hoping that I could accomplish the following using XSLT.. Any direction would be really appreciated -Thanks Shyam ----------------- I have a XML data file in the following format (flat): <DATA> <PRODUCT_ID>1</PRODUCT_ID> <PRODUCT_DESC>Product 1</PRODUCT_DESC> <GROUP_ID>0</GROUPD_ID> <PRODUCT_ID>2</PRODUCT_ID> <PRODUCT_DESC>Product 2</PRODUCT_DESC> <GROUP_ID>0</GROUPD_ID> <PRODUCT_ID>3</PRODUCT_ID> <PRODUCT_DESC>Product 3</PRODUCT_DESC> <GROUP_ID>0</GROUPD_ID> <PRODUCT_ID>4</PRODUCT_ID> <PRODUCT_DESC>Product 4</PRODUCT_DESC> <GROUP_ID>1</GROUPD_ID> <PRODUCT_ID>5</PRODUCT_ID> <PRODUCT_DESC>Product 5</PRODUCT_DESC> <GROUP_ID>1</GROUPD_ID> <PRODUCT_ID>6</PRODUCT_ID> <PRODUCT_DESC>Product 6</PRODUCT_DESC> <GROUP_ID>2</GROUPD_ID> </DATA> I need to rearrange this data in hierarchical manner (there is more to it...) <DATA> <PRODUCTS ID="0"> <PRODUCT> <PRODUCT_ID>1</PRODUCT_ID> <PRODUCT_DESC>Product 1</PRODUCT_DESC> </PRODUCT> <PRODUCT> <PRODUCT_ID>2</PRODUCT_ID> <PRODUCT_DESC>Product 2</PRODUCT_DESC> </PRODUCT> <PRODUCT> <PRODUCT_ID>3</PRODUCT_ID> <PRODUCT_DESC>Product 3</PRODUCT_DESC> </PRODUCT> </PRODUCTS> <PRODUCTS ID="1"> ... ... </PRODUCTS> ... ... </DATA> I would like to keep a copy of all the PRODUCT nodes for Group "0" in every other group ("1", "2" etc. Essentially, if someone asks for group "1", I should be able to send GROUP 1 + GROUP 0 data together (and sorted) as one set ) and each group sorted by PRODUCT_DESC. The final output should be: <DATA> <PRODUCTS ID="0"> <PRODUCT> <PRODUCT_ID>1</PRODUCT_ID> <PRODUCT_DESC>Product 1</PRODUCT_DESC> </PRODUCT> <PRODUCT> <PRODUCT_ID>2</PRODUCT_ID> <PRODUCT_DESC>Product 2</PRODUCT_DESC> </PRODUCT> <PRODUCT> <PRODUCT_ID>3</PRODUCT_ID> <PRODUCT_DESC>Product 3</PRODUCT_DESC> </PRODUCT> </PRODUCTS> <PRODUCTS ID="1"> <PRODUCT> <PRODUCT_ID>1</PRODUCT_ID> <PRODUCT_DESC>Product 1</PRODUCT_DESC> </PRODUCT> <PRODUCT> <PRODUCT_ID>2</PRODUCT_ID> <PRODUCT_DESC>Product 2</PRODUCT_DESC> </PRODUCT> <PRODUCT> <PRODUCT_ID>3</PRODUCT_ID> <PRODUCT_DESC>Product 3</PRODUCT_DESC> </PRODUCT> <PRODUCT> <PRODUCT_ID>4</PRODUCT_ID> <PRODUCT_DESC>Product 4</PRODUCT_DESC> </PRODUCT> <PRODUCT> <PRODUCT_ID>5</PRODUCT_ID> <PRODUCT_DESC>Product 5</PRODUCT_DESC> </PRODUCT> </PRODUCTS> ... ... </DATA> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] problem with multiple xml, Joerg Heinicke | Thread | Re: [xsl] RE: Re: Converting the fl, Joerg Heinicke |
Re: [xsl] building a tabular format, Joerg Heinicke | Date | [xsl] XSL Generator in XSL., Avula, Raj |
Month |