[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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
Keywords