XML e standard connessi. XML, XML-Names, XSL, XPointer, XLink



Documenti analoghi
extensible Markup Language

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I

La struttura: DTD. Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino. laura.farinetti@polito.it

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

Linguaggi per il web oltre HTML: XML

XML. XML è contemporaneamente: XML non è:

XML: extensible Markup Language

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A Language) Stylesheet.

Protocolli applicativi: FTP

Creare un Ipertesto. 1

XML: La nascita del linguaggio

Introduzione a XML. Language

Laboratorio Matematico Informatico 2

La sintassi di un DTD si basa principalmente sulla presenza di quattro dichiarazioni:

Tecnologie Web T Introduzione a XML

Capitolo 4 Pianificazione e Sviluppo di Web Part

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Creare documenti XML. La natura epistemologica della codifica. Perché comprare XML? La struttura gerarchica ordinata. Riassumendo le componenti

XML. Parte VI - Introduzione e nozioni fondamentali di sintassi. XML: Extensible Markup Language:

XML. Concetti principali. Risultato possibile. Differenze tra XML e HTML

Rappresentare i file XML - XSL

Infrastrutture INFormatiche Ospedaliere 2 Corso di laurea di Ingegneria Medica. Indice

Modellazione e Gestione di Informazioni non Strutturate

Corso di HTML. Prerequisiti. Modulo L3. 1-Concetti generali. Browser Rete Internet Client e server. M. Malatesta 1-Concetti generali-12 28/07/2013

Document Type Definition (DTD)

HTML il linguaggio per creare le pagine per il web

2.1 Introduzione ai linguaggi di marcatura

a cura di Maria Finazzi

Comandi principali del linguaggio HTML (Hyper Text Markup Language)

REPORT DI VALUTAZIONE DELL ACCESSIBILITÀ

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Introduzione alla programmazione in C

Esercizi di JavaScript

Informatica per la comunicazione" - lezione 10 -

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

Tecniche Multimediali

Prefazione. Piersalvo Ortu 1

HTML: i link ipertestuali. La sintassi di qualunque link in HTML è la seguente: <A HREF= indirizzo > parolacalda </A>

XSL: extensible Stylesheet Language

Appunti sulla Macchina di Turing. Macchina di Turing

Il linguaggio HTML - Parte 4

Strutturazione logica dei dati: i file

PROCESSO DI INDICIZZAZIONE SEMANTICA

Database. Si ringrazia Marco Bertini per le slides

SPECIFICHE E LIMITI DI EXCEL

Linguaggi e Paradigmi di Programmazione

EXPLOit Content Management Data Base per documenti SGML/XML

Lezione 8. La macchina universale

GLI INDIRIZZI DELL INTERNET PROTOCOL (IP ADDRESS) 2. Fondamenti sugli indirizzi dell Internet Protocol 2. Struttura di un indirizzo IP 2

7.4 Estrazione di materiale dal web

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

4 3 4 = 4 x x x 10 0 aaa

XML: sintassi. Prof. Carlo Blundo Tecnologie di Sviluppo per il Web 1

RISOLUTORE AUTOMATICO PER SUDOKU

Simple & Efficient.

Progettaz. e sviluppo Data Base

La Progettazione Concettuale

HTML+XML= XHTML. Che cos è l XHTML

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Manuale scritto da Fuso Federico 4 A Anno scolastico 2011/2012 Parte 1

UN MODELLO DI QUALITÀ PER I SITI WEB

Funzioni in C. Violetta Lonati

HTML e Linguaggi. Politecnico di Milano Facoltà del Design Bovisa. Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione

Applicazioni web centrati sui dati (Data-centric web applications)

Il database management system Access

Reti di Telecomunicazione Lezione 6

Siti web centrati sui dati (Data-centric web applications)

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

APPUNTI DI HTML (SECONDA LEZIONE)

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS

MANUALE PARCELLA FACILE PLUS INDICE

Informatica A per Ingegneria Gestionale ( ) Il linguaggio HTML. Elisa Quintarelli-Laura Mandelli. HyperText Markup Language

InterNet: rete di reti

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>...

Il seguente Syllabus è relativo al Modulo 7, Reti informatiche, e fornisce i fondamenti per il test di tipo pratico relativo a questo modulo

Access. P a r t e p r i m a

HTML 1. HyperText Markup Language

Introduzione alla codifica XML per i testi umanistici

Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

MS Word per la TESI. Barra degli strumenti. Rientri. Formattare un paragrafo. Cos è? Barra degli strumenti

Database 1 biblioteca universitaria. Testo del quesito

Transcript:

XML e standard connessi XML, XML-Names, XSL, XPointer, XLink 1

Sommario Introduzione XML 1.0 XML-Names XSL XPointer e XLink 2

XML XML (Extensible Markup Language [sic!]) è un meta-linguaggio di markup, progettato per lo scambio e la interusabilità di documenti strutturati su Internet. XML prevede una sintassi semplificata rispetto a SGML, e definisce contemporaneamente una serie piuttosto lunga di linguaggi associati: uno per i link, uno per i nomi di tag, uno per i fogli di stile, uno per la descrizione di meta-informazioni, ecc. XML si propone di integrare, arricchire e, nel lungo periodo, sostituire HTML come linguaggio di markup standard per il World Wide Web. 3

Perché XML? HTML nacque come un DTD di SGML (non proprio!!!), che permetteva di mettere in rete documenti di un tipo molto specifico, semplici documenti di testo con qualche immagine e dei link ipertestuali. Con il successo del WWW, HTML venne iniziato ad usare per molti scopi, molti più di quelli per cui era stato progettato. Si iniziò ad abusare dei tag di HTML per gli effetti grafici che forniva, più che per gli aspetti strutturali o semantici. Si iniziarono a desiderare elaborazioni sofisticate sui dati HTML, elaborazioni che non era possibile fornire. Si iniziò a trovare limitata la capacità grafica di HTML, anche abusando dei tag. 4

Perché non SGML? SGML ha molti pregi, ma ha dalla sua una complessità d uso e di comprensione notevole. Inoltre, a SGML mancano caratteristiche di notevole importanza per l uso pratico, come link ipertestuali e specifiche grafiche. L avvento di HTML ha fatto capire come i linguaggi di markup siano ormai maturi per essere compresi dal largo pubblico, ma che la semplicità d uso di HTML doveva costituire un elemento di partenza. XML contiene tutte le caratteristiche di SGML che servono per creare applicazioni generali senza scendere nel livello di dettaglio e pedanteria richiesti da SGML. 5

Cosa c è con XML? XML è in realtà una famiglia di linguaggi, alcuni già definiti, altri in corso di completamento. Alcuni hanno l ambizione di standard, altri sono solo proposte di privati o industrie interessate. Alcuni hanno scopi generali, altri sono applicazioni specifiche per ambiti più ristretti. Noi di occupiamo di: XML 1.0: un meta-linguaggio di markup, sottoinsieme di SGML XML-Names: un meccanismo per la convivenza di nomi di tag appartenenti a DTD diversi XSL: un linguaggio di stylesheet per XML XPointer e XLink: due linguaggi connessi per la creazione di link ipertestuali 6

XML 1.0 Una raccomandazione W3C del 10 febbraio 1998. È definita come un sottoinsieme di SGML URL ufficiale: http://www.w3.org/tr/rec-xml Traduzione ufficiosa in italiano: http://www.iat.cnr.it/xml/rec-xml-19980210-it.html Molto più formalizzata della grammatica di SGML, usa la notazione EBNF (Extended Backus-Naur Form), un formalismo ben noto in tutti gli ambienti di programmazione (usata normalmente per descrivere la grammatica dei linguaggi di programmazione). 7

Criteri di progettazione di XML: 1 Nel documento ufficiale di XML si elencano i seguenti obiettivi progettuali di XML: 1. XML deve essere utilizzabile in modo semplice su Internet. 2. XML deve supportare un gran numero di applicazioni. 3. XML deve essere compatibile con SGML. 4. Deve essere facile lo sviluppo di programmi che elaborino documenti XML. 5. Il numero di caratteristiche opzionali deve essere mantenuto al minimo possibile, idealmente a zero. 8

Criteri di progettazione di XML: 2 6. I documenti XML dovrebbero essere leggibili da umani e ragionevolmente chiari. 7. La progettazione XML dovrebbe essere rapida. 8. La progettazione XML deve essere formale e concisa. 9. I documenti XML devono essere facili da creare. 10. Non è di nessuna importanza l'economicità nel markup XML. 9

ASCII e ISO-Latin 1 Il codice ASCII è stato inventato per associare lettere dell alfabeto inglese ai codici numerici usati internamente dai computer. Il codice ASCII originale usava le prime 128 combinazioni di un byte (0-127), lasciando il bit più significativo come controllore di parità. In seguito, la superfluità del codice di parità ha portato estensioni non-standard del codice ASCII per i rimanenti 128 caratteri (128-255). ISO-Latin 1 è uno standard ISO per i caratteri derivati dall alfabeto latino, che occupa tutti i 256 caratteri del byte. I primi 128 sono lo standard ASCII. 10

Unicode Unicode è una codifica a due byte che include ISO-Latin 1 (i primi 256 caratteri sono ISO-Latin 1) e permette di specificare tutti i caratteri di una moltitudine di alfabeti, includendo: Greco, Copto, Cirillico, Armeno, Ebraico, Arabo, Hiragana e Katakana (i due principali alfabeti giapponesi), e Han (alfabeto ieratico di cinese, giapponese e coreano), ecc. Inoltre è a disposizione uno spazio libero da utilizzare per tutti gli alfabeti non inclusi (giapponese e cinese arcaico, cuneiforme, geroglifico, Klingon, ecc.) 11

XML e Unicode XML (come Java) abbandona completamente ASCII e le codifiche ad un byte, e si basa direttamente su Unicode. Questo porta a due vantaggi nei riguardi dell internazionalizzazione: È possibile scrivere documenti misti, senza ricorrere a trucchi strani per identificare la parte che usa un alfabeto dalla pare che ne adopera un altro. Un documento scritto in un linguaggio non latino non deve basarsi su parametri esterni per essere riconosciuto come tale, ma la codifica stessa dei caratteri lo identifica. 12

Documenti ben formati o validi XML distingue due tipi di documenti rilevanti per le applicazioni XML: i documenti ben formati ed i documenti validi. In SGML, un DTD è necessario per la validazione del documento. Anche in XML, un documento è valido se presenta un DTD ed è possibile validarlo usando il DTD. Tuttavia XML permette anche documenti ben formati, ovvero documenti che, pur essendo privi di DTD, presentano una struttura sufficientemente regolare e comprensibile da poter essere controllata. 13

Documenti XML ben formati Un documento XML si dice ben formato se: Tutti i tag di apertura e chiusura corrispondono e sono ben annidati Esiste un elemento radice che contiene tutti gli altri I tag vuoti (senza contenuto) utilizzano un simbolo speciale di fine tag: <vuoto/> Tutti gli attributi sono sempre racchiusi tra virgolette Tutte le entità sono definite. 14

Parser validanti e non validanti Il cuore di un applicazione XML è il parser, ovvero quel modulo che legge il documento XML e ne crea una rappresentazione interna utile per successive elaborazioni (come la visualizzazione). Un parser validante, in presenza di un DTD, è in grado di verificare la validità del documento, o di segnalare gli errori di markup presenti. Un parser non validante invece, anche in presenza di un DTD è solo in grado di verificare la buona forma del documento. Un parser non validante è molto più semplice e veloce da scrivere, ma è in grado di fare meno controlli. In alcune applicazioni, però, non è necessario validare i documenti, 15 solo verificare la loro buona forma.

Dichiarazione XML Un documento XML può includere una dichiarazione XML. Poiché le caratteristiche opzionali di XML sono ridotte al minimo, la dichiarazione XML è brevissima: <?XML version= 1.0 encoding= UTF-16 standalone= yes?> Il parametro version identifica quale versione di XML si sta usando. Per il momento, l unico valore possibile è 1.0. Necessario. Il parametro encoding permette di specificare, se il dubbio può sorgere, quale codifica di caratteri viene usata per il documento. Facoltativo. Il parametro standalone permette di specificare se le informazioni necessarie per valutare e validare il documento sono interne o se ne esistono anche di esterne. Facoltativo. 16

Sezioni Cdata A volte può essere comodo inserire un blocco di caratteri comprendenti anche & e <, senza preoccuparsi di nasconderli dentro ad entità. Si usa allora la sezione CDATA, che ha la seguente sintassi: <![CDATA[ dati liberi comprendenti & e < ]]> L unica sequenza di caratteri non accettata è la sequenza ]]>. In una sezione CDATA il parser XML passa all applicazione finale tutti i caratteri che trova fino alla sequenza ]]> 17

Altre macro-differenze tra SGML e XML: 1 Elementi vuoti: un elemento con content model EMPTY ha il carattere di chiusura tag />. <EMPTY/> Case sensitivity: in XML tutto il markup è casesensitive (il maiuscolo è diverso dal minuscolo). È quindi necessario usare le maiuscole per ELEMENT, ATTLIST, ecc., e l elemento <para> è diverso dall elemento <PARA>. Valori tra virgolette: tutti i valori di tutti gli attributi debbono avere le virgolette (semplici o doppie, ma in maniera coerente), anche se numeri o appartenenti ad una lista di valori predefiniti. 18

Altre macro-differenze tra SGML e XML: 2 Tag omissibili: Non esiste il concetto di tag omissibili, e nella definizione degli elementi non ci sono i parametri di minimizzazione. Entità predefinite: sono pre-definite e da non ridefinire 5 entità: <!ENTITY lt <!ENTITY gt <!ENTITY amp <!ENTITY apos > <!ENTITY quot > < > > > & > Processing instructions: la sequenza di chiusura di un istruzione di elaborazione è?> : 19 <?Fine-pagina?>

XML-Names Nella visione XML, i DTD si mescolano e si fondono tra loro in maniera complessa. Lo stesso documento potrebbe avere alcuni elementi definiti in un DTD ed altri in un altro. Un esempio comune è un documento XML di valori di borsa che adopera il DTD di HTML per definire gli elementi di testo, ed un DTD specifico per gli elementi di borsa. I problemi sono conciliare la presenza di elementi non definiti nel content model e soprattutto conciliare la presenza di elementi definiti nei due DTD con lo stesso nome. I namespace in XML si propongono per risolvere questi problemi. XML-names è un working draft di W3C per questo argomento. 20

Un esempio di uso di XML-Names Il seguente esempio usa i namespace XML: <?xml version= 1.0?> <bk:book xmlns:bk= http://www.loc.gov/books xmlns:isbn= ISBN > <bk:title>tre uomini in barca</bk:title> <bk:author>jerome K. Jerome</bk:author> <isbn:isbn>88-7983-395-2</isbn:isbn> </bk:book> Ogni nome del documento XML è preceduto da un prefisso che specifica l origine del nome stesso. Questo può avvenire sia per i nomi degli elementi che per i nomi degli attributi. Il prefisso è separato da il carattere : dal nome dell elemento o dell attributo. Il nome predefinito xmlns serve per introdurre i namespace usati nel documento e per fornire un identificatore pubblico dove trovare i dettagli del namespace (ad esempio, il DTD). 21

Namespace di default Nella dichiarazione xmlns si pone il nome del prefisso che si intende usare nel corso del documento per gli elementi definiti in quel namespace. L assenza di tale prefisso in xmlns indica la presenza di un namespace di default, per cui tutti i nomi privi di prefisso di debbono intendere appartenenti a quel namespace. Es.: <?xml version= 1.0 > <book xmlns= http://www.loc.gov/books xmlns:isbn= ISBN > <title>tre uomini in barca</title> <author>jerome K. Jerome</author> <isbn:isbn>88-7983-395-2</isbn:isbn> </book> 22

XPointer e XLink XLink e XPointer sono due working draft di W3C per la specifica di link ipertestuali sui documenti XML. Originariamente erano un unica proposta chiamata XLL (da cui la terna XML, XLL e XSL), poi divisa in due per semplicità. XPointer specifica i meccanismi per riferirsi a parti del documento XML (SGML permette di riferirsi solo ad elementi con l attributo ID, HTML solo ad elementi con l attributo NAME ). XLink usa i meccanismi di indirizzamento di XPointer per descrivere link anche sofisticati tra documenti XML. 23

XPointer Gli XPointer sono indirizzi di locazioni interne a documenti XML. Gli XPointer possono essere usati per indicare link da o a specifiche parti di documenti XML. Gli XPointer sono una elaborazione del nome in un URL: http://www.domain.com/dir/file.html#nome Gli XPointer sono dunque usati in un locatore, tipicamente un URI o URL, per indicare un frammento di quella risorsa. Un XPointer è composto di una sequenza di termini di locazione separati da punti. Ogni termine individua più precisamente un frammento della risorsa individuata in precedenza. Es.: root().child(2,div) identifica il secondo elemento DIV figlio diretto della radice del documento XML. 24

Tipi di indirizzamento: 1 I termini di locazione possono essere: Assoluti: elementi identificabili senza ambiguità, come la radice di un albero, il punto di partenza della navigazione, un elemento dotato di un attributo ID, un elemento HTML dotato di un attributo NAME. Es.: root(), origin(), id( pippo ), html( MyName ) Relativi: elementi basati sul termine precedente del XPointer, e identificati tramite relazioni di vicinanza e di tipo: n-esimo figlio, discendente, ascendente, precedente, seguente, ecc. Es.: child(2,section), preceding(4,div), descendant(4,#text) 25

Tipi di indirizzamento: 2 Intervallo (span): un frammento in cui inizio e fine sono indicati da due ulteriori frammenti di XPointer. Es.: id(27).span(child(1), child(5)) Attributi: un frammento indicato dalla presenza o meno di un attributo. Es.: id(27).attr( pos ) Stringhe: il frammento identificato da o una posizione, o una stringa specifica. Es.: string(15, ) identifica il carattere n. 15 della stringa precedentemente identificata. Es.: string(3, text,5) identifica il carattere n.5 della occorrenza n. 3 della stringa text nella stringa precedentemente identificata. 26

XLink Gli XLink sono elementi di un documento XML che hanno significato e comportamento di link ipertestuale. Un elemento XML è identificato come un XLink se possiede degli attributi riservati, come xml:link. Questa è una soluzione di compromesso tra il riservare nomi specifici di elementi (che avrebbe limitato la libertà di creazione dei DTD) e il lasciare tutta la gestione dei link ai fogli di stile (che avrebbe negato di attribuire inequivocabilmente agli elementi in questione la natura di link). Gli XLink sono di due tipi: Link semplici: elementi inline e uni-direzionali Link estesi: inline o out-of-line, spesso multi-direzionali. 27

XLink semplici La presenza dell attributo xml:link con valore simple identifica l elemento come un XLink semplice. <A xml:link= simple href= http://www.w3.org/ >W3C</A> Un modo più semplice di definire elementi è specificare in un DTD (o anche in un frammento inline di DTD) la presenza dell attributo: <!ATTLIST A xml:link CDATA #IMPLIED simple > <A href= http://www.w3.org/ >W3C</A> L attributo href identifica il o i locatori coinvolti. Un locatore è un URL seguito facoltativamente da un XPointer. <A href= http://www.w3.org/file.xml#root().child(3,div) >W3C</A> 28

XLink estesi La presenza dell attributo xml:link con valore extended identifica l elemento come un XLink esteso. <commenti xml:link= extended inline= false > <nota xml:link= locator href= #id(n1) role= supporto /> <nota xml:link= locator href= #id(n2) role= critica /> </commenti> Un link esteso può avere più di un locatore. In questo caso si usano elementi con attributo xml:link = locator. I link estesi sono utili per: Creare link in uscita da documenti che non possono essere modificati (e quindi non permettono link inline) Creare link da o per documenti in formati non XML. Eseguire l attivazione di collezioni di link a richiesta. Specificare link mutli-direzionali e multi-destinazione. 29

Link inline e out-of-line Un link HTML è un link inline: il testo linkante o linkato è il contenuto dell elemento A, e il link appartiene al documento in cui appare. I link out-of-line sono link che vengono memorizzati in un documento, e appaiono in un altro. Questo è molto comodo per creare link a o da risorse read-only (CD-ROM) o su cui non si hanno permessi di modifica (documenti altrui). XLink determina il tipo di link tramite l attributo inline, che può avere valori true o false. 30

Semantica della risorsa locale La risorsa locale, in un link inline, è la parte di documento contenuta nell elemento XLink. In link non inline, non esiste risorsa locale. Con XLink è possibile specificare degli attributi per arricchire l interpretazione della risorsa locale. Essi sono: Content-role: specifica il ruolo che gioca la risorsa locale nel link. È un meccanismo di tipizzazione. Content-title: specifica un titolo visualizzabile per spiegare all utente il ruolo del link, la destinazione, ecc. 31

Semantica della risorsa remota: 1 La risorsa remota è l elemento a cui punta un locatore. Nel caso di link unidirezionale inline, la risorsa remota è la destinazione del link. In altri casi, è semplicemente uno degli estremi. Con XLink è possibile specificare degli attributi per arricchire l interpretazione della risorsa remota. Essi sono: role: specifica il ruolo che gioca la risorsa remota nel link. È un meccanismo di tipizzazione. title: specifica un titolo visualizzabile per spiegare all utente il ruolo del link, la destinazione, ecc. behavior: specifica dei comportamenti che l applicazione deve attuare durante l attravrsamento (effetti visivi, sonori, ecc.) 32

Semantica della risorsa remota: 2 Altri due importanti attributi sono: show (valori possibili: embed, replace, new ): specifica come visualizzare o elaborare la risorsa specificata. new indica che la risorsa va visualizzata in un contesto nuovo, come una finestra nuova; replace indica che la risorsa nuova sostituisce la vecchia nel contesto esistente. embed indica che il contesto della risorsa nuova è la risorsa locale, a cui va sostituita. Per esempio, rimpiazzando il testo del link con il testo della destinazione. Actuate (valori possibili: auto e user ): specifica quando l attivazione del link debba avvenire. user indica che deve essere l utente ad attivare l azione, per esempio facendo click su un pulsante. auto significa che il link deve essere attivato appena la risorsa locale viene caricata. 33

Gruppi di link estesi Grazie ai link estesi, è possibile mettere in due documenti diversi i link ed il testo che li deve contenere. Nasce allora l esigenza di specificare un gruppo di documenti connessi tra loro per l esistenza di link incrociati, cosa che avviene con una derivazione della stessa idea di link esteso. La presenza dell attributo xml:link con valore group identifica l elemento come un gruppo di link estesi. La presenza dell attributo xml:link con valore document identifica l elemento come un documento interessato dal gruppo.. <gruppo xml:link= group > <doc xml:link= document href= doc.xml role= text /> <doc xml:link= document href= extlink1.xml role= link /> <doc xml:link= document href= extlink2.xml role= link /> 34 </gruppo>

XSL: Un linguaggio di stylesheet Poiché nessun elemento di XML possiede un significato predefinito, il linguaggio di stylesheet si occupa di dare un significato agli elementi di un documento XML. XSL (Extended Stylesheet Language) è un linguaggio che permette di attribuire significati ben noti (come caratteri, font, ecc.) agli elementi di un documento XML. Il linguaggio XSL non ha ancora uno stato concluso. E definito da un working draft di aprile 1999, che avrà ancora delle variazioni prevedibili. La proposta è divisa in due parti: un linguaggio di trasformazione da documenti XML a documenti XML, ed un vocabolario di elementi XML con semantica di formattazione. 35

Come funziona XSL Innanzitutto XSL è un linguaggio di trasformazione: dato un documento XML, è possibile generare un altro documento XML derivato applicando delle regole di trasformazione specificate nello stylesheet. Se il documento XML derivato contiene elementi i cui nomi ed attributi sono noti ad un browser, il documento può essere visualizzato da questo browser. Per esempio, nel caso di Internet Explorer 5.0, il documento XML viene trasformato dallo stylesheet XSL in un documento HTML (o meglio, XML con il DTD HTML), che può quindi essere visualizzato all interno di un browser WWW. Un browser completamente compatibile con XSL, però, realizza anche il vocabolario di elementi di formattazione (formatting objects) che specificano sofisticate caratteristiche di impaginazione. 36

Cos è un documento XSL? Un documento XSL è un documento XML che utilizza un DTD speciale in cui gli elementi hanno senso predefinito. Un documento XSL è composto di regole di costruzione, le quali permettono di associare certi elementi del documento XML d origine in altri elementi del documento destinazione. Una regola è composta di uno o più pattern (serie di criteri da verificare nel documento d origine) e da una azione (sequenza di costrutti XML da inserire nel documento destinazione). Un parser XSL valuta, per ogni elemento del documento d origine, la regola più appropriata da attivare, ed esegue l azione associata, generando nuovi elementi XML al posto 37 dei vecchi.

Un esempio Dato lo stylesheet: <xsl:stylesheet> <xsl:template match= / > <HTML><BODY> <xsl:process-children/> </BODY></HTML> </xsl:template> <xsl:template match= para > <P color= blue > <xsl:process-children/> </P> </rule></xsl> ed il documento <doc> <para> Prova </para> <para> XSL </para> </doc> ne risulta il documento: <HTML><BODY> <P color= blue > Prova </P> <P color= blue > XSL </P> </BODY></HTML> 38

Pattern: l attributo match Un pattern è un blocco di regole di costruzione contenute nell attributo match. Il pattern è l elemento del documento sorgente a cui applicare l azione. La regola fa match con tutti gli elementi che soddisfano le proprietà del pattern. Es.: La regola <xsl:template> <DIV> <xsl:process-children/> </DIV> </xsl:template> fa match con tutti gli elementi del documento. 39

Azione: gli elementi destinazione Sono un azione del pattern tutti gli elementi della regola contenuti dentro al blocco <xsl:template>. Ogni elemento posto nell azione viene semplicemente inserito nel documento destinazione al posto dell elemento che ha fatto match. Fanno eccezione gli elementi speciali come <xsl:process-children> e in generale tutti quelli appartenenti al namespace xsl:. 40

Azione: <xsl:process-children/> L elemento <xsl:process-children/> attiva la procedura di match sul #PCDATA e sugli elementi di markup contenuti nel elemento prescelto. L elemento <xsl:process-children/> può comparire anche più volte. Es.: La seguente regola non scrive il contenuto dell elemento hide. <xsl:template match= hide /> </xsl:template> Es.: La seguente regola scrive due volte il contenuto dell elemento ripeti separandolo con una riga. <xsl:template match== ripeti /> <DIV> <xsl:process-children/> <HR/> <xsl:process-children/> </DIV> </xsl:template> 41

Usare XSL E necessario indicare al browser dove trovare lo stylesheet da usare. Questo può essere fatto in tre modi: Specificando nell intestazione MIME del collegamento HTTP la locazione del foglio di stile Specificando un gruppo di documenti, uno dei quali è il foglio di stile Specificando con una Processing Instruction (PI) il collegamento: <?xml-stylesheet type= text/xsl href= style.xsl > <doc> </doc> L ultima soluzione è l unica che funziona oggi con Internet Explorer 5.0, ma non è ancora ufficiale. In prospettiva, credo che la soluzione migliore sia la seconda. 42