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

如何在XSLT 1.0中不区分大小写获取XML元素内容

在XSLT 1.0中不区分大小写获取XML元素内容

XSLT 1.0对XML元素名称是大小写敏感的,直接用value-of select="name"只能精准匹配标签名为<name>的元素。要实现不区分大小写匹配任意大小写组合的<Name>、<nAme>等元素,我们可以借助translate()函数统一转换元素名的大小写后再进行匹配。

完整实现示例

输入XML

<?xml version="1.0" encoding="UTF-8"?>
<CommandList>
  <Name>Lufthansa-abc-def-Group-</Name>
  <name>Lufthansa-abc-def-Group-</name>
  <nAme>Lufthansa-abc-def-Group-</nAme>
  <nAME>Lufthansa-abc-def-Group-</nAME>
</CommandList>

XSLT 1.0代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" encoding="UTF-8"/>

  <xsl:template match="/CommandList">
    <!-- 匹配所有名称转小写后等于'name'的元素,输出它们的文本内容 -->
    <xsl:value-of select="*[translate(local-name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'name']" />
  </xsl:template>
</xsl:stylesheet>

输出结果

Lufthansa-abc-def-Group-Lufthansa-abc-def-Group-Lufthansa-abc-def-Group-Lufthansa-abc-def-Group

原理说明

  • local-name():获取当前元素的本地名称(不包含命名空间前缀)
  • translate():将元素名中的所有大写字母转换为小写,这样不管原元素名是<Name>、<nAme>还是其他大小写组合,都会被转为name,从而和目标字符串匹配
  • *[条件]:选择所有满足条件的子元素,value-of会自动将多个元素的文本内容拼接输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:02:39