这是我的 XML:
...
<table></table>
<p class="source"></p>
<p class="notes"></p>
<p class="notes"></p>
<p class="notes"></p>
<p />
<p />
...
<table></table>
<p class="notes"></p>
<p class="notes"></p>
<p />
...
我正在尝试编写一个为每个"<p>"
标签调用的模板。这个模板将返回这个标签相对于它的第一个前面的标签所在的位置的索引"<table>"
。它应该只计算"<p>"
属性“class”等于“notes”的标签。
因此,对于上面的示例,我希望在下面的评论中注明索引:
...
<table></table>
<p class="source"></p>
// should return 0 <p class="notes"></p>
// should return 1 <p class="notes"></p>
// should return 2 <p class="notes"></p>
<p />
<p />
...
<table></table>
// should return 0 <p class="notes"></p>
// should return 1 <p class="notes"></p>
<p />
...
到目前为止,这是我想出的:
<xsl:template name="PrintTableNumberedNote">
<xsl:variable name="currentPosition" select="count(preceding-sibling::p[(@class='notes')])"/>
<xsl:value-of select="$currentPosition"/>.
</xsl:template>
我需要添加逻辑以使计数在上表第一次出现时停止,因为这是使用此模板的结果不正确的样子:
...
<table></table>
<p class="source"></p>
// returns 0 <p class="notes"></p>
// returns 1 <p class="notes"></p>
// returns 2 <p class="notes"></p>
<p />
<p />
...
<table></table>
// returns 3 <p class="notes"></p>
// returns 4 <p class="notes"></p>
<p />
...
如何将其他条件与我的 XPath 语句结合起来?
谢谢,