I want to create an index (determine the position in the XML) for every table but the problem is that the tables are in different depth. I plan to process the XML with XSLT transformation to FO. I Any ideas how to do this?
Sample XML
<document>
<table> ... </table>
<section>
<table> ... </table>
<subsection>
<table> ... </table>
</subsection>
</section>
</document>
@Tomalak's solution isn't completely correct and will produce wrong result in the case when there are nested tables.
The reason for this is that the XPath preceding and ancestor axes are non-overlapping.
One correct XPath expression that gives the wanted number is:
count(ancestor::table | preceding::table) + 1
So, use:
<xsl:template match="table">
<table id="tbl_{count(ancestor::table | preceding::table) + 1}">
<!-- further processing -->
</table>
</xsl:template>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With