xsl-list
[Top] [All Lists]

RE: RE: How to implement an array

2003-02-14 08:55:49
Well I have corrected the problem by adding an
<xsl:if> to check if any children exist before
inserting a <td>. (If children exists then a column
will exist. So a <td> with or without data is
necessary. Otherwise no <td> will be created.

Here's the corrected template (I think it could be
cleaner or more elegant. But I'll tinker with it when
I learn more on XSL.)

<xsl:template match="Table1/Item" mode="celldata">
   <xsl:variable name="thisitem" select="."/>
     <tr>
       <xsl:for-each select="$Table1Struct/Item/*">
       <xsl:variable name="ItemName"
select="string(name(.))"/>
    <xsl:if
test="count($thisitem/..//*[name(.)=$ItemName]) &gt;
0">
         <td>
           <xsl:value-of
select="$thisitem/*[name()=name(current())]"/>
         </td>
    </xsl:if>
       </xsl:for-each>
   </tr>
</xsl:template>

I am still working on the parameter passing hurdle.
Hoping for some help from you guys.

Imrran

--- Imrran Wahid <devguy2003(_at_)yahoo(_dot_)com> wrote:
Wendell,
The template you suggested seemed to have a flaw.
...

When no row in the table contains any element for a
particular column that column is excluded from the
colum heading. But the above template would insert a
blank cell in the table. So we get
Heading: Col1 Col2 Col3
Data     XXX   YYY      ZZZ
Data     XXX   YYY      ZZZ

instead of:
Heading: Col1 Col2 Col3
Data     XXX   YYY ZZZ
Data     XXX   YYY ZZZ

I think it is necessary to check if elements exist
for
all children nodes before inserting a cell data
(<td>
element). That was the logic I was struggling with.

Imrran


__________________________________________________
Do you Yahoo!?
Yahoo! Shopping - Send Flowers for Valentine's Day
http://shopping.yahoo.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>