Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Negli esempi seguenti viene illustrato come vengono specificati gli assi nelle query XPath.
Le query XPath in questi esempi vengono specificate sullo schema di mapping contenuto in SampleSchema1.xml. Per informazioni su questo schema di esempio, vedere Schema XSD con annotazioni di esempio per esempi XPath (SQLXML 4.0).
Esempi
Un. Recuperare gli elementi figlio del nodo di contesto
La query XPath seguente seleziona tutti gli <elementi figlio Contact> del nodo di contesto:
/child::Contact
Nella query è child l'asse e Contact è il test del nodo (TRUE se Contact è un <nodo elemento> , perché <l'elemento> è il tipo di nodo primario associato all'asse child ).
L'asse child è l'impostazione predefinita. Di conseguenza, la query può essere scritta come segue:
/Contact
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 come SampleSchema1.xml.
Creare il modello seguente (XPathAxesSampleA.xml) e salvarlo nella directory in cui è stato salvato SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact </sql:xpath-query> </ROOT>Il percorso della directory specificato per lo schema di mapping (SampleSchema1.xml) è relativo alla directory in cui viene 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 altre informazioni, vedere Uso di ADO per eseguire query SQLXML 4.0.
Di seguito è riportato il set di risultati parziale dell'esecuzione del modello:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1" LastName="Achong" FirstName="Gustavo" Title="Mr." />
<Contact ContactID="2" LastName="Abel" FirstName="Catherine" Title="Ms." />
<Contact ContactID="3" LastName="Abercrombie" FirstName="Kim" Title="Ms." />
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
...
</ROOT>
B. Recuperare i nipoti del nodo di contesto
La query XPath seguente seleziona tutti gli elementi figlio dell'elemento <Order> dell'elemento <Customer> figlio del nodo di contesto:
/child::Customer/child::Order
Nella query, child è l'asse e CustomerOrder sono i test dei nodi ( questi test di nodo sono TRUE se Customer e Order sono <nodi elemento> , perché il <nodo dell'elemento> è il nodo primario per l'asse child ). Per ogni nodo corrispondente <a Customer>, i nodi corrispondenti <agli ordini> vengono aggiunti al risultato. Nel set di risultati viene restituito solo <Order> .
L'asse child è l'impostazione predefinita. Di conseguenza, la query può essere specificata come:
/Customer/Order
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 come SampleSchema1.xml.
Creare il modello seguente (XPathAxesSampleB.xml) e salvarlo nella directory in cui:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order </sql:xpath-query> </ROOT>Il percorso della directory specificato per lo schema di mapping (SampleSchema1.xml) è relativo alla directory in cui viene 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 altre informazioni, vedere Uso di ADO per eseguire query SQLXML 4.0.
Di seguito è riportato il set di risultati parziale dell'esecuzione del modello:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-761" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-762" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-765" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-768" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-770" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</ROOT>
Se la query XPath viene specificata come Customer/Order/OrderDetail, da ogni nodo corrispondente a <Customer> la query passa ai relativi <elementi Order> . Per ogni nodo corrispondente <a Order>, la query aggiunge i nodi <OrderDetail> al risultato. Nel set di risultati viene restituito solo <OrderDetail> .
C. Usare.. per specificare l'asse padre
La query seguente recupera tutti gli <elementi Order> con un elemento Customer> padre< con un valore di attributo CustomerID pari a 1. La query usa l'asse child nel predicato per trovare l'elemento padre dell'elemento <Order> .
/child::Customer/child::Order[../@CustomerID="1"]
L'asse child è l'asse predefinito. Di conseguenza, la query può essere specificata come:
/Customer/Order[../@CustomerID="1"]
La query XPath equivale a:
/Customer[@CustomerID="1"]/Order.
Annotazioni
La query /Order[../@CustomerID="1"] XPath restituirà un errore perché non esiste alcun elemento padre di <Order>. Anche se nello schema di mapping possono essere presenti elementi che contengono <Order>, L'XPath non ha avuto inizio in nessuna di esse. Di conseguenza, <Order> viene considerato il tipo di elemento di primo livello nel documento.
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 come SampleSchema1.xml.
Creare il modello seguente (XPathAxesSampleC.xml) e salvarlo nella directory in cui:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[../@CustomerID="1"] </sql:xpath-query> </ROOT>Il percorso della directory specificato per lo schema di mapping (SampleSchema1.xml) è relativo alla directory in cui viene 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 altre informazioni, vedere Uso di ADO per eseguire query SQLXML 4.0.
Di seguito è riportato il set di risultati parziale dell'esecuzione del modello:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-761" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-762" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-765" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-768" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-770" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</Order>
</ROOT>
D. Specificare l'asse degli attributi
La query XPath seguente seleziona tutti gli <elementi figlio Customer> del nodo di contesto con un valore di attributo CustomerID pari a 1:
/child::Customer[attribute::CustomerID="1"]
Nel predicato è l'asse e CustomerID è il test del nodo (se CustomerID è un attributo il test del nodo è TRUE, perché il nodo dell'attributo<> è il nodo primario per l'asseattribute). attributeattribute::CustomerID
È possibile specificare un collegamento all'asse attribute (@) e, poiché child è l'asse predefinito, può essere omesso dalla query:
/Customer[@CustomerID="1"]
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 come SampleSchema1.xml.
Creare il modello seguente (XPathAxesSampleD.xml) e salvarlo nella directory in cui SampleSchema1.xml viene salvato.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> child::Customer[attribute::CustomerID="1"] </sql:xpath-query> </ROOT>Il percorso della directory specificato per lo schema di mapping (SampleSchema1.xml) è relativo alla directory in cui viene 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 altre informazioni, vedere Uso di ADO per eseguire query SQLXML 4.0.
Di seguito è riportato il set di risultati parziale dell'esecuzione del modello:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customer CustomerID="1" SalesPersonID="280"
TerritoryID="1" AccountNumber="1"
CustomerType="S" Orders="Ord-43860 Ord-44501 Ord-45283 Ord-46042">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
...
</Order>
...
</Customer>
</ROOT>