[Home] [By Thread] [By Date] [Recent Entries]
Hi list!
I hate Adobe Indesign generated table xml. I have already a solution for the grouping of rows. But now the table have rowspan also, and if I transform the xml the HTML is breaking up. Has anyone a general solution for this table, or could someone help me, how can I do it. I'm ready to pay for the solution. Thank you! Indesign XML (Table): <Root> <Text> <Table xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/" aid:table="table" aid:trows="7" aid:tcols="3"> <Cell aid:table="cell" aid:crows="1" aid:ccols="3"> <CellHeading>SituaC'C#o do BeneficiC!rio/Taxas de BonificaC'C#o</CellHeading> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter> <CharBold>Idade</CharBold> </CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="2"> <CellBodyCenter> <CharBold>Carreira Contributiva (em anos)/Mensal</CharBold> </CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter>< 65</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter>CondiC'C5es de Acesso C PensC#o sem PenalizaC'C#o</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="98.93438079914081"> <CellBodyCenter>0,65%</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="3" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter>> 65</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter>15 a 24</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="4" aid:ccols="1" aid:ccolwidth="98.93438079914081"> <CellBodyCenter>0.33%b)</CellBodyCenter> <CellBodyCenter>0.5%b)</CellBodyCenter> <CellBodyCenter>0.65%b)</CellBodyCenter> <CellBodyCenter>1.0%</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter>25 a 34</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter>35 a 39</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter>> 65</CellBodyCenter> </Cell> <Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="78.09186111410146"> <CellBodyCenter>> 40</CellBodyCenter> </Cell> </Table> </Text> </Root> The XSL: <xsl:key name="row" match="Cell"
use=
"
concat
(
generate-id(..),'|',
floor
(
sum(preceding-sibling::Cell/@aid:ccols) div
../@aid:tcols
)
)
"/> <xsl:template match="Table">
<xsl:element name="table">
<xsl:if test="@aid:table = 'table'">
<xsl:attribute name="border">1</xsl:attribute>
</xsl:if>
<xsl:call-template name="rows">
<xsl:with-param name="start" select="0"/>
<xsl:with-param name="end" select="@aid:trows"/>
</xsl:call-template>
</xsl:element>
</xsl:template> <xsl:template name="rows">
<xsl:param name="start"/>
<xsl:param name="end"/>
<xsl:choose>
<xsl:when test="$start = $end">
<xsl:element name="tr">
<xsl:apply-templates
select=
"
key('row',concat(generate-id(),'|',$start))
"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="mid"
select="$start + floor(($end - $start) div 2)"/>
<xsl:call-template name="rows">
<xsl:with-param name="start" select="$start"/>
<xsl:with-param name="end" select="$mid"/>
</xsl:call-template>
<xsl:call-template name="rows">
<xsl:with-param name="start" select="$mid + 1"/>
<xsl:with-param name="end" select="$end"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <xsl:template match="Cell[CellHeading]">
<xsl:element name="th">
<xsl:apply-templates select="@aid:ccols"/>
<xsl:apply-templates select="@aid:crows"/>
<xsl:apply-templates select="CellHeading/text()"/>
</xsl:element>
</xsl:template> <xsl:template match="Cell">
<xsl:element name="td">
<xsl:apply-templates select="@aid:ccols"/>
<xsl:apply-templates
select=".//text()[normalize-space() != '']"/>
<xsl:if test="normalize-space(text()) = ''"> </xsl:if>
</xsl:element>
</xsl:template><xsl:template match="@aid:ccols[. = 1]"/> <xsl:template match="@aid:ccols">
<xsl:attribute name="colspan">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template><xsl:template match="@aid:crows[. = 1]"/> <xsl:template match="@aid:crows">
<xsl:attribute name="rowspan">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
|

Cart



