Subject: Re: [xsl] Display more than one table in generic xslt - reg From: Ramesh Kumar <cnrameshkumar@xxxxxxxxx> Date: Fri, 26 Mar 2010 19:28:22 +0400 |
Dear Martin, Is this technique called as Muenchian Grouping technique ? Regards, Ramesh On Wed, Mar 24, 2010 at 4:04 PM, Martin Honnen <Martin.Honnen@xxxxxx> wrote: > Ramesh Kumar wrote: >> >> The required HTML output is like.... >> >> <HTML><BODY> >> <Table> >> <TR><TD> >> <Table border="1"> >> <tr><td>SysID</td><td>WFDocID</td></tr> >> <tr><td>-2008080800041</td><td>0</td></tr> >> </Table> >> </TD></TR> >> <TR><TD> </TD></TR> >> <TR><TD> >> <Table border="1"> >> <tr><td>SysID</td><td>ParentSysID</td></tr> >> <tr><td>-2008080800045</td><td>-2008080800041</td></tr> >> <tr><td>-2008080800046</td><td>-2008080800041</td></tr> >> </Table> >> </TD></TR> >> </Table> >> </Body> >> </HTML> > > 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/ > > -- Regards, Ramesh
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Display more than one tab, Ramesh Kumar | Thread | Re: [xsl] Display more than one tab, Martin Honnen |
RE: [xsl] display xml to complex ht, Michael Kay | Date | Re: [xsl] Display more than one tab, Martin Honnen |
Month |