在current-group上使用XPath()

时间:2018-04-27 09:11:29

标签: xpath xslt-2.0 xslt-grouping

我需要在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变量的类型有何不同有关,但我似乎无法自己解决这个问题。有什么线索可以避免引入变量来进行类型转换?或者它有什么不同?

1 个答案:

答案 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"/>