Как сделать, чтобы group-by игнорировал пробелы в XSLT?
У меня есть 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 ответа
Решение
<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>