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

如何在XSLT中将指定节点与逗号分隔的变量数据列表匹配

筛选XML中匹配逗号分隔列表的节点

需求

从给定XML中筛选出country节点值属于XSLT变量中逗号分隔列表的data节点,保留原XML层级结构。

输入XML

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <data>
     <country>USA</country>
   </data>
   <data>
     <country>JPN</country>
   </data>
   <data>
     <country>CAN</country>
   </data>
   <data>
     <country>AUS</country>
   </data>
</root>

XSLT实现方案

通过给目标列表和待匹配值添加前后逗号的方式,避免部分匹配的问题,确保精确匹配:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:variable name="inCountry">USA,CAN,AUS</xsl:variable>
    <!-- 为精确匹配,给列表前后添加逗号 -->
    <xsl:variable name="targetList" select="concat(',', $inCountry, ',')"/>

    <xsl:template match="/root">
        <root>
            <!-- 筛选country值在目标列表中的data节点 -->
            <xsl:for-each select="data[contains($targetList, concat(',', country, ','))]">
                <xsl:copy-of select="."/>
            </xsl:for-each>
        </root>
    </xsl:template>
</xsl:stylesheet>

输出结果

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <data>
    <country>USA</country>
  </data>
  <data>
    <country>CAN</country>
  </data>
  <data>
    <country>AUS</country>
  </data>
</root>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:47:10