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

XSLT通过XPath选取含指定子节点的mynode并获取对应element1值

问题原因

你原来的写法错误在于,谓词内的./name()=$col是取当前mynode节点的名称和变量$col比对,mynode节点名显然不等于element2,过滤逻辑完全不匹配需求。

正确解决方案

直接调整XPath谓词的过滤范围即可,不需要遍历节点,XPath原生查询就可以高效处理大体积XML的匹配需求:

<xsl:variable name="col" select="/translation/col" />
<xsl:variable name="cont" select="/translation/cont" />
<xsl:value-of select="/mynodes/mynode[*[name()=$col and normalize-space(.)=$cont]]/element1" />

逻辑说明

  • 谓词内层的*匹配mynode的所有直接子元素
  • 先过滤出「子元素名等于$col、子元素文本值等于$cont」的mynode节点
  • 最后取符合条件的mynode下的element1文本值
  • 额外加了normalize-space()是为了兼容子节点文本前后有空白字符的场景,如果可以保证文本没有多余空白可以去掉。

你提供的示例XML执行后会得到结果c,符合预期。

内容的提问来源于stack exchange,提问作者Michael Glöckner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:36:05