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

XSLT实现userSign匹配列表时修改同interval下shiftGroup值

XSLT实现方案评估

你的实现逻辑正确,符合XSLT 2.0语法规范,测试通过的情况下完全可以满足需求:当interval节点下的userSign属于指定列表时,批量替换该节点下所有shiftGroup的文本值。

可优化建议

如果希望代码更精简易维护,可以做如下调整:

  • 清理冗余重复值:你代码中Line_A对应的id列表存在大量重复的数值(比如188166、152560等均重复出现两次),不会影响运行结果,但可以删除重复值降低冗余。
  • 省去参数传递逻辑:无需通过interval模板向下传递userSign参数,可以直接在shiftGroup模板中通过轴选择器获取所属interval的userSign值,同时可以删掉自定义的interval匹配模板,仅保留身份模板即可,简化后的shiftGroup模板示例如下:
<xsl:template match="shiftGroup">
  <shiftGroup>
    <!-- 直接向上查找所属interval的userSign值 -->
    <xsl:variable name="currentUserSign" select="ancestor::interval/employee/userSign"/>
    <xsl:choose>
      <xsl:when test="$currentUserSign = (188166, 152560, 513505, 199370...)">
        <xsl:text>Line_A</xsl:text>
      </xsl:when>
      <!-- 其余判断分支保持原有逻辑不变 -->
      <xsl:otherwise>
        <xsl:value-of select="."/>
      </xsl:otherwise>
    </xsl:choose>
  </shiftGroup>
</xsl:template>
  • 抽离全局映射配置:如果后续需要频繁调整userSign和分组标识的对应关系,可以把所有映射规则抽成全局变量,后续维护不用修改模板逻辑,直接修改变量即可。

以上优化都是可选调整,你现有的实现已经可以正常运行,不需要修改也能满足业务需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:03