我需要在current-group()
循环中选择xsl:for-each-group
的一个节点的子集。当我使用current-group()/foo
形式的XPath时,没有任何匹配。但是,如果我将当前组绑定到这样的变量:
<xsl:variable name="foo"><xsl:copy-of select="current-group()"/></xsl:variable>
然后使用$foo/foo
形式的XPath,我得到预期的匹配。我怀疑这个问题与current-group()
的类型以及$foo
变量的类型有何不同有关,但我似乎无法自己解决这个问题。有什么线索可以避免引入变量来进行类型转换?或者它有什么不同?
答案 0 :(得分:3)
如果您执行以下操作:
<xsl:for-each-group select="foo" group-by="type">
<xsl:value-of select="current-group()[self::foo]"/>
</xsl:for-each-group>
然后current-group()
返回元素序列
但是
<xsl:variable name="foo"><xsl:copy-of select="current-group()"/></xsl:variable>
返回一个包含foo序列的文档节点,然后你需要使用:
<xsl:value-of select="current-group()/foo"/>