我对group-adjacent
的使用有疑问。
我见过两种模式:
模式1:
<xsl:for-each-group select="*" group-adjacent="boolean(self::p[@class = 'code'])">
模式2:
<xsl:for-each-group select="*" group-adjacent="@class">
根据使用的内容,我注意到current-grouping-key()
返回false。
在group-adjancent中使用布尔函数的目的是什么?
答案 0 :(得分:4)
使用表单<xsl:for-each-group select="*" group-adjacent="boolean(self::p[@class = 'code'])">
,分组键是一个布尔值,对于具有p
属性值为class
的相邻code
元素为true,而第二种形式为{ {1}}分组值是一个字符串,并将具有相同<xsl:for-each-group select="*" group-adjacent="@class">
属性值的所有相邻元素分组。
所以这取决于你的需要,如果有的话。
class
您可以使用第二种方法对<items>
<item class="c1">...</item>
<item class="c1">...</item>
<item class="c2">...</item>
</items>
值进行分组。
另一方面,如果您要识别具有特定class
属性的相邻p
元素,例如在
class
然后第一种方法允许。
答案 1 :(得分:2)
根据使用的内容,我注意到current-grouping-key()返回一个 假的。
current-grouping-key()返回true或false,具体取决于当前组。在您的第一个示例中,current-grouping-key()对于类&#34;代码&#34;的任何相邻p
元素组都是true,对于其他组是false。
在group-adjancent中使用布尔函数的目的是什么?
如果没有这个,分组键将是评估表达式self::p[@class = 'code']
的结果,该表达式返回一个空序列,这反过来会导致错误。