Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:SQL Server
Database SQL di Azure
Un predicato filtra un set di nodi rispetto a un asse (simile a una clausola WHERE in un'istruzione SELECT). Il predicato viene specificato tra parentesi. Per filtrare ogni nodo nel set di nodi, l'espressione del predicato viene valutata con il nodo come nodo di contesto e con il numero di nodi nel set di nodi come dimensioni del contesto. Se l'espressione del predicato restituisce TRUE per il nodo, il nodo viene incluso nel set di nodi risultante.
XPath consente inoltre l'applicazione di filtri basata sulla posizione. Un'espressione del predicato valutata in numero seleziona il nodo dell'ordinale. Il percorso Customer[3], ad esempio, restituisce il terzo cliente. Predicati numerici di questo tipo non sono supportati. Sono supportate solo le espressioni del predicato che restituiscono un risultato booleano.
Nota
Per informazioni sulle limitazioni di questa implementazione XPath di XPath e sulle differenze tra di essa e la specifica W3C, vedere Introduzione all'uso di query XPath (SQLXML 4.0).
Predicato di selezione: esempio 1
L'espressione XPath seguente (percorso percorso) seleziona dal nodo di contesto corrente tutti gli elementi figlio dell'elemento <Customer> che hanno l'attributo CustomerID con valore ALFKI:
/child::Customer[attribute::CustomerID="ALFKI"]
In questa query XPath child e attribute sono nomi di asse.
Customerè il test del nodo (TRUE se Customer è un< nodo elemento, perché> l'elemento< è il tipo di nodo> principale per l'asse).child
attribute::CustomerID="ALFKI" è il predicato. Nel predicato, attribute è l'asse e CustomerID è il test del nodo (TRUE se CustomerID è un attributo del nodo di contesto, perché <attributo> è il tipo di nodo principale dell'asse degli attributi ).
Utilizzando la sintassi abbreviata, la query XPath può essere specificata anche nel modo seguente:
/Customer[@CustomerID="ALFKI"]
Predicato di selezione: esempio 2
L'espressione XPath seguente (percorso percorso) seleziona dal nodo di contesto corrente tutti i > con l'attributo SalesOrderID con il valore 1:
/child::Customer/child::Order[attribute::SalesOrderID="1"]
In questa espressione XPath child e attribute sono nomi di asse.
Customer, Order e SalesOrderID sono i test di nodo.
attribute::OrderID="1" è il predicato.
Utilizzando la sintassi abbreviata, la query XPath può essere specificata anche nel modo seguente:
/Customer/Order[@SalesOrderID="1"]
Predicato di selezione: esempio 3
L'espressione XPath seguente (percorso percorso) seleziona dal nodo di contesto corrente tutti gli <> che hanno uno o più<>:
child::Customer[child::ContactName]
In questo esempio si presuppone che <ContactName> sia un elemento figlio dell'elemento > nel documento XML, definito mapping incentrato sugli elementi in uno schema XSD con annotazioni.
In questa espressione XPath child è il nome dell'asse.
Customer è il test del nodo (TRUE se Customer è un <nodo elemento> , perché <l'elemento> è il tipo di nodo principale per child l'asse).
child::ContactName è il predicato. Nel predicato, child è l'asse e ContactName è il test del nodo (TRUE se ContactName è un <nodo elemento> ).
Questa espressione restituisce solo gli elementi figlio dell'elemento > del nodo di contesto con <elementi figlio ContactName.>
Utilizzando la sintassi abbreviata, la query XPath può essere specificata anche nel modo seguente:
Customer[ContactName]
Predicato di selezione: esempio 4
L'espressione XPath seguente seleziona gli > del nodo di contesto che non hanno<>:
child::Customer[not(child::ContactName)]
In questo esempio si presuppone che <> sia un elemento figlio dell'elemento > nel documento XML e che il campo ContactName non sia obbligatorio nel database.
In questo esempio, child è l'asse.
Customer è il test del nodo (TRUE se Customer è un <nodo elemento> ).
not(child::ContactName) è il predicato. Nel predicato, child è l'asse e ContactName è il test del nodo (TRUE se ContactName è un <nodo elemento> ).
Utilizzando la sintassi abbreviata, la query XPath può essere specificata anche nel modo seguente:
Customer[not(ContactName)]
Predicato di selezione: esempio 5
L'espressione XPath seguente seleziona dal nodo di contesto corrente tutti gli > con l'attributo CustomerID:
child::Customer[attribute::CustomerID]
In questo esempio, child è l'asse e Customer è il test del nodo (TRUE se Customer è un <nodo elemento> ).
attribute::CustomerID è il predicato. Nel predicato è l'asse e è il predicato (TRUE se attribute è un nodo attributoCustomerIDCustomerID<).>
Utilizzando la sintassi abbreviata, la query XPath può essere specificata anche nel modo seguente:
Customer[@CustomerID]
Predicato di selezione: esempio 6
Microsoft SQLXML 4.0 include il supporto per le query XPath che contengono un prodotto incrociato nel predicato, come illustrato nell'esempio seguente:
Customer[Order/@OrderDate=Order/@ShipDate]
La query seleziona tutti i clienti con un elemento Order per cui OrderDate è uguale a ShipDate di qualsiasi Order.
Vedi anche
Introduzione agli schemi XSD con annotazioni (SQLXML 4.0)
Formattazione XML sul lato client (SQLXML 4.0)