我如何跨越fo:table-cell从一个命名列到另一个?

时间:2014-07-27 04:30:12

标签: xml xslt cell xsl-fo

我正在使用xslt将此xml表转换为pdf。条目/ @ namest标识跨度开始的位置,entry / @ nameend标识跨度应该结束的位置。

我之前使用数字@colname值跨越了单元格但是这个让我很难过。请帮忙。

这是我的源xml:

<table>
    <title>table title</title>
    <tgroup cols="5" colsep="1" rowsep="1">
        <colspec colname="colspec0" colwidth="557*"/>
        <colspec colname="colspec2" colwidth="823*"/>
        <colspec colname="colspec1" colwidth="702*"/>
        <colspec colname="col1" colwidth="4452*"/>
        <colspec colname="col2" colwidth="4646*"/>
        <thead>
        <row>
            <entry namest="colspec0" nameend="col1" valign="middle" align="center">
                    <para>this cell should span to 4th column</para>
            </entry>
            <entry valign="middle" align="center">
                <para>non span cell</para>
            </entry>
        </row>
        </thead>
        <tbody>...</tbody>
    </tgroup>
</table>

这是我的xslt:

的片段
<xsl:template match="colspec">
<fo:table-column>
    <xsl:attribute name="column-number"><xsl:value-of select="count(preceding-sibling::colspec + 1)"></xsl:value-of></xsl:attribute>
    <xsl:attribute name="column-width"><xsl:value-of select="$mm-to-in"></xsl:value-of></xsl:attribute>
        <xsl:apply-templates/>
</fo:table-column>        
</xsl:template>
<xsl:template match="entry"> 
<fo:table-cell empty-cells="show" xsl:use-attribute-sets="table.cell.padding"> 
    <xsl:if test="@namest and @nameend">
        <xsl:attribute name="number-columns-spanned">
            <xsl:value-of select="(@nameend - @namest) + 1"/>
        </xsl:attribute>
    </xsl:if>
    <fo:block> 
        <xsl:choose>
            <xsl:when test="string-length(text()) &lt; 1">
                <xsl:apply-templates/>&#160;
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose>
    </fo:block>
</fo:table-cell>        

0 个答案:

没有答案