Как проверить повторяющиеся элементы в виде последовательности строк / массив? - PullRequest
0 голосов
/ 19 мая 2011

Я использую таблицу стилей xslt 1.0 для работы с данными XML-файла.

У меня есть переменная в xslt, которая содержит много строк, разделенных пробелом или символом новой строки.

т.е. переменная "ServiceList", когда я печатаю ее, используя follwong,

<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 Ответ

1 голос
/ 19 мая 2011

Это было бы намного проще в XSLT 2.0

<xsl:variable name="tokenizedSample" select="tokenize($ServiceList, '&#xa;')"/>
<xsl:if test="count($tokenizedSample) != count(distinct-values($tokenizedSample))">...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...