编辑问题,添加了更多信息
VIV:记号化= STR:标记化
VIV:value-of的STR =:value-of的
第1部分 - 声明和分配值
<declare name="searchhistories" />
<set-var name="searchhistories">
<value-of select="concat(viv:value-of('searchquery','var'),'|',viv:replace(viv:value-of('searchhistory', 'var'),concat(viv:value-of('searchquery','var'),'\|'),'','g'))" />
</set-var>
第2部分:标记化和重复数据删除
<xsl:for-each select="viv:tokenize($searchhistories,'|',false, false)">
<xsl:variable name="i" select="position()"/>
<xsl:if test="$i < 11">
<xsl:value-of select="." /> |
</xsl:if>
</xsl:for-each>
能够令牌化,但重复数据删除无法正常工作
重复数据删除的代码应该是什么
<xsl:for-each select=***distinct-values***("viv:tokenize($searchhistories,'|',false, false)")>
这样的东西?
答案 0 :(得分:0)
尝试
<xsl:for-each select="set:distinct(viv:tokenize($searchhistories,'|',false, false))">
使用样式表声明xmlns:set="http://exslt.org/sets"
例如
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:set="http://exslt.org/sets" exclude-result-prefixes="set">
答案是基于您在评论中链接到的文档,我无法测试。
但是http://xsltransform.net/ej9EGcy使用了令牌化的EXSLT版本并且工作正常:
<xsl:template match="item">
<xsl:copy>
<xsl:for-each select="set:distinct(str:tokenize(., '|'))">
<xsl:if test="position() > 1">|</xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>