You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过XSLT提取展示XML列表中decisions节点的最后一个item项

解决方案

不需要给decisions/item节点额外添加id属性用于排序,直接通过XPath内置的last()函数即可定位到最后一个item节点,修改方式如下:

方法1:修改模板匹配规则(推荐)

直接调整原有模板的match属性,仅匹配decisions下最后一个item内的费用项:

<xsl:template match="decisions/item[last()]/fees/item">
  <xsl:if test="feeType/name != ''">
    <xsl:value-of select="feeType/name"/>
      <xsl:choose>
        <xsl:when test="suggestedAmount > 0">
          <xsl:text> </xsl:text><xsl:value-of select="suggestedAmount"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:if test="amount > 0">
            <xsl:text> </xsl:text><xsl:value-of select="amount"/><xsl:text> </xsl:text><xsl:value-of select="currency/name"/>
          </xsl:if>
          <xsl:if test="percent > 0">
            <xsl:text> </xsl:text><xsl:value-of select="percent"/><xsl:text> </xsl:text>%
          </xsl:if> 
        </xsl:otherwise>
      </xsl:choose>
 </xsl:if>           
</xsl:template>

方法2:修改模板调用规则

如果你原有代码中是显式调用该模板,也可以直接调整apply-templates的选择范围,原有模板不需要修改:

<!-- 原有调用代码可能类似这样 -->
<xsl:apply-templates select="decisions/item/fees/item"/>

<!-- 修改为 -->
<xsl:apply-templates select="decisions/item[last()]/fees/item"/>

原理说明

XPath的last()函数会返回当前上下文下同层级节点的总数量,item[last()]会按照XML文档内的节点先后顺序,选中同层级下的最后一个item节点,无论decisions下有1个还是多个item都可以正确生效。

内容的提问来源于stack exchange,提问作者Bellerephon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:36:03