如何检查字符串序列/数组中的重复元素?

时间:2011-05-19 06:31:12

标签: xslt

我正在使用xslt 1.0样式表来解析xml文件数据。

我在xslt中有一个变量,它包含许多由空格或新行字符分隔的字符串。

即。当我使用follwong打印它时,变量是“ServiceList”,

<xsl:value-of select="$ServiceList"/>

打印出来后

hgd.sdf.gsdf sdf.sdh.duyg dsf.sdf.suos
jhs.sdu.sdfi
hdf.sdi.seij dsf.dsf.diuh
edr.sdi.sdhg dfh.dfg.dfg.fdg.idjf kjs.dfh.dfgj djg.dfs.dgji  

我使用了以下代码来分别获取每个字符串。

<xsl:variable name="tokenizedSample" select="str:tokenize($ServiceList,'&#xa;')"/>
  <xsl:for-each select="$tokenizedSample">
      <xsl:variable name="serviceProvide" select="."/>
         <xsl:variable name="tokenized1" select="str:tokenize($serviceProvide,' ')"/>
         <xsl:for-each select="$tokenized1">
            <xsl:variable name="serviceP" select="."/>
                  <xsl:value-of select="$serviceP"/>
  </xsl:for-each>
 </xsl:for-each>

上面的代码将每个字符串作为单独的字符串。

我必须要知道上面的序列/数组中是否有重复的字符串。如果它重复它应该告诉我字符串是重复。

1 个答案:

答案 0 :(得分:1)

这在XSLT 2.0中会更容易

<xsl:variable name="tokenizedSample" select="tokenize($ServiceList, '&#xa;')"/>
<xsl:if test="count($tokenizedSample) != count(distinct-values($tokenizedSample))">...