XSL, ЕСЛИ две переменные никогда не отображаются для сравнения

#xslt

#xslt

Вопрос:

При печати двух переменных $ cID и $ uID я распечатываю две и вижу содержащиеся в них данные.

При попытке сравнить два результата результат никогда не отображается true, хотя при печати должны быть некоторые случаи.

 <xsl:for-each select="document('C:/Users/Scott/Desktop/Uni/dbe/ass1/DBE-work1/DBE-work1/DBE-A1/tweets.xml')">
 <xsl:for-each select='tweets/tweet'>
  <tweet>
   <xsl:variable name="cID" select="user_id"/>
    <xsl:value-of select='$uID'/>
    <xsl:value-of select='$cID'/>
    <xsl:if test="$cID=$uID">
     <xsl:value-of select='$uID'/>
     <xsl:value-of select='$cID'/>
    </xsl:if>
  </tweet>
 </xsl:for-each>
</xsl:for-each>
 

Текущий вывод

  <tweets>
      <tweet>90484508
    15985455
        </tweet>
      <tweet>90484508
    90484508
        </tweet>
      <tweet>90484508
    21157904
        </tweet>
      <tweet>90484508
    90484508
        </tweet>
      <tweet>90484508
    90484508
        </tweet>
    </tweets>
 

Однако, когда есть два совпадающих идентификатора, в этом примере последние два. Это должно приводить к дублирующимся результатам.

Комментарии:

1. Какова (соответствующая часть) вашего входного XML? И где uID определена переменная?

2. Можете ли вы также показать, как вы определяете переменную uID ? Учитывая, что ваш XML показывает выходные данные переменных в разных строках, одна из возможностей заключается в том, что значения переменных имеют разрывы строк в конце (и / или пробелы), что может повлиять на сравнение. Вы могли бы попытаться <xsl:if test="normalize-space($cID) = normalize-space($uID)"> проверить, так ли это. Спасибо.

3. @TimC вы правы, спасибо

Ответ №1:

У Tim C был правильный результат.

Был определен uID:

  <xsl:variable name="uID" select="id"/>
 

и имел пробел, который был решен с помощью <xsl:if test="normalize-space($cID) = normalize-space($uID)">