Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过忽略XSLT中的空白来进行分组?_Xslt_Xslt 2.0_Xslt Grouping - Fatal编程技术网

如何通过忽略XSLT中的空白来进行分组?

如何通过忽略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>

我有一个xml文件,我需要为每个组使用xsl:对其进行分组。一切正常,但问题来自于元素末尾有空格(例如,
测试和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的答案设置为正确答案,因为他提出了它。