Xslt 计数前面的元素忽略节点

Xslt 计数前面的元素忽略节点,xslt,xslt-2.0,Xslt,Xslt 2.0,我有下面的XML <nd> <fn> <fnn>*</fnn> <fnt> <p> <i>ftn 1</i> </p> </fnt>

我有下面的XML

<nd>
            <fn>
                <fnn>*</fnn>
                <fnt>
                    <p>
                        <i>ftn 1</i>
                    </p>
                </fnt>
            </fn>
            <ti>
                <fn>
                    <fnn>*</fnn>
                    <fnt>
                        <p>
                            <i>ftn 1</i>
                        </p>
                    </fnt>
                </fn>
            </ti>
            <tx>
                <fn>
                    <fnn>1</fnn>
                    <fnt>
                        <p>
                            <i>ftn2</i>
                        </p>
                    </fnt>
                </fn>
                <fn>
                    <fnn>2</fnn>
                    <fnt>
                        <p>
                            <i>ftn3</i>
                        </p>
                    </fnt>
                </fn>
            </tx>
        </nd>
在这里,我可以使用忽略ti,但在t计数中,它考虑了ti内部的fnn,在这里,我想忽略它并计数。在脚注部分,我不能忽略它

这里是头部

在ftn.0之后,它将生成ftn.2,但我希望它是ftn.1

在脚注部分有ftn.1和ftn.2,这是ti的脚注,应该忽略

请让我知道如何解决这个问题

这是你的电话号码


谢谢。

我想您可以通过以下方式更改计数器:

<xsl:variable name="count" select="count(preceding::fnn[not(ancestor::ti)])"/>

我不确定是否完全理解objectif,但请尝试以下方法:。它当然有一种更简单的方法,但不需要更改整个代码。对于模式脚注,有必要更改计数器并将其导出为模板,并将谓词添加到fnt。
<xsl:variable name="count" select="count(preceding::fnn[not(ancestor::ti)])"/>