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

XSLT转换时如何替换元素名称中的()字符解决无效元素名错误

问题原因

报错是因为XML元素名称不允许包含(和)这类特殊字符,原XSLT只替换了空格为下划线,没有处理属性名里的括号,导致生成的元素名违反XML语法规则。

修正后的XSLT代码

如果希望移除括号并保留语义,使用嵌套的translate函数先清理括号,再替换空格:

<xsl:template match="Attribute">
  <xsl:element name="{translate(translate(@name, '()', ''), ' ', '_')}">
    <xsl:value-of select="Values/Value/@Name"/>
  </xsl:element>
</xsl:template>

如果想把括号也替换为下划线(替代移除),可以一次性指定所有要替换的字符:

<xsl:template match="Attribute">
  <xsl:element name="{translate(@name, ' ()', '__')}">
    <xsl:value-of select="Values/Value/@Name"/>
  </xsl:element>
</xsl:template>
补充说明

你给出的预期输出<napiecie_wyjsciowe_(max)>12 V</napiecie_wyjsciowe_(max)>其实不符合XML规范——XML元素名称不能包含(和),这类输出会被视为无效XML。因此更合理的做法是将括号替换或移除,生成合法的元素名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:27:53