Jak określić "not equals to" podczas porównywania łańcuchów w XSLT?
Obecnie mam xsl z następującym kodem, gdzie próbuję wydrukować "count" tylko wtedy, gdy nie jest równy N/A
. ale wygląda na to, że "!="
nie działa.
<xsl:for-each select="Directory/Match">
<xsl:if test = "Count != N/A">
<tr>
<td><xsl:value-of select="@bookName" /></td>
<td><xsl:value-of select="@AuthorName" /></td>
<td><xsl:value-of select="Count" /></td>
</tr>
</xsl:if>
</xsl:for-each>
Jednak działa, jeśli spróbuję porównać go z wartością liczbową.
Przykład:
<xsl:if test = "Occurrances != 0">
Czy ktoś może mi powiedzieć: jeśli chciałbym porównać stringi, czego mogę użyć?
2 answers
Jak mówi Filburt; ale zauważ również, że zwykle lepiej jest napisać
test="not(Count = 'N/A')"
Jeśli jest dokładnie jeden element Count oznaczają to samo, ale jeśli nie ma Count, lub jeśli jest kilka, to znaczenia są różne.
6 LATA PÓŹNIEJ
Ponieważ ta odpowiedź wydaje się być popularna, ale może być trochę tajemnicza dla niektórych czytelników, pozwól mi ją rozszerzyć.
" = "i"!= "operator w XPath może porównywać dwa zestawy wartości. Ogólnie, jeśli A i B są zbiór wartości, wtedy " = " zwraca true, jeśli istnieje jakakolwiek para wartości z A i B, które są równe, natomiast "!= "zwraca true, jeśli istnieje jakaś para, która jest nierówna.
W powszechnym przypadku, gdy A wybiera węzły zero-lub-jeden, A B jest stałą (powiedzmy "NA"), oznacza to, że not(A = "NA")
zwraca true, jeśli A jest nieobecny lub ma wartość nie równą "NA". Natomiast A != "NA"
zwraca true, jeśli A jest obecne i nie jest równe "NA". Zazwyczaj chcesz, aby przypadek" nieobecny "był traktowany jako "nie równy", co oznacza to not(A = "NA")
jest odpowiednim sformułowaniem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 09:24:41
Jeśli chcesz porównać z ciągiem literalnym, musisz umieścić go w cudzysłowach (pojedynczych):
<xsl:if test="Count != 'N/A'">
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-10 13:35:01