Specifica di funzioni di conversione esplicita in query XPath (SQLXML 4.0)
Negli esempi seguenti viene illustrato come specificare le funzioni di conversione esplicita 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.Utilizzo della funzione di conversione esplicita number ()
La funzione number() converte un argomento in un numero.
Partendo dal presupposto che il valore di ContactID è non numerico, la query seguente converte ContactID in un numero e lo confronta con il valore 4. La query restituisce quindi tutti gli elementi <Employee> figli del nodo di contesto con l'attributo ContactID con valore numerico 4:
/child::Contact[number(attribute::ContactID)= 4]
È possibile specificare un collegamento all'asse attribute (@) e, poiché l'asse child è l'asse predefinito, può essere omesso dalla query:
/Contact[number(@ContactID) = 4]
In termini relazionali, la query restituisce un dipendente con un valore di attributo ContactID pari a 4.
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 seguente (ExplicitConversionA.xml) e salvarlo nella directory in cui è stato salvato il file SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact[number(@ContactID)=4] </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 di questo modello:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
</ROOT>
B.Utilizzo della funzione di conversione esplicita string ()
La funzione string() converte un argomento in una stringa.
La query seguente converte ContactID in una stringa e la confronta con il valore di stringa "4". La query restituisce tutti gli elementi <Employee> figli del nodo di contesto con un valore stringa dell'attributo ContactID corrispondente a "4":
/child::Contact[string(attribute::ContactID)="4"]
È possibile specificare un collegamento all'asse attribute (@) e, poiché l'asse child è l'asse predefinito, può essere omesso dalla query:
/Contact[string(@ContactID)="4"]
Dal punto di vista funzionale questa query restituisce gli stessi risultati della query di esempio precedente, sebbene la valutazione venga fatta rispetto a un valore stringa e non al valore numerico (ovvero il numero 4).
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 seguente (ExplicitConversionB.xml) e salvarlo nella directory in cui è stato salvato il file SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> Contact[string(@ContactID)="4"] </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">
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
</ROOT>