|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: select name of element / deal with embedded for-ea
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: 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








