Definizione di predicati di selezione nel percorso (SQLXML 4.0)
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 <nipoti Order> 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 elementi figlio Customer> che hanno uno o più< figli ContactName>:<
child::Customer[child::ContactName]
In questo esempio si presuppone che <ContactName> sia un elemento figlio dell'elemento <Customer> 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 <Customer> 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 elementi figlio dell'elemento Customer> del nodo di contesto che non hanno< elementi Figlio ContactName>:<
child::Customer[not(child::ContactName)]
In questo esempio si presuppone che ContactName> sia un elemento figlio dell'elemento <Customer> 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 <elementi figlio Customer> 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 CustomerID
è un nodo attributo><).CustomerID
attribute
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)