#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)">