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.
È possibile specificare una query XPath (XML Path Language) come parte di un URL o all'interno di un modello. Lo schema di mapping determina la struttura di questo frammento risultante e i valori vengono recuperati dal database. Questo processo è concettualmente simile alla creazione di viste usando l'istruzione CREATE VIEW e scrivendo query SQL su di esse.
Annotazioni
Per comprendere le query XPath in SQLXML 4.0, è necessario avere familiarità con le viste XML e i concetti correlati, ad esempio modelli e schema di mapping. Per altre informazioni, vedere Introduzione agli schemi XSD con annotazioni (SQLXML 4.0) e lo standard XPath definito dal World Wide Web Consortium (W3C).
Un documento XML è costituito da nodi, ad esempio un nodo elemento, un nodo attributo, un nodo di testo e così via. Si consideri ad esempio questo documento XML:
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was
very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
In questo documento Customer<> è un nodo elemento, cid è un nodo attributo e "Importante" è un nodo di testo.
XPath è un linguaggio di spostamento grafico usato per selezionare un set di nodi da un documento XML. Ogni operatore XPath seleziona un set di nodi basato su un set di nodi selezionato da un operatore XPath precedente. Ad esempio, dato un set di <nodi Customer>, XPath può selezionare tutti i <nodi Order> con il valore dell'attributo date"7/14/1999". Il set di nodi risultante contiene tutti gli ordini con data ordine 14/07/1999.
Il linguaggio XPath è definito dal World Wide Web Consortium (W3C) come linguaggio di navigazione standard. SQLXML 4.0 implementa un subset della specifica XPath W3C, che si trova in http://www.w3.org/TR/1999/PR-xpath-19991008.html.
Di seguito sono riportate le differenze principali tra l'implementazione XPath W3C e l'implementazione di SQLXML 4.0.
Query radice
SQLXML 4.0 non supporta la query radice (/). Ogni query XPath deve iniziare a un elemento ElementType> di primo livello< nello schema.
Segnalazione di errori
La specifica XPath W3C non definisce condizioni di errore. Le query XPath che non riescono a selezionare i nodi restituiscono un set di nodi vuoto. In SQLXML 4.0 una query può restituire molti tipi di messaggi di errore.
Ordine documento
In SQLXML 4.0 l'ordine dei documenti non è sempre determinato. Pertanto, i predicati numerici e gli assi che usano l'ordine dei documenti (ad esempio
following) non vengono implementati.La mancanza di ordine dei documenti significa anche che il valore stringa di un nodo può essere valutato solo quando tale nodo esegue il mapping a una singola colonna in una singola riga. Un elemento con elementi figlio o un nodo IDREFS o NMTOKENS non può essere convertito in stringa.
Annotazioni
In alcuni casi, l'annotazione
key-fieldso le chiavi dell'annotazionerelationshippossono comportare un ordine deterministico del documento. Tuttavia, non si tratta dell'uso principale di queste annotazioni. Per altre informazioni, vedere Identificazione delle colonne chiave tramite sql:key-fields (SQLXML 4.0) e Specifica delle relazioni tramite sql:relationship (SQLXML 4.0).Tipo di dati
SQLXML 4.0 presenta limitazioni nell'implementazione dei tipi di dati XPath
string,numbereboolean. Per altre informazioni, vedere Tipi di dati XPath (SQLXML 4.0).Query tra prodotti
SQLXML 4.0 non supporta query XPath tra prodotti, ad esempio
Customers[Order/@OrderDate=Order/@ShipDate]. Questa query seleziona tutti i clienti con qualsiasi ordine per il quale OrderDate è uguale a ShipDate di qualsiasi ordine.TUTTAVIA, SQLXML 4.0 supporta query come
Customer[Order[@OrderDate=@ShippedDate]], che seleziona Clienti con qualsiasi ordine per il quale OrderDate è uguale a ShipDate.Gestione degli errori e sicurezza
A seconda dello schema e dell'espressione di query XPath usata, Transact-SQL gli errori potrebbero essere esposti agli utenti in determinate condizioni.
Le tabelle nelle sezioni seguenti forniscono informazioni dettagliate sul modo in cui l'implementazione delle query XPath in SQLXML 4.0 differisce dalla specifica W3C in queste aree.
Funzionalità supportate
La tabella seguente illustra le funzionalità del linguaggio XPath implementate in SQLXML 4.0.
| Caratteristica / Funzionalità | Elemento | Collegamento a query di esempio |
|---|---|---|
| Assi |
attributeAssi , childparent, , e self |
Specifica degli assi nelle query XPath (SQLXML 4.0) |
| Predicati booleani con valori booleani, inclusi predicati successivi e annidati | Specifica di operatori aritmetici nelle query XPath (SQLXML 4.0) | |
| Tutti gli operatori relazionali | =, !=, <, <=, >, >= | Specifica di operatori relazionali nelle query XPath (SQLXML 4.0) |
| Operatori aritmetici | +, -, *, div | Specifica di operatori aritmetici nelle query XPath (SQLXML 4.0) |
| Funzioni di conversione esplicite |
number(), string(), Boolean() |
Specifica di funzioni di conversione esplicite nelle query XPath (SQLXML 4.0) |
| Operatori booleani | AND, OR | Specifica di operatori booleani nelle query XPath (SQLXML 4.0) |
| Funzioni booleane |
true(), false(), not() |
Specifica di funzioni booleane nelle query XPath (SQLXML 4.0) |
| Variabili XPath | Specifica delle variabili XPath nelle query XPath (SQLXML 4.0) |
Funzionalità non supportate
La tabella seguente illustra le funzionalità del linguaggio XPath non implementate in SQLXML 4.0.
| Caratteristica / Funzionalità | Elemento |
|---|---|
| Assi |
ancestor, ancestor-or-self, descendant, descendant-or-self (//), followingfollowing-sibling, namespace, , precedingpreceding-sibling |
| Predicati numerici con valori numerici | |
| Operatori aritmetici | Mod |
| Funzioni del nodo |
ancestor, ancestor-or-self, descendant, descendant-or-self (//), followingfollowing-sibling, namespace, , precedingpreceding-sibling |
| Funzioni di stringa |
string()
starts-with(), concat(), , contains(), substring-before()substring-after(), substring(), string-length(), , normalize()translate() |
| Funzioni booleane | lang() |
| Funzioni numeriche |
sum(), floor(), ceiling()round() |
| Operatore Union | | |
Quando si specificano query XPath in un modello, tenere presente il comportamento seguente:
- XPath può contenere caratteri come < o e che hanno significati speciali in XML (e il modello è un documento XML). È necessario eseguire l'escape di questi caratteri usando XML &encoding oppure specificare XPath nell'URL.