Specifica di operatori relazionali nelle query XPath (SQLXML 4.0)
Negli esempi seguenti viene illustrato come specificare gli operatori relazionali nelle query XPath. Vengono specificate query XPath sullo schema di mapping contenuto in SampleSchema1.xml. Per informazioni su questo schema di esempio, vedere Schema XSD con annotazioni di esempio per gli esempi XPath (SQLXML 4.0).
Esempi
A. Specificare un operatore relazionale
Questa query XPath restituisce gli elementi figlio dell'elemento <Customer> in cui il valore dell'attributo CustomerID è "1" e gli elementi figlio <Order> contengono un elemento figlio <OrderDetail> con l'attributo OrderQty impostato su un valore maggiore di 3:
/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Il predicato specificato tra parentesi quadre filtra gli elementi <Customer>. Vengono restituiti solo gli elementi <Customer> che includono almeno un nipote <OrderDetail> con un valore dell'attributo OrderQty maggiore di 3.
L'asse child è l'asse predefinito. È pertanto possibile specificare la query come:
/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Per testare la query Xpath sullo schema di mapping
Copiare il codice dello schema di esempio e incollarlo in un file di testo. Salvare il file con il nome SampleSchema1.xml.
Creare il modello SpecifyRelationalA.xml seguente e salvarlo nella directory in cui viene salvato il file SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3] </sql:xpath-query> </ROOT>
Il percorso di directory specificato per lo schema di mapping (SampleSchema1.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.
Per ulteriori informazioni, vedere Utilizzo di ADO per eseguire query SQLXML 4.0.
Di seguito è riportato il set di risultati relativo all'esecuzione del modello:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<OrderDetail ProductID="Prod-760" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-766" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-757" UnitPrice="1049.7528" OrderQty="4" UnitPriceDiscount="0" />
</ROOT>
B. Specificare un operatore relazionale nella query XPath e utilizzare una funzione booleana per confrontare il risultato
Questa query restituisce tutti gli elementi figlio <Order> del nodo di contesto con un valore dell'attributo SalesPersonID inferiore a 270:
/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]
È possibile specificare un collegamento all'asse attribute (@) e, poiché l'asse child è l'asse predefinito, può essere omesso dalla query:
/Customer/Order[(@SalesPersonID < 270)=true()]
Nota
Quando viene specificata questa query in un modello, il carattere < deve essere codificato come entità perché ha un significato speciale in un documento XML. In un modello utilizzare < per specificare il carattere <.
Per testare la query Xpath sullo schema di mapping
Copiare il codice dello schema di esempio e incollarlo in un file di testo. Salvare il file con il nome SampleSchema1.xml.
Creare il modello SpecifyRelationalB.xml seguente e salvarlo nella directory in cui viene salvato il file SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[(@SalesPersonID<270)=true()] </sql:xpath-query> </ROOT>
Il percorso di directory specificato per lo schema di mapping (SampleSchema1.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.
Per ulteriori informazioni, vedere Utilizzo di ADO per eseguire query SQLXML 4.0.
Di seguito viene indicato il set di risultati parziale dell'esecuzione del modello:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-46613" SalesPersonID="268"
OrderDate="2006-07-01T00:00:00"
DueDate="2006-07-13T00:00:00"
ShipDate="2006-07-08T00:00:00">
<OrderDetail ProductID="Prod-739" UnitPrice="917.9363"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-779" UnitPrice="1491.4221"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-825" UnitPrice="242.1391"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
<Order SalesOrderID="Ord-71919" SalesPersonID="268"
OrderDate="2008-06-01T00:00:00"
DueDate="2008-06-13T00:00:00"
ShipDate="2008-06-08T00:00:00">
<OrderDetail ProductID="Prod-961" UnitPrice="534.492"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-965" UnitPrice="534.492"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-966" UnitPrice="1716.5304"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</ROOT>