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

如何使用XSLT移除XML属性值中的美元符号$

错误排查

你写的代码存在三个核心问题:

  • 匹配路径语法错误:match="/data/DWFOutput/FormsXML/print/ExportDocument/" 末尾多了一个多余的斜杠,导致无法匹配到对应节点,你写的$替换逻辑全程没有执行
  • 处理逻辑完全破坏原结构:就算路径写对了,你写的逻辑会直接把ExportDocument下的所有标签、其他属性全部丢弃,只输出dataElement的value处理后的纯文本,完全不符合你保留XML结构只改属性的需求
  • 没有精准定位修改目标:你要改的是dataElement节点的value属性,不需要修改上层节点的处理逻辑,只需要单独针对这个属性写替换规则即可

可用XSLT代码

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
  
  <!-- 身份复制模板:所有不需要修改的内容原样复制 -->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
  
  <!-- 精准匹配dataElement的value属性,移除$符号 -->
  <xsl:template match="dataElement/@value">
    <xsl:attribute name="value">
      <xsl:value-of select="translate(., '$', '')"/>
    </xsl:attribute>
  </xsl:template>
</xsl:stylesheet>

效果说明

运行这段代码后,所有dataElement的value属性中的$符号都会被移除,其余XML结构、节点、属性全部保持不变,示例转换效果:
原属性:value="$Annual" → 处理后:value="Annual"
原属性:value="$ 2504" → 处理后:value=" 2504"

如果你需要同时去掉$后面的多余空格,可以把translate那一行替换为:
<xsl:value-of select="normalize-space(translate(., '$', ''))"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:57:01