Tim C 在以下线程中给出了完整的答案:Use a xsl:for-each over an xml to determine which label-value pairs are displayed? . 我建议你看看它。
基本上对于XSLT 2.0,您可以将您现在输入的 XML<xsl:variable>
直接包含到您的 XSLT 中:
<my:stuff>
<foo name="bar" key="83"/>
<foo name="baz" key="73"/>
<foo name="qux" key="71"/>
<foo name="quux" key="72"/>
</my:stuff>
然后在需要的 XSLT 中声明一个变量:
<xsl:variable name="stuff" select="document('')/*/my:stuff" />
所以 XSLT 将类似于:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my" exclude-result-prefixes="my">
<my:stuff>
<foo name="bar" key="83"/>
<foo name="baz" key="73"/>
<foo name="qux" key="71"/>
<foo name="quux" key="72"/>
</my:stuff>
<xsl:template match="/">
<xsl:variable name="stuff" select="document('')/*/my:stuff"/>
<xsl:for-each select="$stuff/foo">
<xsl:value-of select="@key" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>