|
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 |