2012-05-10 15 views
47

Attualmente ho un xsl con il seguente codice dove sto cercando di stampare "contare" solo se non è uguale a N/A. ma sembra che "!=" non funzioni.Come specificare "non uguale a" quando si confrontano le stringhe in un XSLT <xsl:if>?

<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> 

Tuttavia, funziona se provo a confrontarlo con il valore numerico.

Esempio:

<xsl:if test = "Occurrances != 0"> 

qualcuno può dirmi: se mi piacerebbe confrontare le stringhe cosa posso usare?

risposta

60

come dice Filburt; ma anche di notare che di solito è meglio scrivere

test="not(Count = 'N/A')" 

Se c'è esattamente un elemento Conte significano la stessa cosa, ma se non c'è il conte, o se ci sono diversi, quindi i significati sono diversi.

6 ANNI DOPO

Da questa risposta sembra essere diventato popolare, ma può essere un po 'criptico ad alcuni lettori, mi permetta di espanderlo.

L'operatore "=" e "! =" In XPath può confrontare due serie di valori. In generale, se A e B sono insiemi di valori, allora "=" restituisce true se c'è una coppia di valori da A e B che sono uguali, mentre "! =" Restituisce true se c'è una coppia che non è uguale.

Nel caso comune in cui A seleziona nodi zero o uno e B è una costante (ad esempio "NA"), ciò significa che not(A = "NA") restituisce true se A è assente o ha un valore diverso da " N/A". Al contrario, A != "NA" restituisce true se A è presente e non è uguale a "NA". Di solito si desidera che il caso "assente" sia trattato come "non uguale", il che significa che not(A = "NA") è la formulazione appropriata.

28

Se si desidera confrontare a una stringa letterale è necessario mettere in (singola) cita:

<xsl:if test="Count != 'N/A'"> 
+0

hey grazie per il vostro aiuto. lavori singoli citazioni. :) – Maxyie

+3

Forse vale la pena aggiungere che le virgolette sono necessarie perché il test ha perfettamente senso senza di esse: in tal caso, tuttavia, chiede se il valore di un elemento figlio 'Count' non è uguale al valore di alcuni' A 'elemento figlio di un elemento figlio' N'. –

Problemi correlati