Xslt 计算XSL中具有特定子节点的节点数

Xslt 计算XSL中具有特定子节点的节点数,xslt,Xslt,我有一些XSL,其中我需要为每个具有特定子节点的人执行特定操作,但该类型的最后一个节点除外: <xsl:for-each select="/FormData/Persons/Person"> <xsl:if test="MySpecificType"> <!--Header--> <xsl:call-template name="Header"

我有一些XSL,其中我需要为每个具有特定子节点的人执行特定操作,但该类型的最后一个节点除外:

<xsl:for-each select="/FormData/Persons/Person">
                <xsl:if test="MySpecificType">
                    <!--Header-->
                    <xsl:call-template name="Header"/>

                    <!--Body-->
                    <xsl:call-template name="Person"/>
                    <xsl:if test="position() != last()">
                        <!-- Specific logic -->
                    </xsl:if>
                </xsl:if>
            </xsl:for-each>

if位置()的测试!=last只捕获他不是最后一个人的情况,我真正想捕获的是他是否不是特定类型的最后一个人

有没有办法计算有多少人拥有该子节点,然后在我的if中检查?或者可能只是foreach超过了具有此节点的用户

xml看起来像:

<Person><Name /><SpecificType><OtherInfo /></SpecificType></Person>

我不想捕获的节点将不包括SpecificType节点。

使用谓词
而不是
xsl:if

使用谓词
而不是
xsl:if

我需要为每个人做一个特定的操作,每个人都有一个特定的 子节点


有没有办法数一数有多少人拥有这种能力 子节点

计算节点数是一回事;处理节点是另一个问题

要计算符合条件的节点,可以执行以下操作:

<xsl:value-of select="count(/FormData/Persons/Person[MySpecificType]"/>

要处理它们,请执行以下操作:

<xsl:for-each select="/FormData/Persons/Person[MySpecificType]">
    <!-- do something -->
   <xsl:if test="position() != last()">
        <!-- do something extra -->
    </xsl:if>
</xsl:for-each>

我需要为每个人做一个特定的操作,每个人都有一个特定的 子节点


有没有办法数一数有多少人拥有这种能力 子节点

计算节点数是一回事;处理节点是另一个问题

要计算符合条件的节点,可以执行以下操作:

<xsl:value-of select="count(/FormData/Persons/Person[MySpecificType]"/>

要处理它们,请执行以下操作:

<xsl:for-each select="/FormData/Persons/Person[MySpecificType]">
    <!-- do something -->
   <xsl:if test="position() != last()">
        <!-- do something extra -->
    </xsl:if>
</xsl:for-each>


我想计算它们的唯一原因是进行处理,感谢您的解释!我想数一数的唯一原因是为了处理,谢谢你的解释!