I have this HTML table:
<?xml version="1.0" encoding="UTF-8"?>
<table class="names">
<tbody>
<tr class="names">
<td>
<p><strong class="strong">name</strong></p>
</td>
<td>
<p><strong class="strong">surname</strong></p>
</td>
<td>
<p><strong class="strong">aff</strong></p>
</td>
</tr>
<tr class="names">
<td>
<p><span class="contrib">John</span></p>
</td>
<td>
<p><span class="contrib">Smith</span></p>
</td>
<td>
<p><span class="contrib">1,3</span></p>
</td>
</tr>
<tr class="names">
<td>
<p><span class="contrib">Michael</span></p>
</td>
<td>
<p><span class="contrib">Jordan</span></p>
</td>
<td>
<p><span class="contrib">1,2</span></p>
</td>
</tr>
</tbody>
</table>
I would like to transform it to structured XML elements like this:
<contrib>
<person>
<name>John</name>
<surname>Smith</surname>
<number>1</number>
<number>3</number>
</person>
<person>
<name>Michael</name>
<surname>Jordan</surname>
<number>1</number>
<number>2</number>
</person>
</contrib>
And I created this XSLT so far:
<xsl:template name="article-meta">
<contrib>
<person>
<name>
<xsl:value-of select=".//td[1]//span[@class='contrib']"/>
</name>
<surname>
<xsl:value-of select=".//td[2]//span[@class='contrib']"/>
</surname>
<xsl:for-each select="//td[3]//span[@class='contrib']">
<number><xsl:value-of select="normalize-space(.)"/></number>
</xsl:for-each>
</person>
</contrib>
</xsl:template>
I've been playing the whole day, but it seems I'm unable to produce multiple xml blocks. I'm always getting all results inside single element. Is it even possible somehow to create the wanted structure above if all <span> elements inside <td> cells only have class "contrib" and nothing else? Also, the last cell should be tokenized I believe, but I also don't know how to address it.
xslttag.