Subject: RE: Conditionally create an html table based upon existance of one or two node sets
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 30 Mar 2010 19:46:36 +0100
|
Although you stated the requirement as generating the table if its content
was non-empty, I reckoned that if either of the input node-sets was
non-empty then the table content would also be non-empty, so it's more
efficient and easier (and possible in XSLT 1.0) to test the input node-sets
rather than saving the output tree in a variable.
Regards,
Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay
> -----Original Message-----
> From: Rod Kane [mailto:rkane@xxxxxxxxxxxxxxxxxx]
> Sent: 30 March 2010 19:40
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: Conditionally create an html table based
> upon existance of one or two node sets
>
> Thanks Wendell, have not used that before and will look into it.
>
> Thanks again,
>
> Rod
>
> -----Original Message-----
> From: Wendell Piez [mailto:wapiez@xxxxxxxxxxxxxxxx]
> Sent: Tuesday, March 30, 2010 2:38 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: Conditionally create an html table based
> upon existance of one or two node sets
>
> Rod,
>
> At 02:02 PM 3/30/2010, you wrote:
> >I need to create a table if either the second and third
> >"apply-template" directives return nodes, and otherwise
> create nothing .
>
> Bind them to a variable so:
>
> <xsl:variable name="results">
> <xsl:apply-templates .../>
> <xsl:apply-templates .../>
> </xsl:variable>
>
> then generate your table if $results has any content.
>
> In XSLT 1.0 the easiest way is to test for non-whitespace text:
>
> <xsl:if test="normalize-space($results)">
> <table border="1" width="85%" >
> <xsl:copy-of select=$results"/>
> </table>
> </xsl:if>
>
> In XSLT 2.0 you can be smarter about what's inside $results.
>
> You can also split $results into two variables if you need to
> handle the two apply-templates results separately.
>
> Good luck,
> Wendell
>
>
> > "Fiscal Year" is the Dimension name and C02 and C09 are
> the "Column
> > Group Name"s, but the table creation is not quite correct
> as the rows
> > are not displayed correctly.
> >
> >Thank you in advance.
> >
> >Rod
> >
> >
> >
> ><?xml version="1.0"?>
> ><xsl:stylesheet version="1.0"
> >xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> >
> ><xsl:template match="/">
> ><HTML>
> ><BODY>
> > <xsl:apply-templates select="Template"/>
> > <xsl:apply-templates
> >
> >select="Template/Queries/DataQuery/Abstract/Columns/Groups/Gr
> oup/Dimens
> >ions/Dimension[count(*)
> > = 0]"/>
> > <xsl:apply-templates
> >
> >select="Template/Queries/DataQuery/Abstract/Rows/Groups/Group
> /Dimension
> >s/Dimension[count(*)
> > = 0]"/>
> ></BODY>
> ></HTML>
> ></xsl:template>
> >
> >
> ><xsl:template match="Template">
> > <B> Template Name: <xsl:value-of select="@Name"
> > /> </B>
> > <BR/><BR/>
> >
> > <xsl:choose>
> > <xsl:when
> >
> test="./Queries/DataQuery/Abstract/Columns|Rows/Groups/Group/Dimension
> > s/Dimension[count(*)
> > = 0]">
> >
> > <TABLE BORDER="1" width="85%" >
> > <TR BGCOLOR="D3D3D3" >
> > <TD
> > width="65%"> <xsl:text>Dimension Name</xsl:text>
> </TD>
> > <TD>
> > <xsl:text>Column Group Name</xsl:text> </TD>
> > </TR>
> > </TABLE>
> >
> > </xsl:when>
> > </xsl:choose>
> >
> ></xsl:template>
> >
> >
> >
> >
> ><xsl:template match="Dimension">
> >
> > <xsl:for-each select=".">
> > <TR BGCOLOR="D3D3D3" >
> > <TD
> > width="65%"> <xsl:value-of select="./@Name" /> </TD>
> > <TD>
> > <xsl:value-of select="../../@Name" /> </TD>
> > </TR>
> > </xsl:for-each>
> >
> ></xsl:template>
> >
> >
> ></xsl:stylesheet>
> >
>
>
> ======================================================================
> Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx
> Mulberry Technologies, Inc. http://www.mulberrytech.com
> 17 West Jefferson Street Direct Phone: 301/315-9635
> Suite 207 Phone: 301/315-9631
> Rockville, MD 20850 Fax: 301/315-8285
> ----------------------------------------------------------------------
> Mulberry Technologies: A Consultancy Specializing in SGML
> and XML
> ======================================================================
|