<xsl:variable name="a">20</xsl:variable>
<xsl:variable name="b">10</xsl:variable>
<xsl:if test="($a) > ($b)">
------
</xsl:if>
ho errore ottenendo nel caso condion ..Come verificare quale variabile è maggiore in xsl?
<xsl:variable name="a">20</xsl:variable>
<xsl:variable name="b">10</xsl:variable>
<xsl:if test="($a) > ($b)">
------
</xsl:if>
ho errore ottenendo nel caso condion ..Come verificare quale variabile è maggiore in xsl?
provare le seguenti:
<xsl:if test="$a > $b">
provare a utilizzare l'entità carattere per > (& gt;) e < (& lt;) operatori espressioni, altrimenti alcuni parser pensano che stai chiudendo il tag in anticipo o aprendo un altro.
Non è necessario eseguire l'escape '>'. È assolutamente possibile usare '$ a> $ b'. – Saxoier
Hai ragione, il parser XSLT che ho usato molte lune fa mi ha fatto fare pratica di evitarli per evitare errori di parser. Appena controllato ora e il tuo codice funziona bene. Imparo qualcosa di nuovo ogni giorno, grazie! –
L'esempio pubblicato dovrebbe funzionare. Tuttavia, non si dovrebbe che nel tuo caso entrambe le variabili sono di tipo stringa che potrebbe dare risultati sorprendenti dove la loro lunghezza è diversa. Il comportamento dell'operatore di confronto su diversi tipi di dati è specificato nello xpath spec on booleans.
per evitare questo si poteva dichiarare le variabili utilizzando l'attributo select
o manualmente convertirli in number per il confronto:
<xsl:variable name="a" select="20"/>
<xsl:variable name="b" select="10"/>
...
<xsl:if test="number($a) > number($b)">
</xsl:if>
"Quando nessuno dei due oggetti da confrontare è un set di nodi e l'operatore è <=, <, > = o>, gli oggetti vengono confrontati convertendo entrambi gli oggetti in numeri e confrontando i numeri secondo IEEE 754." - Nessun comportamento indefinito. – Saxoier
@Saxoier: hai ragione, il paragrafo che precede la tua citazione si applica solo agli operatori '=' e '! ='. –
guarda bene a me. Né libxslt né Transformiix visualizzano un errore. – Saxoier
utile @user_nums –