RE: [xsl] Conditionally create an html table based upon existance of one or two node sets

Subject: RE: [xsl] Conditionally create an html table based upon existance of one or two node sets
From: Rod Kane <rkane@xxxxxxxxxxxxxxxxxx>
Date: Tue, 30 Mar 2010 14:39:46 -0400
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: [xsl] 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/Group/Dimensions/D
imension[count(*)
> = 0]"/>
>        <xsl:apply-templates
>
select="Template/Queries/DataQuery/Abstract/Rows/Groups/Group/Dimensions/Dime
nsion[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/Dimensions/Dimen
sion[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
======================================================================

Current Thread