30 ebook a un prezzo mai visto!

Risparmia sui tuoi libri preferiti, mentre supporti la community Python Italia

➡️ Scopri gli ebook bundle
Home
Collegamenti XML interni con XPointer

20 Dicembre 2001

Collegamenti XML interni con XPointer

di

Attraverso XPointer è possibile gestire in maniera ottimale i collegamenti ipertestuali tra un documento XML e l'altro.

Come abbiamo visto la settimana scorsa, è possibile ottenere dei collegamenti ipertestuali tra documenti XML utilizzando la sintassi di XLink.
Attraverso XLink possiamo inserire all’interno di un documento XML dei collegamenti ipertestuali ad altri documenti attraverso la sintassi:


<MORE_INFO xmlns:xlink="http://www.w3.org/2001"
xlink:type = "simple"
xlink:show = "new"
xlink:href = "http://www.mysite.com/moreinfo.xml">
Do you need more info?
</MORE_INFO>
/

Che ha lo stesso significato del codice HTML:

<a href="http://www.w3.org/2001" target="_new">
Do you need more info?
</a>
/

A questo punto possiamo chiederci quale sia il metodo per referenziare porzioni interne di altri documenti XML, un po’ quello che avviene quando in HTML scriviamo questa sintassi:

<a href="http://www.mysite.org/path/page.html#section1">
Section number 1
</a>
/

A questo scopo ci viene in aiuto XPointer.

XPointer (XML Pointer Language)

XPointer è un altro linguaggio generato come applicazione a partire dalla base XML ed ha come obiettivo permettere a chi lo utilizza di avere un metodo di indirizzamento preciso alla struttura interna di un documento XML.
Questa possibilità ci è offerta anche da XLink, utilizzando lo stesso metodo messo a punto per HTML, ovvero l’utilizzo di collegamenti a porzioni del documento cui è stato precedentemente assegnato un nome mnemonico.

XPointer, invece, si basa sugli identificatori di frammento. Con essi è possibile localizzare una qualunque posizione della struttura ad albero del documento XML.

Un identificatore di frammento viene collegato ad un documento XML utilizzando un termine di localizzazione assoluto, oppure relativo, a seconda che del documento che si ricerca sia nota la posizione ed essa sia raggiungibile attraverso una parsificazione veloce.

La localizzazione, in senso generale, provvede a mettere in comunicazione tra loro applicazioni XML che in altri casi sarebbero state soppresse per mancanza di comunicabilità.

L’obiettivo principale di XPointer è fornire un metodo di indirizzamento della struttura interna di un documento XML, sia che esso includa o meno attributi di definizione dei nomi.

La sintassi utilizzata per i termini di localizzazione è la seguente:

href="uri#sezione"
href="uri|sezione"
/

Come separatore è possibile utilizzare il carattere # oppure | (pipe) a seconda della tipologia di connessione che si vuole utilizzare.

Poiché stiamo cercando di raggiungere una particolare zona del documento XML di destinazione, è importante capire come ci si debba comportare all’interno di quest’ultimo.
I documenti XML, infatti, sono dotati di una struttura rigida che deve essere analizzata con precisione per comprenderne il significato; in particolare è essenziale, per l’entità che cerca di leggere una parte del documento XML, identificare il nodo di partenza all’interno dell’alberatura XML.

Per risolvere questo problema ci vengono in aiuto i puntatori di XPointer.

Un puntatore, generalmente, ci consente di trovare un nodo all’interno di un’alberatura XML, cioè un qualsiasi elemento nel documento XML.
Altri puntatori permettono, addirittura, di selezionare parti del documento XML che non sono caratterizzabili con gli schemi classici dell’architettura XML, cioè non sono elementi XML classici.

XPointer permette di gestire tutte le possibili situazioni, fornendo oggetti in grado di selezionare qualsiasi sezione all’interno di qualsiasi documento XML, in particolare si tratta di marcatori proprietari di XPointer:

  • root(): la radice del documento, ovvero tutto il documento XML;
  • origin(): rappresenta, in generale, l’oggetto originale, quello principale dell’alberatura;
  • id(nome): il nome o identificativo esplicito dell’oggetto;
  • html(nome): seleziona l’elemento associato al marcatore.

Vediamo l’esempio di utilizzo: il classico URL utilizzato in HTML ha la sintassi:

http://www.mysite.org/path/page.html#section1

che in XPointer si traduce in:

#xpointer(id("section1"))

Inoltre XPointer definisce funzioni aggiuntive che possono essere utilizzate per referenziare in maniera più complessa la struttura interna di un documento XML:

  • range-to(nodo): dall’inizio del nodo contestuale al nodo che è stato passato come parametro;
  • string-range(): una sottostringa del nodo contestuale;
  • start-point(), end-point(): il punto di inizio ed il punto di fine del nodo contestuale;
  • here(): il punto contestuale.

Utilizzando pertanto Xlink e XPointer è possibile referenziare in maniera precisa un documento XML oppure una porzione di esso, di conseguenza è possibile creare collegamenti ipertestuali tra documenti differenti.

L'autore

  • Massimo Canducci
    Massimo Canducci vanta oltre 25 anni di esperienza nel campo dell'innovazione e della digital transformation ed è Chief Innovation Officer per Engineering Ingegneria Informatica. È docente alla Singularity University, l'Università di Torino e l'Università di Pavia, e insegna in master MBA.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Immagine decorativa form newsletter
Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.

Libri che potrebbero interessarti

Tutti i libri

XML

Conoscere il linguaggio XML significa poter comunicare veramente con tutti

12,26

12,90€ -5%

di Massimo Canducci

Programmare con PHP 7

42,50

59,99€ -29%

33,25

35,00€ -5%

24,99

di Steve Prettyman

HTML5

Guida tascabile al linguaggio e agli elementi di una pagina web

15,00

19,89€ -25%

12,26

12,90€ -5%

6,99

di Matteo Tettamanzi