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

XSLT如何统计Parameter元素创建次数并补足至指定n个

解决方案

修改思路

  • 给原Split模板新增两个参数:targetCount(指定需要生成的Parameter总数量,即你提到的n)、currentCount(记录当前已生成的Parameter数量,默认初始值为0)
  • 每次拆分出有效内容生成Parameter后,将currentCount自增1传入下一层递归
  • 字符串拆分完成后判断已生成数量是否小于目标总数,若不足则递归生成空Parameter,直到达到目标数量
  • 修正原代码中元素名拼写错误:Paramter改为Parameter

代码实现

调用示例(以n=9为例)

<xsl:call-template name="Split">
  <xsl:with-param name="text" select="concat('Set string &quot;', attribute, '&quot; value &quot;', stringValue, '&quot;')" />
  <xsl:with-param name="targetCount" select="9" />
</xsl:call-template>

修改后的Split模板

<xsl:template name="Split">
  <xsl:param name="text" select="''" />
  <!-- 目标生成Parameter总数量 -->
  <xsl:param name="targetCount" select="0" />
  <!-- 当前已生成Parameter数量,初始默认0 -->
  <xsl:param name="currentCount" select="0" />

  <xsl:variable name="tag"  select="substring-before(substring-after($text, '&quot;'), '&quot;')" />
  <xsl:variable name="tail" select="substring-after($text, '&quot;')" />

  <xsl:choose>
    <!-- 存在可拆分的有效内容 -->
    <xsl:when test="$tag != ''">
      <Parameter>
        <xsl:value-of select="$tag"/>
      </Parameter>
      <!-- 递归处理剩余字符串,已计数+1 -->
      <xsl:call-template name="Split">
        <xsl:with-param name="text" select="$tail" />
        <xsl:with-param name="targetCount" select="$targetCount" />
        <xsl:with-param name="currentCount" select="$currentCount + 1" />
      </xsl:call-template>                
    </xsl:when>
    <!-- 字符串拆分完成,不足目标数则补空Parameter -->
    <xsl:when test="$currentCount &lt; $targetCount">
      <Parameter></Parameter>
      <!-- 递归补全,已计数+1 -->
      <xsl:call-template name="Split">
        <xsl:with-param name="text" select="''" />
        <xsl:with-param name="targetCount" select="$targetCount" />
        <xsl:with-param name="currentCount" select="$currentCount + 1" />
      </xsl:call-template>
    </xsl:when>
  </xsl:choose>
</xsl:template>

补充说明

如果需要严格限制最多生成targetCount个Parameter(拆分出的有效内容数量超过目标数时做截断),只需要在生成带值Parameter的逻辑前增加$currentCount &lt; $targetCount的判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:36:01