Re: [xsl] CALS to XHTML table - rowspan

Subject: Re: [xsl] CALS to XHTML table - rowspan
From: "Kraetke, Martin, le-tex martin.kraetke@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 6 Oct 2015 13:37:35 -0000
Hi,

here is another approach. We implemented Andrew Welchs table normalization algorithm for CALS tables. This XSLT generates virtual cells for colspans and rowspans.

https://github.com/transpect/xslt-util/blob/master/calstable/xsl/normalize.xsl

You can import the XSLT normalize.xsl and call the function calstable:normalize(). Below is an example:


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:css="http://www.w3.org/1996/css"; xmlns:hub="http://docbook.org/ns/docbook"; xmlns:dbk="http://docbook.org/ns/docbook"; xmlns:saxon="http://saxon.sf.net/"; xmlns:tr="http://www.transpect.io"; xmlns:calstable="http://docs.oasis-open.org/ns/oasis-exchange/table"; version="2.0">

  <!-- Documentation: in normalize.xsl -->
  <xsl:import href="normalize.xsl"/>

<xsl:output indent="yes"/>

  <xsl:template match="node() | @*" >
    <xsl:copy copy-namespaces="no">
      <xsl:apply-templates select="@*, node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*[*:row]">
    <xsl:sequence select="calstable:check-normalized(
                            calstable:normalize(.),
                            'no'
                          )"/>
  </xsl:template>

</xsl:stylesheet>


kind regards,


Martin

Am 05.10.2015 um 17:40 schrieb a kusa akusa8@xxxxxxxxx:
Hello:

It has been a while since I worked on XSLT. But I have a current issue
that I need to solve with xslt.

I have a CALS table that has @morerows. I have to generate a table
that does not have a rowspan attribute, and generate cells according
to the value of @morerows.

So, my input XML looks like this:

<table>
<tgroup>
<tbody>
<row><entry morerows="2">test 1</entry>
<entry morerows="1">test 2</entry>
<entry morerows="0">test 3</entry>
</row>
<row><entry morerows="0">test 4</entry>
<entry morerows="1">test 5</entry>
<entry morerows="0">test 6</entry>
</row>
</tbody>
</tgroup>
</table>

How do I generate rows/cells based on morerows in xslt?

Any tips is appreciated.

Current Thread