2009-05-29 5 views
49

Qual è la differenza tra XPath, XQuery e XPointer? Per quanto ne so, XQuery è una versione estesa di XPath. Ho alcune conoscenze di base su XPath. C'è qualche funzione disponibile in XPath che non è in XQuery? Ieri ho sentito una nuova parola, XPointer. Sono confuso. Quale lingua è usata per quale scopo?Differenza tra XPath, XQuery e XPointer

risposta

54

Wikipedia è un buon punto di partenza per domande come questa. Generalmente, XPath è un linguaggio utilizzato per individuare in modo preciso nodi XML esatti in un DOM. XQuery è un superset di XPath che fornisce anche la sintassi FLWOR, che è simile a SQL. Infine, XPointer include XPath, ma fornisce anche uno schema di indirizzamento più semplice basato sulla posizione.

Naturalmente, è sempre possibile leggere le specifiche del W3C per i dettagli completi.

16

Bene, penso che XQuery sia qualcosa che vale la pena di distinguere. XPath e XPointer sono quasi gli stessi e vengono utilizzati per la selezione dei nodi XML. D'altra parte XQuery è piuttosto una grande estensione di XPath. Ad esempio dà la possibilità di dichiarare funzioni personalizzate. Quindi è più qualcosa come il linguaggio di programmazione, che funziona in modo nativo con XML. È possibile controllare alcuni campioni qui: embedding-xquery-in-java

saluti

38

Anche se la risposta da Matthew dà una buona prima impressione, c'è molto altro da dire circa le norme citate, e ci sono molti altri che sono legati . C'è un bell'articolo della rivista del gruppo di utenti XML Holland, disponibile online, che racconta molto della storia di XQuery e prende in considerazione vari di questi standard. La prima parte è abbastanza rilevante qui:

XQuery sta per XML Query Language. Questo dice già l'essenza. È un linguaggio per selezionare sottoinsiemi e sottostrutture da un ampio set di file XML. Il risultato può essere manipolato in qualcosa che è adatto per essere utilizzato in, ad esempio, un processo successivo o per mostrare in un browser web. XPath viene utilizzato molto in XQuery.

Tutti gli standard XML hanno il loro scopo. Ne citerò alcuni. XSLT è un linguaggio per la trasformazione di XML in un altro formato. XPointer è un'estensione di XPath per indirizzare i nodi in modo più accurato all'interno di frammenti XML o persino sotto parti di nodi. XLink è uno standard per definire le relazioni. XInclude è uno standard per comporre più porzioni di XML in uno utilizzando, ad esempio, le relazioni di XLink. E XProc è uno standard con il quale è possibile descrivere come i documenti XML devono essere elaborati per ottenere il risultato finale desiderato. Si esprime in XML e descrive il processo passo dopo passo, chiamato anche XML Pipelines. All'interno di XProc usi a.o. XQuery, XSLT e XInclude i linguaggi (e quindi indirettamente anche XPath, XPointer e XLink) per esprimere ciò che deve essere fatto esattamente all'interno di ogni fase.

Tutti questi standard sono uniti. Sono correlati e dipendono l'uno dall'altro.La sovrapposizione tra alcuni degli standard XML citate si riassume abbastanza bene nella prossima immagine che si può trovare anche in W3Schools:

What is XPath

Articolo completo può essere trovato qui: http://grtjn.blogspot.nl/2011/10/xquery-novelties-revisited.html

HTH!

+0

In aggiunta a quanto sopra, Query XML è stato solo l'inizio per XQuery. Sin dal suo inizio sono stati definiti standard aggiuntivi, come XQuery Full-Text e XQuery Update Facility, per renderlo ancora più versatile di quanto non lo sia già da solo. Anche se un po 'datato ormai, l'articolo di cui sopra passa attraverso la maggior parte di questi .. – grtjn

3

XPath è intenzionalmente limitato alla lettura dei nodi esistenti.

Come XSLT, XQuery può creare nodi. Può anche aggiornare i nodi (con XQuery Update Facility).

Dal mio punto di vista XQuery implementor ;-)