[Home] [By Thread] [By Date] [Recent Entries]
Ramesh Kumar wrote:
The required HTML output is like.... Here is an XSLT 1.0 stylesheet: <xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"><xsl:output method="html" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:key name="by-name"
match="/*/*"
use="concat('{', namespace-uri(), '}', local-name())"/><xsl:template match="/"> <html> <body> <table> <tbody> <xsl:apply-templates select="*/*[generate-id() = generate-id(key('by-name', concat('{', namespace-uri(), '}', local-name()))[1])]" mode="table"/> </tbody> </table> </body> </html> </xsl:template> <xsl:template match="/*/*" mode="table"> <tr> <td> <table border="1"> <thead> <tr> <xsl:apply-templates mode="th"/> </tr> </thead> <tbody> <xsl:apply-templates select="key('by-name', concat('{', namespace-uri(), '}', local-name()))"/> </tbody> </table> </td> </tr> <xsl:if test="position() != last()"> <tr> <td> </td> </tr> </xsl:if> </xsl:template> <xsl:template match="/*/*/*" mode="th">
<th>
<xsl:value-of select="local-name()"/>
</th>
</xsl:template> <xsl:template match="/*/*">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template> <xsl:template match="/*/*/*">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template></xsl:stylesheet> Its output is a bit more structured (using tbody, thead, and th) than your sample but it should give you an idea how to approach that. -- Martin Honnen http://msmvps.com/blogs/martin_honnen/
|

Cart



