xsl-list
[Top] [All Lists]

Replace blank rows

2003-04-07 14:11:17
Hi,Can somebody help me with the following issue: I want to replace my blank rows with the values from the preceeding non-blank rows. A blank row is a row containing all empty cells.

My xml is as follows:
<row>
 <column name="firstname">K1</column>
 <column name="lastname">L1</column
</row>
<row>                               --> Empty Row contains empty cells
 <column name="firstname></column>  --> These should be replaced by
 <column name="lastname></column>   --> "K1" and "L1" from prev. row.
</row>
<row>                                --> Empty row again.
 <column name="firstname></column>
 <column name="lastname></column>
</row>
....


here is my xslt file. It works for the first empty non-row. However, since I always replaced it with row[$position-1] (i.e. immediate preceeding row), if there were 2 blank rows together, the second blank row was not replaced correctly because the preceeding row was still empty.

I have this for-loop.  So, how can I save the non-blank row position?

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 version="1.0">

<xsl:output method="xml"/>

<xsl:param name="fillCell" select="'N'"/>

<xsl:template match="/">
<Document>
<xsl:for-each select="Document/row">
<!-- To determine whether the row contains all empty cells. If so, STR must be returned as '' --->
 <xsl:variable name="STR">
   <xsl:apply-templates select="column" mode="row"/>
 </xsl:variable>

 <xsl:choose>
   <xsl:when test="$STR != ''">
     <xsl:copy-of select="."/>
   </xsl:when>
   <xsl:when test="$STR = '' and position() > 0 and $fillCell = 'Y'">
     <xsl:variable name="pos" select="position() -1"/>
        <xsl:copy-of select="//Document/row[$pos]"/>
   </xsl:when>
 </xsl:choose>

</xsl:for-each>
</Document>

</xsl:template>

<xsl:template match="text()" mode="row">
<xsl:value-of select="."/>
</xsl:template>


</xsl:stylesheet>



_________________________________________________________________
MSN 8 with e-mail virus protection service: 2 months FREE* http://join.msn.com/?page=features/virus


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



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