删除XSLT中的最后一个逗号

dsi*_*dsi 3 xslt xslt-1.0

使用XSLT 1.0.

<xsl:for-each select="*">
    <xsl:variable name="xxxx" select="@name" />
    <xsl:if test="../../../../fieldMap/field[@name=$xxxx]">...
        <xsl:if test="position() != last()">////this is not work correctly as last() number is actual last value of for loop and position() is based on if condition.
            <xsl:text>,</xsl:text>
        </xsl:if>
    </xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

你能建议我怎样才能删除最后一个' ,'?

Tim*_*m C 8

position()并且last()应该基于循环,而不是xsl:if.我想你要说的是你实际上想要检查这是否xsl:if是真的最后一个元素,因为这样的元素实际上可能不是循环中的最后一个元素.

我建议将你xsl:for-each和你的结合起来xsl:if,并只选择那些条件为真的元素.那样你就应该能够以你期望的方式检查位置

<xsl:for-each select="*[@name = ../../../../fieldMap/field/@name]>

    <xsl:if test="position() != last()">
         <xsl:text>,</xsl:text>
    </xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)