从引用元素中,获取祖先中先前元素出现的计数

Eri*_*ric 2 xml xslt xpath xslt-1.0

我试图从对图形的引用中确定当前章节中包含的图形编号。

要求:

  • 每章的图号都应重置。
  • 图参考,<figure_reference>,可能出现在任何深度。
  • XSLT 1.0

XML:

<top>
    <chapter>
        <dmodule>
            <paragraph>
                <figure>figure</figure>
            </paragraph>
            <figure>figure</figure>
        </dmodule>
    </chapter>
    <chapter>
        <dmodule>
            <figure>figure</figure>
            <paragraph>
                <figure>figure</figure>
            </paragraph>
        </dmodule>
        <dmodule>
            <figure>figure</figure>
            <paragraph>
                <figure>figure</figure>
                <paragraph>
                    <figure>figure</figure>
                </paragraph>
            </paragraph>
            <figure_reference id="c"/>
            <figure id="c">figure</figure>
        </dmodule>
    </chapter>
</top>
Run Code Online (Sandbox Code Playgroud)

XSL:

<xsl:template match="figure_reference">
    <xsl:value-of select="count(ancestor::dmodule//figure[@id = current()/@id]/preceding::figure)+1"/>

</xsl:template>
Run Code Online (Sandbox Code Playgroud)

当前计数结果:8

期望计数结果:6

Dan*_*ley 5

试试这个模板:

  <xsl:template match="figure_reference">
    <xsl:value-of select="count(ancestor::chapter//figure[@id=current()/@id]/preceding::figure[ancestor::chapter = current()/ancestor::chapter])+1"/>      
  </xsl:template>
Run Code Online (Sandbox Code Playgroud)