eXtensible Markup Language Tutorial - by Marco Giannì
Capitolo IV: Ampliare i documenti XML

Concetti fondamentali relativi al linguaggio XPointer

L'azione dell'XPointer è interna agli elementi e alle strutture che costituiscono il documento XML. Un elemento XPointer contiene una serie di termini di localizzazione che specifica una posizione nella struttura ad albero del documento. Benché molto più sofisticato degli identificatori di frammento HTML, l'XPointer può essere utilizzato in maniera analoga. I termini di localizzazione utilizzano la sintassi indicata nei seguenti esempi:

HREF="uri#Xpointer"
HREF="uri|Xpointer"

Se come separatore si utilizza il simbolo di cancelletto (#), tale simbolo indica che il client deve elaborare la connessione. Se si utilizza invece il simbolo pipe (|), il meccanismo della connessione rimane aperto. In questo modo, la connessione del collegamento può essere gestita sul lato server, consentendo un potenziale risparmio di larghezza di banda.

Un termine di localizzazione richiede un'origine di localizzazione. Si tratta di un metodo che consente di indicare a XPointer il punto in cui iniziare ad operare nella struttura del documento. Ogni termine di localizzazione utilizza una parola chiave e può contenere argomenti. La parola chiave specifica l'origine di localizzazione, ad esempio Root o Id, che indica a XPointer dove iniziare. Gli argomenti forniscono ulteriori informazioni sul percorso che XPointer dovrà compiere all'interno dell'origine. Un esempio di termine di localizzazione è il seguente:

Child(2,PRODUCT)

In cui viene indicato il secondo elemento Product tra gli elementi secondari correnti..

I termini di localizzazione possono essere associati a posizioni assolute, posizioni relative, posizioni con spanning, posizioni di attributi o posizioni di stringhe.

TERMINI DI LOCALIZZAZIONE ASSOLUTI

Un termine di localizzazione assoluto fa riferimento a un punto specifico nella struttura del documento. Non richiede alcuna origine di localizzazione e può essere utilizzato per stabilire un'origine di localizzazione o come elemento XPointer autonomo. I termini di localizzazione assoluti supportano le seguenti parole chiave:

  • Root() La parola chiave Root specifica che l'origine di localizzazione coincide con l'elemento principale della risorsa con funzione di contenitore. Se non vengono specificate altre parole chiave, è considerata la parola chiave predefinita. Poiché lo scopo di un termine di localizzazione è di puntare a un documento, questa parola chiave è raramente utilizzata.
  • Origin() Genera un'origine di localizzazione particolarmente utile se, a causa di una richiesta quale un collegamento, l'XPointer è in fase di elaborazione. Se XPointer inizia con Origin, l'origine di localizzazione corrisponde alla risorsa da cui è partita la richiesta.
  • Id(Name) La parola chiave Id utilizza la tecnica più comune di spostamento attraverso i documenti, ovvero la coppia ID e NAME. Lo spostamento inizia al livello dell'elemento con ID corrispondente al NAME specificato.
  • Html(NameValue) Questa parola chiave emula l'azione eseguita dall'identificatore di frammento in un documento HTML. Contiene un attributo NAMEVALUE. L'origine di localizzazione è il primo elemento Anchor contenente un attributo NAME il cui valore corrisponde a quello dell'attributo NAMEVALUE nel termine di localizzazione.

Un esempio di termine di localizzazione assoluto è il seguente:

HREF="http://www.foo.com/br.xml#Id(PRODUCT)"

Identifica l'elemento PRODUCT all'interno del documento br.xml.

TERMINI DI LOCALIZZAZIONE RELATIVI

Le parole chiave per i termini di localizzazione relativi dipendono dalla disponibilità di un'origine di localizzazione. Se non esiste alcuna origine, XPointer fa riferimento all'elemento principale della risorsa che contiene il termine. I termini di localizzazione relativi supportano le seguenti parole chiave:

  • Child Se viene specificata, la parola chiave Child identifica i nodi secondari dell'origine di localizzazione. Seleziona tutti i nodi secondari dell'origine di localizzazione.
  • Descendant Specifica i nodi del documento che si trovano a qualunque livello all'interno del contenuto dell'origine di localizzazione.
  • Ancestor Specifica i nodi contenenti l'origine di localizzazione o i relativi elementi principali.
  • Preceding Specifica i nodi che compaiono nella struttura ad albero del documento prima dell'origine di localizzazione.
  • Psibiling Specifica gli elementi di pari livello che compaiono prima dell'origine di localizzazione. Gli elementi di pari livello condividono lo stesso elemento principale.
  • Following Specifica i nodi che compaiono nella struttura ad albero del documento dopo l'origine di localizzazione.
  • Fsibling Specifica gli elementi di pari livello che compaiono dopo l'origine di localizzazione.

Un esempio di termine di localizzazione relativo è il seguente:

Child(2,SECTION)

Identifica il secondo figlio di tipo SECTION.

TERMINI DI LOCALIZZAZIONE CON SPANNING

Un termine di localizzazione con spanning punta a una sottorisorsa individuando i dati presenti tra i due argomenti. Nell'esempio seguente, gli argomenti sono relativi all'origine di localizzazione per il termine di localizzazione con spanning:

Id(PRODUCT).Span(Child(1),Child(3))

Si seleziona dal primo al terzo figlio dell'elemento PRODUCT.

TERMINI DI LOCALIZZAZIONE DI ATTRIBUTI

Il termine di localizzazione di un attributo esamina il nome di un attributo, individua l'attributo e ne restituisce il valore. L'esempio seguente mostra l'utilizzo di questo termine:

Id(PRODUCT).Attr(N)

Si seleziona il valore dell'attributo N dell'elemento PRODUCT.

TERMINI DI LOCALIZZAZIONE DI STRINGHE

Il termine di localizzazione di una stringa seleziona una o più stringhe o posizioni tra stringhe nell'origine di localizzazione. I termini di localizzazione delle stringhe supportano le seguenti parole chiave:

  • InstanceOrAll Identifica l'occorrenza ordinale della stringa specificata. Se il numero è positivo, XPointer inizia a contare a partire dall'inizio dell'origine di localizzazione. Se il numero è negativo, XPointer inizia a contare in senso inverso a partire dalla fine dell'origine di localizzazione. Se si utilizza il valore All, verranno utilizzate tutte le occorrenze della stringa.
  • SkipLit Specifica la stringa da individuare nell'origine di localizzazione.
  • Position Specifica l'offset di carattere dall'inizio della stringa o delle stringhe all'inizio della corrispondenza di stringa finale.
  • Length Specifica il numero di caratteri da selezionare nella stringa.

Un esempio di termine di localizzazione di stringa è il seguente:

Id(PRODUCT).String(3,"widget")

Si seleziona il terzo elemento di PRODUCT contenente la stringa "widget".

Infine un semplice esempio di utilizzo di un XPointer :

HREF="http://www.foo.com/br.xml#id(list).child(3,item)"

viene selezionato il terzo elemento item che si trova all'interno dell'elemento list del documento br.xml.

<indietro home page avanti>

Copyright © 2000-2005. Tutti i diritti sono riservati. Per informazioni: mgianni@infinito.it