2012-01-26 2 views
1

Мой XML выглядит следующим образомXSL Как создать динамические строки таблицы

<catalog> 
<cd> 
<title>Empire Burlesque</title> 
<artist>Bob Dylan</artist> 
<country>USA</country> 
<company>Columbia</company> 
<price>10.90</price> 
<year>1985</year> 
</cd> 
<cd> 
<title>Hide your heart</title> 
<artist>Bonnie Tyler</artist> 
<country>UK</country> 
<company>CBS Records</company> 
<price>9.90</price> 
<year>1988</year> 
</cd> 
</catalog> 

, что я хочу, чтобы достичь является HTML таблица, где количество строк динамичны, например:

таблица должна выглядеть это:

TABLE HEADER 
<tr> 
<td>Title</td> 
<td>Empire Burlesque</td> 
</tr> 
<tr> 
<td>Artist</td> 
<td>Bob Dylan</td> 
</tr> 
<tr> 
<td>country</td> 
<td>USA</td> 
</tr> 

Идет для всех узлов, доступных для cd.

Все, что я хочу, чтобы иметь возможность зацикливать число узлов, доступных под <cd>, и генерировать индивидуальные <tr> для каждого узла в выходе html. Так что мне не нужно использовать <xsl:value-of select> с конкретным именем узла xml.

Может ли кто-нибудь помочь мне понять основную часть? Благодарю.

ответ

0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="catalog"> 
    <table> 
     <xsl:apply-templates select="cd/*"/> 
    </table> 
    </xsl:template> 

    <xsl:template match="cd/*"> 
    <tr> 
     <td> 
     <xsl:value-of select="name()"/> 
     </td> 
     <td> 
     <xsl:value-of select="."/> 
     </td> 
    </tr> 
    </xsl:template> 

</xsl:stylesheet> 

Выход:

<table> 
    <tr> 
    <td>title</td> 
    <td>Empire Burlesque</td> 
    </tr> 
    <tr> 
    <td>artist</td> 
    <td>Bob Dylan</td> 
    </tr> 
    <tr> 
    <td>country</td> 
    <td>USA</td> 
    </tr> 
    <tr> 
    <td>company</td> 
    <td>Columbia</td> 
    </tr> 
    <tr> 
    <td>price</td> 
    <td>10.90</td> 
    </tr> 
    <tr> 
    <td>year</td> 
    <td>1985</td> 
    </tr> 
    <tr> 
    <td>title</td> 
    <td>Hide your heart</td> 
    </tr> 
    <tr> 
    <td>artist</td> 
    <td>Bonnie Tyler</td> 
    </tr> 
    <tr> 
    <td>country</td> 
    <td>UK</td> 
    </tr> 
    <tr> 
    <td>company</td> 
    <td>CBS Records</td> 
    </tr> 
    <tr> 
    <td>price</td> 
    <td>9.90</td> 
    </tr> 
    <tr> 
    <td>year</td> 
    <td>1988</td> 
    </tr> 
</table> 
Смежные вопросы