XSLT 中的组相邻功能
Group Adjacent Functionality in XSLT
我对 group-adjacent
的使用有疑问。
我看到有两种模式被使用:
模式一:
<xsl:for-each-group select="*" group-adjacent="boolean(self::p[@class = 'code'])">
模式二:
<xsl:for-each-group select="*" group-adjacent="@class">
根据使用情况,我注意到 current-grouping-key()
returns 是错误的。
在 group-adjancent 中使用布尔函数的目的是什么?
对于 <xsl:for-each-group select="*" group-adjacent="boolean(self::p[@class = 'code'])">
形式,分组键是一个布尔值,对于具有 class
属性且值为 code
的相邻 p
元素为真,而对于第二个形成 <xsl:for-each-group select="*" group-adjacent="@class">
分组值是一个字符串,并将具有相同 class
属性值的所有相邻元素分组。
所以这取决于你的需求,如果你有,例如
<items>
<item class="c1">...</item>
<item class="c1">...</item>
<item class="c2">...</item>
</items>
您可以使用第二种方法对 class
值进行分组。
另一方面,如果您想识别具有特定 class
属性的相邻 p
元素,例如在
<body>
<h1>...</h1>
<p class="code">...</p>
<p class="code">...</p>
<h2>...</h2>
<p class="code">...</p>
</body>
那么第一种方法允许这样做。
Based on what is used, I noticed that current-grouping-key() returns a
false.
current-grouping-key() returns true 或 false,取决于当前组。在您的第一个示例中,current-grouping-key() 对于 class "code" 的任何相邻 p
元素组为真,对于其他组为假。
What is the purpose of using a boolean function in group-adjancent ?
否则,分组键将是表达式 self::p[@class = 'code']
的计算结果,其中 returns 是一个空序列,这反过来会导致错误。
我对 group-adjacent
的使用有疑问。
我看到有两种模式被使用:
模式一:
<xsl:for-each-group select="*" group-adjacent="boolean(self::p[@class = 'code'])">
模式二:
<xsl:for-each-group select="*" group-adjacent="@class">
根据使用情况,我注意到 current-grouping-key()
returns 是错误的。
在 group-adjancent 中使用布尔函数的目的是什么?
对于 <xsl:for-each-group select="*" group-adjacent="boolean(self::p[@class = 'code'])">
形式,分组键是一个布尔值,对于具有 class
属性且值为 code
的相邻 p
元素为真,而对于第二个形成 <xsl:for-each-group select="*" group-adjacent="@class">
分组值是一个字符串,并将具有相同 class
属性值的所有相邻元素分组。
所以这取决于你的需求,如果你有,例如
<items>
<item class="c1">...</item>
<item class="c1">...</item>
<item class="c2">...</item>
</items>
您可以使用第二种方法对 class
值进行分组。
另一方面,如果您想识别具有特定 class
属性的相邻 p
元素,例如在
<body>
<h1>...</h1>
<p class="code">...</p>
<p class="code">...</p>
<h2>...</h2>
<p class="code">...</p>
</body>
那么第一种方法允许这样做。
Based on what is used, I noticed that current-grouping-key() returns a false.
current-grouping-key() returns true 或 false,取决于当前组。在您的第一个示例中,current-grouping-key() 对于 class "code" 的任何相邻 p
元素组为真,对于其他组为假。
What is the purpose of using a boolean function in group-adjancent ?
否则,分组键将是表达式 self::p[@class = 'code']
的计算结果,其中 returns 是一个空序列,这反过来会导致错误。