Subject: RE: [xsl] select name of element / deal with embedded for-each From: "Michael Kay" <mhk@xxxxxxxxx> Date: Sun, 30 May 2004 00:27:00 +0100 |
If you know that each <INDEX> will have the same children in the same order then this is reasonably easy (even if you don't know what the children will be): <xsl:template match="SOURCES"> <xsl:variable name="rows" select="SOURCE/INDEX"/> <table> <xsl:for-each select="SOURCE/INDEX[1]/*> <tr> <xsl:variable name="col" select="name()"/> <td><xsl:value-of select="$col"/></td> <xsl:for-each select="$rows"> <td><xsl:value-of select="*[name()=$col]"/></td> Michael Kay > -----Original Message----- > From: Xyan [mailto:xyan@xxxxxxxx] > Sent: 29 May 2004 22:00 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] select name of element / deal with embedded for-each > > Hi, > > as a beginner, I try to transform an XML structure like this one : > > <SOURCES> > <SOURCE CODE="SOURCE_1"> > <INDEX> > <INDEX_A>A1</INDEX_A> > <INDEX_B>B1</INDEX_B> > <INDEX_C>C1</INDEX_C> > </INDEX> > </SOURCE> > <SOURCE CODE="SOURCE_2"> > <INDEX> > <INDEX_A>A2</INDEX_A> > <INDEX_B>B2</INDEX_B> > <INDEX_C>C2</INDEX_C> > </INDEX> > </SOURCE> > > > into an HTML table : > > <html> > <body> > <table> > <tr> > <td>INDEX_A</td> > <td>A1</td> > <td>A2</td> > </tr> > <tr> > <td>INDEX_B</td> > <td>B1</td> > <td>B2</td> > </tr> > <tr> > <td>INDEX_C</td> > <td>C1</td> > <td>C2</td> > </tr> > </table> > </body> > </html> > > I have two difficulties : > 1. How to select the name of an element (in my case : <INDEX_A> must > become : <td>INDEX_A</td> ). > 2. How to write the xslt in order to treat /at once/ EACH > INDEX FOR EACH > SOURCE. I have some difficulties because of the two xsl:for-each that > must coexist. > > > I have tried : > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="html"/> > <xsl:template match="/"> > <html> > <body> > <table border="1"> > <xsl:for-each select="/SOURCES/SOURCE[1]/INDEX/*"> > <tr> > <xsl:for-each select="/SOURCES/SOURCE"> > <td> > <xsl:value-of select="INDEX/*"/> > </td> > </xsl:for-each> > </tr> > </xsl:for-each> > </table> > </body> > </html> > </xsl:template> > </xsl:stylesheet> > > but the result : > > A1 A2 > A1 A2 > A1 A2 > > > is, as you see and have guessed, bad......... > > Thanks a lot for your help. > > Xyan
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] select name of element / , Niclas Hedhman | Thread | [xsl] Integrating HTML tidy with An, Angeshwar Deepak |
Re: [xsl] select name of element / , Niclas Hedhman | Date | [xsl] Calculating a Moving Average, John Reid |
Month |