xsl-list
[Top] [All Lists]

select name of element / deal with embedded for-each

2004-05-29 14:59:58
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



<Prev in Thread] Current Thread [Next in Thread>