如何在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
相关产品推荐
相关产品推荐

