我在XSLT中有一个名为“Tags”的变量,它是逗号分隔值。 例如 测试中,2013,2013,买家,借此清理,, 2013,时尚,,,食品,测试,孩子,娱乐,媒体,音乐,单位,人物,音乐,重用,, 2013,微博食品
清理此变量的最佳方法是什么,因此没有重复项,并按字母顺序排序。
我可以将它与分割功能结合起来,如果这有帮助的话,这是工作的下一部分。
提前致谢
LMT
答案 0 :(得分:1)
使用XSLT 2.0,这非常方便:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0" xmlns:myfn="MY:FN" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="text"/>
<xsl:function name="myfn:sortCSV" as="xs:string*">
<xsl:param name="csvString" as="xs:string"/>
<!-- Split up string and remove duplicates -->
<xsl:variable name="values" select="distinct-values(tokenize($csvString, '\s*,\s*'))" as="xs:string*"/>
<!-- Return all elements, sorted -->
<xsl:for-each select="$values">
<xsl:sort/>
<!-- We don't return empty strings -->
<xsl:sequence select=".[.!='']"/>
</xsl:for-each>
</xsl:function>
<xsl:template match="/">
<!-- Let's test our function -->
<xsl:value-of select="myfn:sortCSV('x,b , c,, d,c ,a,d')" separator=","/>
</xsl:template>
</xsl:stylesheet>
使用XSLT 1.0,你几乎没有运气。这种任务会复杂得多。