我希望使用包含的 for-each 循环构造一个 XSL 节点集变量。重要的是,构建的节点集是原始(选定的)节点集,而不是副本。
这是我的问题的一个非常简化的版本(当然可以通过选择来解决,但这不是问题的重点)。我已经使用 <name> 节点来测试构造的节点集变量实际上是在原始树中而不是副本中。
XSL 版本 1.0,处理器是 msxsl。
非工作 XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="iso-8859-1" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:variable name="entries">
<xsl:for-each select="//entry">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="entryNodes" select="msxsl:node-set($entries)"/>
<xsl:for-each select="$entryNodes">
<xsl:value-of select="/root/name"/>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
XML 输入:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>X</name>
<entry>1</entry>
<entry>2</entry>
</root>
想要的输出:
X1X2
实际输出:
12
当然(或一个)问题是副本,但我无法解决这个问题。