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

如何在XSLT中向已创建的父标签<Stmt>内插入子标签

解决XSLT中重复生成节点的问题

你的问题出在两个<xsl:if>各自独立生成<Stmt>标签,导致满足条件时输出两个独立节点。要实现把第二个条件的<Acct>插入第一个的<Stmt>内部,核心是只生成一次<Stmt>,在其内部判断是否添加<Acct>。

错误代码示例(匹配你的当前实现逻辑)

<!-- 第一个条件生成独立Stmt -->
<xsl:if test="条件1">
  <Stmt>
    <!-- 第一个条件对应的内容 -->
  </Stmt>
</xsl:if>

<!-- 第二个条件生成另一个独立Stmt -->
<xsl:if test="条件2">
  <Stmt>
    <Acct>
      <!-- Acct相关解析内容 -->
    </Acct>
  </Stmt>
</xsl:if>

修正后的代码

把第二个<xsl:if>嵌套进第一个的<Stmt>内部,这样只有第一个条件满足时才会生成<Stmt>,同时根据第二个条件决定是否在其中插入<Acct>:

<xsl:if test="条件1">
  <Stmt>
    <!-- 第一个条件对应的原有解析内容 -->
    
    <!-- 嵌套第二个条件,满足则在Stmt内生成Acct -->
    <xsl:if test="条件2">
      <Acct>
        <!-- Acct相关解析内容 -->
      </Acct>
    </xsl:if>
  </Stmt>
</xsl:if>

特殊场景补充

如果存在「条件2满足但条件1不满足时,也需要生成带Acct的Stmt」的需求,可以调整逻辑为:

<xsl:if test="条件1 or 条件2">
  <Stmt>
    <xsl:if test="条件1">
      <!-- 第一个条件对应的解析内容 -->
    </xsl:if>
    <xsl:if test="条件2">
      <Acct>
        <!-- Acct相关解析内容 -->
      </Acct>
    </xsl:if>
  </Stmt>
</xsl:if>

这样就能确保无论哪种情况都只生成一个<Stmt>节点,内部根据条件填充对应内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 18:52:07