Вот общий раствор с использованием FXSL Functional programming library for XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext">
<xsl:import href="strSplit-to-Words.xsl"/>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*">
<xsl:call-template name="str-split-to-words">
<xsl:with-param name="pStr" select="."/>
<xsl:with-param name="pDelimiters" select="' ,:?./
'"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
Когда это преобразование применяется на следующий документ XML:
<t>
Hello, my dear friends: how are you doing?
Buy/Sell recommendations.
</t>
разыскиваемый, правильный результат получается:
<word>Hello</word>
<word>my</word>
<word>dear</word>
<word>friends</word>
<word>how</word>
<word>are</word>
<word>you</word>
<word>doing</word>
<word>Buy</word>
<word>Sell</word>
<word>recommendations</word>
<word/>
Объяснение:
Этот код вызывает шаблон FXSL str-split-to-words
. Можно указать параметр $pDelimiters
, чтобы содержать строку, любой символ которой является разделителем, который должен быть распознан в токенизации.
Обратите внимание: Предполагается, что модуль таблицы стилей сохраняется в виде файла в том же каталоге, где FXSL проживает - в противном случае <xsl:import>
директива должны быть изменены с точным FilePath в этот каталог.
В основе FXSL объясняется здесь: http://fxsl.sourceforge.net/
Это зависит от того, как вы определяете "слово". - P.S. Пожалуйста, просмотрите: [mcve] –