[xsl] help for number-rows-spanned

Subject: [xsl] help for number-rows-spanned
From: ying xing <xingyin@xxxxxxxxx>
Date: Mon, 23 Jan 2006 13:36:10 -0800 (PST)
I have a problem generating an table with the
number-rows-spanned attribute, what I want to see is
the following:

C1       |c2       |c3       |c4       |c5       |c6
-------- |-------- |-------- |-------- |--------
|---------
Key      |data2    |data3    |data4    |data5   
|data6
         |-------- |-------- |-------- |--------
|---------
         |subject:           |data4    |data5   
|data6
         |subject test to be |-------- |--------
|---------
         |wrapped here when  |data4    |data5   
|data6
         |too long           |-------- |--------
|---------
         |                   |data4    |data5   
|data6
-------- |-------- |-------- |-------- |--------
|---------

So I used number-rows-spanned to do this, the problem
is that both key field and subject field are trucated
to show only one line, the rests are not showing, does
anybody have any idea how this happends?

Here is my code:

xml:
    <record>
      <key>Key</key>
      <subject>Subject to be wrapped</subject>
      <data2>data2</data2>
      <data3>data3</data3>
      <data4>data4.1</data4>
      <data5>data5.1</data5>
      <data6>data6.1</data6>
      <data_count>3</data_count>

      <data4_1>data4.2</data4_1>
      <data5_1>data5.2</data5_1>
      <data6_1>data6.2</data6_1>
      <more_data>
        <data_set>
          <data4>data4.3</data4>
          <data5>data5.3</data5>
          <data6>data6.3</data6>        
        </data_set>
        <data_set>
          <data4>data4.4</data4>
          <data5>data5.4</data5>
          <data6>data6.4</data6>        
        </data_set>
      </more_data>
    </record>

xsl:
  <xsl:template match="record">
  
    <xsl:variable name="data_count">
      <xsl:value-of select="data_count"/>
    </xsl:variable>
        
    <xsl:variable name="subject_colspan">
      <xsl:choose>
        <xsl:when test="$data_count = 0">
           <xsl:value-of select="5"/>
        </xsl:when>
        <xsl:otherwise>
           <xsl:value-of select="2"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>    

    <xsl:variable name="subject_rowspan">
      <xsl:choose>
        <xsl:when test="$data_count &lt; 2">
           <xsl:value-of select="1"/>
        </xsl:when>
        <xsl:otherwise>
           <xsl:value-of select="$data_count"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>

    <fo:table-row background-color="#F0F0FF"
border="0.5pt solid black">
      <fo:table-cell
number-rows-spanned="{($subject_rowspan)+1}"
text-align="left"  border-width=".1mm"
border-style="solid" border-color="black"
padding="2pt" padding-left="2pt" padding-right="2pt"> 
    
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible" hyphenate="true" language="en">
          <xsl:value-of select="key"/>
        </fo:block>
      </fo:table-cell>
      
      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible" hyphenate="true" language="en">
          <xsl:value-of select="data2"/>
        </fo:block>
      </fo:table-cell>
      
      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data3"/>
        </fo:block>
      </fo:table-cell>
      
      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data4"/>
        </fo:block>
      </fo:table-cell>

      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data5"/>
        </fo:block>
      </fo:table-cell>

      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data6"/>
        </fo:block>
      </fo:table-cell>   
    </fo:table-row>
    
    <fo:table-row background-color="#F0F0FF">
      <fo:table-cell text-align="left"
border-collapse="separate"
number-columns-spanned="{$subject_colspan}"
number-rows-spanned="{$subject_rowspan}" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" font-weight="bold"
line-height="1.2" overflow="visible"  hyphenate="true"
language="en">Subject: </fo:block>
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="subject"/>
        </fo:block>
      </fo:table-cell>
      
      <xsl:if test="$data_count &gt; 0">
      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data4_1"/> 
        </fo:block>
      </fo:table-cell>

      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data5_1"/>
        </fo:block>
      </fo:table-cell>

      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data6_1"/>
        </fo:block>
      </fo:table-cell>    
      </xsl:if>
    </fo:table-row>
    
      <xsl:apply-templates select="more_data"/>
    
  </xsl:template>
  
  <xsl:template match="more_data">
  <xsl:apply-templates/>
  </xsl:template>
  
  <xsl:template match="data_set">
    <fo:table-row background-color="#F0F0FF">
      <fo:table-cell starts-row="false"
text-align="left"  border-width=".1mm"
border-style="solid" border-color="black"
padding="2pt" padding-left="2pt" padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data4"/> 
        </fo:block>
      </fo:table-cell>

      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data5"/>
        </fo:block>
      </fo:table-cell>

      <fo:table-cell text-align="left" 
border-width=".1mm" border-style="solid"
border-color="black" padding="2pt" padding-left="2pt"
padding-right="2pt">
        <fo:block font-size="9pt" line-height="1.2"
overflow="visible"  hyphenate="true" language="en">
          <xsl:value-of select="data6"/>
        </fo:block>
      </fo:table-cell>    
    </fo:table-row>
  </xsl:template>



__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Current Thread