Sti*_*ing 4 xslt xslt-2.0 xslt-grouping
我有一个关于使用的问题group-adjacent。
我看到使用了两种模式:
模式一:
<xsl:for-each-group select="*" group-adjacent="boolean(self::p[@class = 'code'])">
Run Code Online (Sandbox Code Playgroud)
模式2:
<xsl:for-each-group select="*" group-adjacent="@class">
Run Code Online (Sandbox Code Playgroud)
根据所使用的内容,我注意到current-grouping-key()返回一个 false。
在 group-adjancent 中使用布尔函数的目的是什么?
对于该形式,分组键是一个布尔值,对于具有value 属性的相邻元素<xsl:for-each-group select="*" group-adjacent="boolean(self::p[@class = 'code'])">为 true ,而对于第二种形式,分组值是一个字符串,并对具有相同属性值的所有相邻元素进行分组。pclasscode<xsl:for-each-group select="*" group-adjacent="@class">class
所以这取决于您的需求,如果您有例如
<items>
<item class="c1">...</item>
<item class="c1">...</item>
<item class="c2">...</item>
</items>
Run Code Online (Sandbox Code Playgroud)
您可以使用第二种方法对class值进行分组。
另一方面,如果您想识别p具有特定class属性的相邻元素,例如
<body>
<h1>...</h1>
<p class="code">...</p>
<p class="code">...</p>
<h2>...</h2>
<p class="code">...</p>
</body>
Run Code Online (Sandbox Code Playgroud)
那么第一种方法允许这样做。