Как сделать так, чтобы group-by игнорировал пробелы в XSLT? - PullRequest
1 голос
/ 08 декабря 2011

У меня есть XML-файл, который мне нужно сгруппировать, используя xsl: for-each-group. Все работает нормально, но проблема возникает, когда есть элементы, у которых есть пробелы в конце (например, <word>test </word> and <word>test</word>), но мне нужно, чтобы они рассматривались как одна группа.

Вот пример 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>

Вот код 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>

Есть ли обходной путь для этого?

Ответы [ 2 ]

3 голосов
/ 08 декабря 2011
<xsl:for-each-group select="bncDoc/stext/div/u/s/w" group-by="normalize-space()">
   <!-- ... -->
</xsl:for-each-group>
1 голос
/ 09 декабря 2011

ОК, нашел ответ:

Вам просто нужно использовать normailize-space () следующим образом:

    <xsl:for-each-group select="bncDoc/stext/div/u/s/w" group-by="normalize-space((text())">
        .
        .
        .
    </xsl:for-each-group>
...