Confronti

Per confrontare due oggetti in XPath, utilizzare il segno di uguale = per verificare l'uguaglianza oppure utilizzare != per verificare la disuguaglianza.

Per eseguire un'operazione di confronto, è necessario fornire esattamente due operandi. I confronti vengono eseguiti valutando gli operandi e, se necessario, convertendoli in modo che siano dello stesso tipo. Questa operazione viene eseguita in base al processo descritto di seguito in "Ordine di precedenza per i confronti".

Tutti gli elementi e gli attributi sono stringhe, ma ne viene automaticamente eseguito il cast in valori integer per consentire un confronto numerico. Durante le operazioni di confronto, viene eseguito il cast dei valori letterali numerici in valori di tipo Long o Double, come indicato nella seguente tabella.

Per informazioni su < e su altri operatori di confronto binario, vedere "Operatori di confronto binario" più avanti.

Tipo letterale Confronto Esempio

String

text(lvalue) op text(rvalue)

a < GGG

Integer

(long) lvalue op (long) rvalue

a < 3

Real

(double) lvalue op (double) rvalue

a < 3.1

È possibile utilizzare virgolette singole o doppie per i delimitatori di stringa nelle espressioni. Ciò semplifica la creazione e il passaggio dei pattern all'interno dei linguaggi di scripting.

Per ulteriori informazioni sui confronti eseguiti utilizzando XPath, vedere la sezione 3.4 ("Booleans") della raccomandazione W3C "XML Path Language (XPath) Version 1.0" del 16 novembre 1999 all'indirizzo www.w3.org/TR/xpath (informazioni in lingua inglese).

Esempi

Espressione Si riferisce a

author[last-name = "Bob"]

Tutti gli elementi <author> che contengono almeno un elemento <last-name> con il valore Bob.

author[last-name[1] = "Bob"]

Tutti gli elementi <author> in cui il primo elemento figlio <last-name> ha il valore Bob.

author/degree[@from != "Harvard"]

Tutti gli elementi <author> in cui sono contenuti elementi <degree> con un attributo from diverso da "Harvard".

author[last-name = /editor/last-name]

Tutti gli elementi <author> in cui è contenuto un elemento <last-name> che corrisponde all'elemento <last-name> all'interno dell'elemento <editor> nell'elemento radice.

author[. = "Matthew Bob"]

Tutti gli elementi <author> con un valore di stringa uguale a Matthew Bob.

Ordine di precedenza per i confronti

Ai confronti relativi ai tipi di dati sono conformi all'ordine di precedenza.

  • Se almeno un operando è un valore booleano, ogni operando verrà prima convertito in un valore booleano.

  • Se almeno un operando è un numero, ogni operando verrà prima convertito in un numero.

  • In caso contrario, se almeno un operando è una data, ogni operando verrà prima convertito in una data.

  • In caso contrario, entrambi gli operandi verranno prima convertiti in stringhe.

Operatori di confronto binario

Un insieme di operatori di confronto binario consente di eseguire il confronto di numeri e di restituire risultati booleani. Gli operatori &lt;, &lt;=, &gt; e &gt;= sono utilizzati per indicare, rispettivamente, un valore minore, minore o uguale, maggiore e maggiore o uguale. È possibile utilizzare virgolette singole o doppie per i delimitatori di stringa nelle espressioni. Ciò semplifica la creazione e il passaggio dei pattern all'interno dei linguaggi di scripting.

Gli operatori di confronto funzionano solo con i numeri. È possibile confrontare le stringhe per verificarne l'uguaglianza, ma se si desidera confrontare le stringhe per determinare l'ordinamento delle stesse, è necessario utilizzare Funzioni di estensione di Microsoft XPath.

Esempi

Espressione Si riferisce a

author[last-name = "Bob" and price &gt; 50]

Tutti gli elementi <author> contenenti un elemento <last-name> con il valore Bob e un elemento <price> con un valore maggiore di 50.

degree[@from != "Harvard"]

Tutti gli elementi <degree> con un attributo from diverso da "Harvard".

book[position() &lt;= 3]

I primi tre elementi <book> (1, 2 e 3) nel file XML.

Esempio

File XML (test.xml)

File XSLT (test.xsl)

Il seguente foglio di stile XSLT consente di selezionare tutti gli elementi <x> che sono i primi di pari livello nell'ordine del documento.

Output formattato

La trasformazione applicata al file XML precedente contiene il seguente risultato:

<x a="1">
  <x a="2" b="B">
     <x>
        <y>y31</y>
        <y>y32</y>
     </x>
   </x>
</x>
<x a="2" b="B">
   <x>
      <y>y31</y>
      <y>y32</y>
   </x>
</x>
<x>
   <y>y31</y>
   <y>y32</y>
</x>

Vedere anche

Riferimento

Esempi XPath

Concetti

File XML di esempio per la sintassi di XPath (inventory.xml)