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

使用XSLT筛选语言以'ian'结尾的国家名称的技术咨询

解决XSLT筛选语言以'ian'结尾的国家问题

首先看你原来的代码,核心问题出在筛选条件的写法上——你错误地对字符串'language'做了截取操作,而不是检查language元素的文本内容是否以ian结尾。下面是修正后的完整XSLT方案:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                exclude-result-prefixes="xs" 
                version="2.0">
  <xsl:template match="/">
    <countries>
      <!-- 筛选包含以'ian'结尾的语言的国家 -->
      <xsl:for-each select="countries/country[language[ends-with(., 'ian')]]">
        <country>
          <nom><xsl:value-of select="@name"/></nom>
          <idiomes>
            <!-- 只输出符合条件的语言,多语言用逗号分隔 -->
            <xsl:value-of select="language[ends-with(., 'ian')]" separator=", "/>
          </idiomes>
        </country>
      </xsl:for-each>
    </countries>
  </xsl:template>
</xsl:stylesheet>

关键修正点说明:

  • 筛选逻辑修正:country[language[ends-with(., 'ian')]] 里的.代表当前language元素的文本内容,ends-with()是XSLT 2.0自带的函数,专门用来检查字符串后缀,比手动截取更直观可靠。
  • 语言输出优化:在idiomes节点中,我们同样用ends-with(., 'ian')过滤,确保只输出符合条件的语言,同时通过separator=", "让多个语言之间用逗号分隔,格式更清晰。

如果需要兼容XSLT 1.0(部分旧环境不支持2.0),可以用substring函数手动截取末尾3个字符来判断,替换成以下筛选条件:

country[language[substring(., string-length(.) - 2) = 'ian']]

原理是计算字符串总长度,取最后3个字符与'ian'对比,效果和ends-with完全一致。

内容的提问来源于stack exchange,提问作者Mohamed A.B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:46:13