如何通过忽略XSLT中的空白来进行分组?
我有一个xml文件,我需要为每个组使用xsl:对其进行分组。一切正常,但问题来自于元素末尾有空格(例如,如何通过忽略XSLT中的空白来进行分组?,xslt,xslt-2.0,xslt-grouping,Xslt,Xslt 2.0,Xslt Grouping,我有一个xml文件,我需要为每个组使用xsl:对其进行分组。一切正常,但问题来自于元素末尾有空格(例如,测试和test),但我需要将这些元素视为一个组 以下是示例xml文件: <u> <s> <w>this </w> <w>is </w> <w>a </w> <w>test </w> </s> <s>
测试和test
),但我需要将这些元素视为一个组
以下是示例xml文件:
<u>
<s>
<w>this </w>
<w>is </w>
<w>a </w>
<w>test </w>
</s>
<s>
<w>this</w>
<w>is</w>
<w>a</w>
<w>test</w>
</s>
<u>
这
是
A.
试验
这
是
A.
测试
下面是xslt代码
<xsl:for-each-group select="bncDoc/stext/div/u/s" group-by="w" >
<tr>
<td style="text-align: center;">
<xsl:value-of select="current-grouping-key()"/>
</td>
<td>
<xsl:value-of select="count(current-group())"/>
</td>
</tr>
</xsl:for-each-group>
有什么解决办法吗?
<xsl:for-each-group select="bncDoc/stext/div/u/s/w" group-by="normalize-space()">
<!-- ... -->
</xsl:for-each-group>
好的,找到了答案:
您只需按以下方式使用normailize-space():
<xsl:for-each-group select="bncDoc/stext/div/u/s/w" group-by="normalize-space((text())">
.
.
.
</xsl:for-each-group>
.
.
.
好的,找到了答案:
您只需按以下方式使用normailize-space():
<xsl:for-each-group select="bncDoc/stext/div/u/s/w" group-by="normalize-space((text())">
.
.
.
</xsl:for-each-group>
.
.
.
我使用normalize-space完成了这项工作,但我得到了一个错误:normalize-space()的第一个参数不允许包含多个项的序列@peymank:如果有多个子项,您希望对哪个子项进行分组?我想根据@peymank:是的,但显然每个子项都有一个以上的单词,“不是吗?”佩曼:请看修改后的答案。未来提示:请始终在问题中包含相关的XML。我使用normalize space进行了此操作,但我得到了以下错误:normalize-space()的第一个参数不允许包含多个项的序列@Peymankh:如果有多个子项,您希望对哪个子项进行分组?我希望根据@Peymankh:是,但很明显,每组有不止一个单词,不是吗?@peymank:参见修改后的答案。未来提示:在问题中始终包含相关的XML。如果您发布了一个您试图生成的输出示例,这将非常有用。不清楚您是否需要调整select语句或group by(或两者兼有)。我只需要调整group by语句。如果您发布了一个您试图生成的输出示例,这将非常有用。不清楚您是否需要调整select语句或group by(或两者兼有)。我只需要调整group by语句。使用该@select
,您也可以只使用group by=“normalize-space()”
。您想要的是每一个唯一的
。在问题中提到这一点会很有帮助,托马拉克本可以给你一个准确的答案。顺便说一下,回答你自己的问题+1。@Mads:这正是我几个小时前给出的答案…@Tomalak-的确如此。我看到了第一个版本,没有注意到编辑。我将把我的答案留在这里,但会将@Tomalak的答案设置为正确答案,因为他提出了它。有了这个@select
,你也可以使用group by=“normalize-space()”
。您想要的是每一个唯一的
。在问题中提到这一点会很有帮助,托马拉克本可以给你一个准确的答案。顺便说一下,回答你自己的问题+1。@Mads:这正是我几个小时前给出的答案…@Tomalak-的确如此。我看到了第一个版本,没有注意到编辑。我将把我的答案留在这里,但会将@Tomalak的答案设置为正确答案,因为他提出了它。