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

XSLT如何为重复JournalLine节点下的每个Quantity元素值加10

问题排查与修正方案

现有代码错误点

  • XSLT命名空间不完整:xsl命名空间缺少http://前缀,属于语法错误
  • 全局路径误用://Quantity是从文档根节点匹配所有Quantity元素,默认返回匹配到的第一个节点的值,导致所有Quantity输出值一致
  • 缺少加10的逻辑:当前代码仅做了格式化,没有执行值+10的核心操作
  • 版本声明不匹配:你使用的是XSLT 2.0,代码里声明的是1.0版本

修正后代码

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="utf-8" omit-xml-declaration="no" indent="yes" />
    
    <!-- 身份模板:复制所有节点和属性不变 -->
    <xsl:template match="node()|@*">         
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
    
    <!-- 单独处理Quantity的文本节点 -->
    <xsl:template match="Quantity/text()">
        <!-- 当前节点值转数字加10,按需求格式化 -->
        <xsl:value-of select = "format-number(. + 10, '###,###')"/>
    </xsl:template>
    
    <xsl:template match="Filename"></xsl:template>
    
</xsl:stylesheet>

代码说明

  • .代表当前匹配的Quantity文本节点,只会读取当前节点的值做运算,不会出现所有值重复的问题
  • 新增了+ 10的运算逻辑,满足数值调整需求
  • 格式化模板去掉了.00后缀,和你给出的预期输出格式匹配,如果需要保留两位小数可以改回'###,###.00'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:12:03