有没有人知道一个适用于XSLT 1.0的好模板?
示例:
string ="亲爱的朋友们,你好,你好吗"
我想要"你好"没有别的。
答案 0 :(得分:1)
正如我在评论中所说,这取决于你如何定义" word" - 或者更确切地说,单词分隔符。在您的示例中,使用:
提取"Hello"
是微不足道的
substring-before($string, ' ')
但是,它不能用,比如说:
"Hello, my dear friends: how are you doing?"
或:
"Hello/Bye alternatives."
答案 1 :(得分:0)
以下是使用 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>
指令确切的文件路径到这个目录。
此处解释了 FXSL 的基本原则: http://fxsl.sourceforge.net/