B
bobiron
Hi, any ideas to improve the above ugly and not efficient code?
Thanks
Roberto
<!-- source XML
NOTE: elements "col" changes from source to source
-->
<?xml version="1.0"?>
<resultset>
<header>
<col name="#" path="position()" />
<col name="NAME" path="@NAME"/>
<col nome="field 1" path="FIELD_1/text()" />
<col nome="field 2" path="FIELD_2/text()" />
</header>
<items>
<item NAME="name1">
<FIELD_1>8</FIELD_1>
<FIELD_2>5</FIELD_2>
<FIELD_3 />
</item>
<item NAME="name2">
<FIELD_1>9</FIELD_1>
<FIELD_2>4</FIELD_2>
<FIELD_3 />
</item>
</items>
</resultset>
<!-- XSL -->
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head/>
<body>
<table border="1">
<tr>
<xsl:for-each select="resultset/header/col">
<th><xsl:value-of select="@name"/></th>
</xsl:for-each>
</tr>
<xsl:for-each select="resultset/items/item">
<tr>
<th><xsl:value-of select="position()"/></th>
<xsl:variable name="v_item" select="."/>
<xsl:for-each select="/resultset/header/col">
<xsl:choose>
<xsl:when test="@path = '@NAME'" >
<td><xsl:value-of select="$v_item/@NAME"/></td>
</xsl:when>
<xsl:when test="@path = 'FIELD_1/text()'">
<td><xsl:value-of select="$v_item/FIELD_1/text()"/></td>
</xsl:when>
<xsl:when test="@path = 'FIELD_2/text()'">
<td><xsl:value-of select="$v_item/FIELD_2/text()"/></td>
</xsl:when>
<xsl:when test="@path = 'FIELD_3/text()'">
<td><xsl:value-of select="$v_item/FIELD_3/text()"/></td>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Thanks
Roberto
<!-- source XML
NOTE: elements "col" changes from source to source
-->
<?xml version="1.0"?>
<resultset>
<header>
<col name="#" path="position()" />
<col name="NAME" path="@NAME"/>
<col nome="field 1" path="FIELD_1/text()" />
<col nome="field 2" path="FIELD_2/text()" />
</header>
<items>
<item NAME="name1">
<FIELD_1>8</FIELD_1>
<FIELD_2>5</FIELD_2>
<FIELD_3 />
</item>
<item NAME="name2">
<FIELD_1>9</FIELD_1>
<FIELD_2>4</FIELD_2>
<FIELD_3 />
</item>
</items>
</resultset>
<!-- XSL -->
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head/>
<body>
<table border="1">
<tr>
<xsl:for-each select="resultset/header/col">
<th><xsl:value-of select="@name"/></th>
</xsl:for-each>
</tr>
<xsl:for-each select="resultset/items/item">
<tr>
<th><xsl:value-of select="position()"/></th>
<xsl:variable name="v_item" select="."/>
<xsl:for-each select="/resultset/header/col">
<xsl:choose>
<xsl:when test="@path = '@NAME'" >
<td><xsl:value-of select="$v_item/@NAME"/></td>
</xsl:when>
<xsl:when test="@path = 'FIELD_1/text()'">
<td><xsl:value-of select="$v_item/FIELD_1/text()"/></td>
</xsl:when>
<xsl:when test="@path = 'FIELD_2/text()'">
<td><xsl:value-of select="$v_item/FIELD_2/text()"/></td>
</xsl:when>
<xsl:when test="@path = 'FIELD_3/text()'">
<td><xsl:value-of select="$v_item/FIELD_3/text()"/></td>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>