如果您使用的是 XSLT2.0,则可以使用tokenize函数
<xsl:variable name="tokenizedValues" select="tokenize($values,',')"/>
这会将逗号分隔的字符串拆分为值列表。然后,您可以通过检查列表中的name属性来查找表元素
<xsl:apply-templates select="table[index-of($tokenizedValues,@name)]"/>
例如,考虑以下 XML
<tables>
<table name="A">1</table>
<table name="B">2</table>
<table name="C">3</table>
<table name="D">4</table>
<table name="E">5</table>
</tables>
当您使用以下 XSLT
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/*">
<xsl:variable name="values">A,B,C,D</xsl:variable>
<xsl:variable name="tokenizedValues" select="tokenize($values,',')"/>
<xsl:apply-templates select="table[index-of($tokenizedValues,@name)]"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
然后输出如下
<table name="A">1</table>
<table name="B">2</table>
<table name="C">3</table>
<table name="D">4</table>