我有一个像这样的xml,
<doc>
<sec>
<table>
<footnote>fn1</footnote>
<p>
<footnote>fn2</footnote>
</p>
<footnote>fn3</footnote>
</table>
<table>
<p>
<footnote>fn4</footnote>
<footnote>fn5</footnote>
</p>
<footnote>fn6</footnote>
<footnote>fn7</footnote>
<footnote>fn8</footnote>
</table>
</sec>
<sec>
<table>
<footnote>fn9</footnote>
<footnote>fn10</footnote>
<footnote>fn11</footnote>
</table>
</sec>
</doc>
我需要对脚注进行编号,以便每次都应该在表格中以1开头,我正在使用XSLT进行转换。
预期的产出是,
<doc>
<sec>
<table>
<footnote>1<s/>fn1</footnote>
<p>
<footnote>2<s/>fn2</footnote>
</p>
<footnote>3<s/>fn3</footnote>
</table>
<table>
<p>
<footnote>1<s/>fn4</footnote>
<footnote>2<s/>fn5</footnote>
</p>
<footnote>3<s/>fn6</footnote>
<footnote>4<s/>fn7</footnote>
<footnote>5<s/>fn8</footnote>
</table>
</sec>
<sec>
<table>
<footnote>1<s/>fn9</footnote>
<footnote>2<s/>fn10</footnote>
<footnote>3<s/>fn11</footnote>
</table>
</sec>
</doc>
我尝试使用position()
函数,我尝试使用count()函数进行计算,但无法找到解决方法。
<xsl:template match="footnote">
<xsl:variable name="count-pre" select="count(preceding::footnote)-count(ancestor::table/footnote)"/>
<footnote>
<xsl:value-of select="$count-pre"/>
<s/>
<xsl:apply-templates/>
</footnote>
</xsl:template>
有人能建议我使用XSLT做到这一点吗?
答案 0 :(得分:4)
试试这个:
<xsl:template match="footnote">
<footnote>
<xsl:number from="table" level="any"/>
<s/>
<xsl:apply-templates/>
</footnote>
</xsl:template>
处的转化