Subject: Re: [xsl] Split table row on paragraphs From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 30 Oct 2018 17:08:53 -0000 |
I have tables with arbitrary columns and each cell can have an arbitrary number of paragraphs. I want to split rows on paragraphs, so each row only contains one <p> element.
Simplified input:
<table>
<tr>
<td>
<p>Para 1</p>
</td>
<td>
<p>Para 1</p>
<p>Para 2</p>
<p>Para 3</p>
</td>
<td>
<p>Para 1</p>
<p>Para 2</p>
</td>
</tr>
</table>
Desired output:
<table>
<tr>
<td>
<p>Para 1</p>
</td>
<td>
<p>Para 1</p>
</td>
<td>
<p>Para 1</p>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p>Para 2</p>
</td>
<td>
<p>Para 2</p>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p>Para 3</p>
</td>
<td>
</td>
</tr>
</table>
I am after suggestions as to the best way of tackling such a problem.
<xsl:template match="tr"> <xsl:variable name="this-row" select="."/> <xsl:for-each select="1 to max(td/count(p))"> <tr> <xsl:apply-templates select="$this-row/*"> <xsl:with-param name="pos" select="."/> </xsl:apply-templates> </tr> </xsl:for-each> </xsl:template>
<xsl:template match="td"> <xsl:param name="pos"/> <xsl:copy> <xsl:apply-templates select="p[$pos]"/> </xsl:copy> </xsl:template>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Split table row on paragraphs, kevinbrianbird@xxxxx | Thread | Re: [xsl] Split table row on paragr, kevinbrianbird@xxxxx |
[xsl] Split table row on paragraphs, kevinbrianbird@xxxxx | Date | Re: [xsl] Split table row on paragr, kevinbrianbird@xxxxx |
Month |