我想为每个表创建一个索引(确定XML中的位置),但问题是这些表的深度不同。我计划使用XSLT转换处理XML到FO。我有什么想法怎么做?
Sample XML
<document>
<table> ... </table>
<section>
<table> ... </table>
<subsection>
<table> ... </table>
</subsection>
</section>
</document>
答案 0 :(得分:5)
@ Tomalak的解决方案不完全正确,并且在存在嵌套表的情况下会产生错误的结果。
原因是XPath preceding
和ancestor
轴不重叠。
提供所需数字的一个正确的XPath表达式为:
count(ancestor::table | preceding::table) + 1
所以,请使用:
<xsl:template match="table">
<table id="tbl_{count(ancestor::table | preceding::table) + 1}">
<!-- further processing -->
</table>
</xsl:template>
答案 1 :(得分:4)
这将从1开始连续对表格进行编号。
<xsl:template match="table">
<table id="tbl_{count(preceding::table) + 1}">
<!-- further processing -->
</table>
</xsl:template>