I need to split the columns of table and make it a new table on the converted xml.
Input XML I'm having:
<table frame="none">
<tgroup cols="9">
<colspec colname="column-0" colnum="1" colsep="1" rowsep="1" />
<colspec colname="column-1" colnum="2" colsep="1" rowsep="1" />
<colspec colname="column-2" colnum="3" colsep="1" rowsep="1" />
<colspec colname="column-3" colnum="4" colsep="1" rowsep="1" />
<colspec colname="column-4" colnum="5" colsep="1" rowsep="1" />
<colspec colname="column-5" colnum="6" colsep="1" rowsep="1" />
<colspec colname="column-6" colnum="7" colsep="1" rowsep="1" />
<colspec colname="column-7" colnum="8" colsep="1" rowsep="1" />
<colspec colname="column-8" colnum="9" colsep="1" rowsep="1" />
<thead>
<row>
<entry colname="column-0" colsep="1" rowsep="1" />
<entry colname="column-1" colsep="1" rowsep="1">
<p>
<b>AAAA</b>
</p>
</entry>
<entry colname="column-2" colsep="1" rowsep="1">
<p>
<b>BBBBBBBB</b>
[%]
</p>
</entry>
<entry colname="column-3" colsep="1" rowsep="1">
<p>
<b>CCCC</b>
</p>
</entry>
<entry colname="column-4" colsep="1" rowsep="1">
<p>
<b>DDDDDDD</b>
[%]
</p>
</entry>
<entry colname="column-5" colsep="1" rowsep="1">
<p>
<b>EEEE</b>
[%]
</p>
</entry>
<entry colname="column-6" colsep="1" rowsep="1">
<p>
<b>FFFF</b>
[%]
</p>
</entry>
<entry colname="column-7" colsep="1" rowsep="1">
<p>
<b>GGGG</b>
[%]
</p>
</entry>
<entry colname="column-8" colsep="1" rowsep="1">
<p>
<b>
HHH
<b>1</b>
</b>
</p>
</entry>
</row>
</thead>
<tbody>
<row>
<entry colname="column-0" colsep="1" rowsep="1">
<p>5°C/ambient RH 1.5 months</p>
</entry>
<entry colname="column-1" colsep="1" rowsep="1">
<p>101.6</p>
</entry>
<entry colname="column-2" colsep="1" rowsep="1">
<p><0.2</p>
</entry>
<entry colname="column-3" colsep="1" rowsep="1">
<p>0.1</p>
</entry>
<entry colname="column-4" colsep="1" rowsep="1">
<p>0.2</p>
</entry>
<entry colname="column-5" colsep="1" rowsep="1">
<p>0.2</p>
</entry>
<entry colname="column-6" colsep="1" rowsep="1">
<p>0.2</p>
</entry>
<entry colname="column-7" colsep="1" rowsep="1">
<p>0.1</p>
</entry>
<entry colname="column-8" colsep="1" rowsep="1">
<p>0.6</p>
</entry>
</row>
</tbody>
</tgroup>
</table>
Need to split the input xml into 3 xml (Colspec 0 to 2, 3 to 5, 6 to 8) as like 3 colspec,3 rows 3 entry.
First XML:
<table frame="none">
<tgroup cols="9">
<colspec colname="column-0" colnum="1" colsep="1" rowsep="1" />
<colspec colname="column-1" colnum="2" colsep="1" rowsep="1" />
<colspec colname="column-2" colnum="3" colsep="1" rowsep="1" />
<thead>
<row>
<entry colname="column-0" colsep="1" rowsep="1" />
<entry colname="column-1" colsep="1" rowsep="1">
<p>
<b>AAAA</b>
</p>
</entry>
<entry colname="column-2" colsep="1" rowsep="1">
<p>
<b>BBBBBBBB</b>
[%]
</p>
</entry>
</row>
</thead>
<tbody>
<row>
<entry colname="column-0" colsep="1" rowsep="1">
<p>5°C/ambient RH 1.5 months</p>
</entry>
<entry colname="column-1" colsep="1" rowsep="1">
<p>101.6</p>
</entry>
<entry colname="column-2" colsep="1" rowsep="1">
<p><0.2</p>
</entry>
</row>
</tbody>
</tgroup>
</table>
As like I need two more output xml for the colspec 3 to 5 and 6 to 8.
XSL I have tried:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="node()|@*" />
<xsl:result-document href="file:///C://xslttransform//table3.xml">
<xsl:apply-templates select="node()|@*" />
<xsl:apply-templates select="/topic/body/table/tgroup/colspec" />
<xsl:apply-templates select="/topic/body/table/tgroup/thead" />
<xsl:apply-templates select="/topic/body/table/tgroup/tbody" />
</xsl:result-document>
<xsl:result-document href="file:///C://xslttransform//table2.xml">
<xsl:apply-templates select="node()|@*" />
</xsl:result-document>
<xsl:result-document href="file:///C://xslttransform//table1.xml">
<xsl:apply-templates select="node()|@*" />
</xsl:result-document>
</xsl:template>
<xsl:template match="/topic/body/table/tgroup/colspec">
<xsl:message>Test11</xsl:message>
<xsl:if test=".[@colname='column-0']">
<xsl:message>Test22</xsl:message>
<xsl:variable name="columnfontoId">
<xsl:value-of select="./@id" />
</xsl:variable>
<colspec colname="column-0" colnum="1" colsep="1" id="{$columnfontoId}" rowsep="1" />
</xsl:if>
<xsl:if test=".[@colname='column-1']">
<xsl:message>Test22</xsl:message>
<xsl:variable name="columnfontoId">
<xsl:value-of select="./@id" />
</xsl:variable>
<colspec colname="column-1" colnum="2" colsep="1" id="{$columnfontoId}" rowsep="1" />
</xsl:if>
<xsl:if test=".[@colname='column-2']">
<xsl:message>Test22</xsl:message>
<xsl:variable name="columnfontoId">
<xsl:value-of select="./@id" />
</xsl:variable>
<colspec colname="column-2" colnum="3" colsep="1" id="{$columnfontoId}" rowsep="1" />
</xsl:if>
</xsl:template>
<xsl:template match="/topic/body/table/tgroup/thead">
<xsl:variable name="columnfontoId">
<xsl:value-of select="./@id" />
</xsl:variable>
<thead id="{$columnfontoId}">
<xsl:for-each select="row">
<xsl:variable name="columnfontoId">
<xsl:value-of select="./@id" />
</xsl:variable>
<row id="{$columnfontoId}">
<xsl:for-each select="entry">
<xsl:if test=".[@colname='column-0' or @colname='column-1' or @colname='column-2']">
<xsl:message>Test333</xsl:message>
<xsl:copy-of select="." />
</xsl:if>
</xsl:for-each>
</row>
</xsl:for-each>
</thead>
</xsl:template>
<xsl:template match="/topic/body/table/tgroup/tbody">
<xsl:variable name="columnfontoId">
<xsl:value-of select="./@id" />
</xsl:variable>
<tbody id="{$columnfontoId}">
<xsl:for-each select="row">
<xsl:variable name="columnfontoId">
<xsl:value-of select="./@id" />
</xsl:variable>
<row id="{$columnfontoId}">
<xsl:for-each select="entry">
<xsl:if test=".[@colname='column-0' or @colname='column-1' or @colname='column-2']">
<xsl:message>Test333</xsl:message>
<xsl:copy-of