Sistemi per il recupero delle informazioni
XML
HTML
Il linguaggio HTML
HTML = Hypertext Markup Language
Linguaggio per la costruzione delle pagine web
definisce come devono essere visualizzate le pagine
permette di realizzare legami ipertestuali tra pagine diverse
Linguaggio di markup
indica come disporre gli elementi all’interno di una pagina mediante delle istruzioni dette “tag”
i browser leggono il file html, interpretano i tag e visualizzano la pagina con le giuste formattazioni
Nota: una pagina HTML altro non è che un normalissimo file di testo, che fa riferimento ad altri elementi separati, come immagini, filmati, file multimediali.
I tag
Le istruzioni HTML sono formate da parole chiave racchiuse tra i simboli “<” e “>”
Si introducono dei tag che hanno il formato
<comando> </comando>
Tutto quello racchiuso tra le coppie di tag deve essere interpretato secondo quanto specificato dal comando
Esistono tag che non vogliono la chiusura
<br>
<hr>
Template di una pagina web
<html>
<head>
<title> titolo </title>
</head>
<body>
contenuto del documento </body>
</html>
Struttura di una pagina HTML
Struttura di una pagina HTML
<html> </html>:
contenitore del documento è chiuso a fine documento
contiene due sezioni
<head> </head>
<body> </body>
<head> </head>
: contiene informazioni quali titolo del documento
fogli di stile
scripting
<body> </body>
: racchiude il contenutoIl tag head
Il tag <head> contiene informazioni non visualizzate nel corpo della pagina
i motori di ricerca classificano i siti
queste informazioni servono ai motori di ricerca
Il tag <title> racchiude il titolo della pagina
visibile nella barra del titolo
il testo contenuto può comparire anche in seguito alla ricerca in un motore, come titolo del link. Sarà dunque importante impostarlo in modo pertinente; es:
<head>
<title> Il sito di Anna <title>
</head>
Il tag meta
Il tag <meta> contiene informazioni non visualizzate nel corpo della pagina
si tratta di una serie di parole chiave e descrizioni, che aiutano i motori di ricerca a classificare il sito; la sintassi è
<meta name=“…” content =“…”>
Ad es. il meta-tag "description" permette di impostare una descrizione sintetica del sito stesso
anche in questo caso, la descrizione compare talvolta nei risultati della ricerca
<meta name = "description" content = “home page di Annalisa Pascarella">
il meta-tag "keywords" permette di indicare alcuni contenuti relativi al sito stesso
Il Doc type
DTD = document type definition
prima di <html>, fornisce le specifiche del documento. Non è obbligatorio
di solito generato automaticamente dall'editor. In mancanza, il documento è identificato come HTML 2.0
es: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN“
http://www.w3.org/TR/html4/loose.dtd >
HTML: il tipo di linguaggio utilizzato è l'HTML
PUBLIC: il documento è pubblico
W3C: il documento fa riferimento alle specifiche del W3C,
- : le specifiche non sono registrate all'ISO. Se lo fossero, sarebbe "+",
DTD HTML 4.01 Transitional: il documento fa riferimento a una DTD, a seguire c’è l’indirizzo del DTD;
EN: la lingua con cui è scritta la DTD è l'inglese
Un pò di utili tag
<br>
per andare a capo
non vuole il tag di chiusura!
<hr>
per tracciare una linea orizzontale
<b> </b> (<i> </i>)
per visualizzare in grassetto (in corsivo)
<!-- questo è un commento -- >
Attributi
Molti tag hanno degli attributi. La sintassi corretta per un tag e’ infatti
<tag attributo1=“val” attributo2=“val”> testo <tag>
es.
<body bgcolor=“blue” background =“img.jpg”> testo
<body>
Si tende ad avere il contenuto separato dallo stile
i fogli di stile (CSS) contengono le regole di formattazione per i vari tag
Tag di formattazione
<p> </p>
delimita un paragrafo
lascio spazio sopra e sotto
<div> </div>
non lascia spazio prima e dopo la chiusura
va a capo
<span> </span>
elemento inline, non va a capo
Elenchi
<ol>
tag da utilizzare per aprire un elenco ordinato (ol = ordered list)
gli elementi sono individuati dal tag <li>
<ul>
tag da utilizzare per aprire un elenco non ordinato (ul = unordered list)
gli elementi sono individuati dal tag <li>
Elenchi – esempio
<ol type = "a">
<li> primo elemento <li> secondo elemento
</ol>
l'attributo type può assumere i valori ”1”,”i”,”I”,”a”,”A”
è un attributo case-sensitive
<ul type=”disc”>
<li>primo elemento <li>secondo elemento
</ul>
l’attributo type definisce il tipo di bullet e può assumere i seguenti valori
“disc”, “circle”,”square”
Immagini
<img src ="nomefile">
tag per inserire immagini
i browser supportano file .jpg, .gif, .png
il valore dell’attributo src è il pathname del file
il pathname del file può essere assoluto o relativo
esistono diversi attributi per definire le proprietà delle immagini
dimensioni
posizione rispetto al testo
dimensione bordo dell’immagine
non vuole chiusura
Immagini - esempio
<img src="nomefile" low src="nomefile“
height="x" width="x"
alt="nome_alternativo"
align="x"
vspace="x" hspace="x"
border="x“>
Link
I link sono "il ponte" che consente di passare da un testo all’altro:
all’interno della pagina web i link ci consentono di muoverci da un documento all’altro del web
si parla di ipertesti
I link sono definiti con il tag
<a>
<a href="http://www.w3.org"> W3C </a>
il parametro href del tag permette di specificare l’URL cui il legame deve portare
il testo tra <a> e </a> e’ usato come label per il link
è indifferente che la destinazione sia una pagina HTML di un sito, un’immagine, un file pdf , un file zip, o un file exe: il meccanismo del link funziona allo stesso modo indipendentemente dal tipo di risorsa; poi il browser si comporterà in modo differente a seconda della risorsa
Link - esempio
<a title =“vai ai link”
href=”/sito/link.html”> Link </a>
<a href="mailto: pascarel@dima.unige.it">
Contatti
</a>
realizza il collegamento alla pagina link.html
si aprirà il client di posta predefinito
Caratteristiche di HTML
HTML descrive la struttura logica dell'informazione allo scopo di presentarla come pagina Web
molte pagine ancora generate manualmente
sempre più pagine generate da applicazioni
le pagine HTML sono destinate agli umani
marcatura descrive la presentazione
non c'è un legame diretto tra marcatura e informazione
Limitazioni di HTML
Insieme di etichette prefissato
non permette di estendere il linguaggio con tag personali
Marcatura non denota il significato
come faccio a sapere quali sono le informazioni che mi interessano?
· non ci dice nulla sul contenuto del documento
come faccio ad estrarre le informazioni che mi interessano (e solo quelle)?
· non supporta dati strutturati -> inefficiente per i motori di ricerca
Marcatura usata per la presentazione del documento
Serve un formalismo più flessibile;
separazione tra:
contenuto
presentazione
navigazione
definizione di domini o contesti
indipendenza dalla piattaforma (media)e supporto multilingue
XML
Sommario
Esaminiamo:
Parte I:
Cos’è il markup
Parte II:
Storia e Introduzione all’XML
Parte III:
Documenti, dati e rappresentazioni
Parte IV:
Definizione e applicazione di grammatiche
Parte V:
Modelli di presentazione dei documenti XML
Parte VI:
Strumenti e indirizzi per XMLParte I
Cos’è il markup
Definizione di markup Tipi di markup
Il markup procedurale Il markup dichiarativo
Perché tutto questo chiasso?
Quando si porta una collezione di documenti in forma elettronica, si ha di solito in mente in generale una specifica applicazione (metterla in rete, prepararla per la stampa, ecc.).
di solito, si cerca di trasformare il documento nella forma più opportuna perché venga utilizzato nell’applicazione suddetta.
spesso per questo si fanno delle scelte che impediscono o ostacolano notevolmente un ulteriore riuso della stessa collezione per una diversa applicazione.
L’impaginato poco si adatta ad un’indicizzazione per la rete, o viceversa i linguaggi di visualizzazione su rete sono troppo poco sofisticati per una produzione tipografica di buon livello, ecc.
I linguaggi di markup derivati da SGML sono i linguaggi più opportuni per strutturare e marcare i documenti in maniera indipendente dall’applicazione, favorendo la riusabilità, la flessibilità e la apertura ad applicazioni complesse.
Cos’è il markup? (1)
Definiamo markup ogni mezzo per rendere esplicita una particolare interpretazione di un testo.
per esempio, tutte quelle aggiunte al testo scritto che permettono di renderlo più fruibile.
Oltre a rendere il testo più leggibile, il markup permette anche di specificare ulteriori usi del testo.
Con il markup per sistemi informatici, specifichiamo le modalità esatte di utilizzo del testo nel sistema stesso.
Esempi di markup: testo in corsivo, testo sottolineato
in XML tutto ciò che è compreso tra i caratteri “<” e “>” (angled brackets, parentesi angolari) è considerato markup, viene detto anche tag (etichetta),
esempio: <nome>
Anche HTML è un markup language inizialmente definito in SGML.
Cos’è il markup? (2)
Quando un autore scrive, da millenni a questa parte, specifica anche i delimitatori di parola (chiamati spazi), i delimitatori di frase (chiamati virgole) e i delimitatori di periodo (chiamati punti).
La numerazione delle pagine o l’uso dei margini per creare effetti sul contenuto sono noti da centinaia di anni.
Eppure questo a stretto rigore non fa parte del testo, ma del markup:
nessuno dirà ad alta voce ‘virgola’ o ‘punto’ nel leggere un testo, ma creerà adeguati comportamenti paralinguistici (espressioni, toni, pause) per migliorare in chi ascolta la comprensione del testo.
Tipi di markup
Il markup assolve a diversi ruoli a seconda del sistema di elaborazione, dell’applicazione, dello scopo a cui il documento è soggetto.
Puntuazionale: punteggiatura, spazi, ecc.
Presentazionale: ritorni a capo, allineamenti, cambi pagina, ecc.
Procedurale: le istruzioni di computer da eseguire per ottenere un certo effetto
Descrittivo (o dichiarativo): l’associazione ad ogni porzione di un documento dell’etichetta che ne descrive il senso e il ruolo
Referenziale: l’uso di abbreviazioni e sigle che fanno riferimento e vengono sostituite con entità più lunghe e complesse.
Tre Uomini in Barca
Jerome K. Jerome
1889
Capitolo primo
Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - […]
Eravamo in quattro: George, William Samuel Harris, e io, Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente.
Ci sentivamo tutti piuttosto giù di corda, ...
3
Un testo su carta
Treuominiinbarcajeromekjerome1889capitolopri motreinvalidilesofferenzedigeorgeeharrislavittim adicentosettemalattieinguaribilieravamoinquattr ogeorge,williamsamuelharrisioemontmorencyst andocenesedutiincameramiafumavamoeparlav amodiquantofossimomalridottimalridottidalpunto divistadellasaluteintendonaturalmentecisentiva motuttipiuttostogiùdicorda
Il testo senza markup
Questo è il testo completamente senza markup, come poteva essere scritto su un papiro della biblioteca di Alessandria, nel II o III secolo a.C.
Tre Uomini in Barca
Jerome K. Jerome (1889) Capitolo primo
Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - […]
Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente.
Ci sentivamo tutti piuttosto giù di corda, ...
Markup metabolizzato
Aggiungiamo markup puntuazionale e presentazionale:
maiuscole/minuscole, punteggiatura, spazi e ritorni a capo sono essi stessi elementi di markup.
{\rtf1 \mac \ansicpg10000 \uc1 \pard \plain \s15 \qc \widctlpar \adjustright
\f4 \fs48 \cgrid {Tre Uomini in Barca \par } \pard \plain \widctlpar
\adjustright \f4 \cgrid { \line \par \par \par \par \par } \pard \plain \s1 \qc \keepn
\widctlpar \outlinelevel0 \adjustright \i \f4 \fs36 \cgrid {Jerome K. Jerome \par } \pard \plain \qc \widctlpar \adjustright \f4 \cgrid { \fs36 […] \par 1889 \line
\par } \pard \widctlpar \adjustright { \page } { \b \fs36 Capitolo primo} { \par
\par \par \line } { \i Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - [ \u8230 \'c9] \par } { \line } {
\fs28 Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e
parlavamo di quanto fossimo malridotti \u8230 \'c9 malridotti, dal punto di vista della salute, intendo, naturalmente. \line Ci sentivamo tutti
piuttosto gi \u249 \'9d di corda, ... \par }}
Markup procedurale
Sono comandi, o istruzioni che il sistema di lettura (umano o elettronico) deve eseguire sul testo. Ad esempio, istruzioni su come andare a capo, come decidere i margini, ecc. Questo è RTF.
Il markup procedurale
Basato sull’aspetto
Ad ogni elemento del documento viene associata la procedura per visualizzarlo in maniera voluta: font, dimensione, corsivi, grassetti, margini, interlinea, ecc.
Dipendente dal sistema
ogni sistema di visualizzazione impone le proprie regole e la propria sintassi.
Associato agli individui
ogni elemento possiede le proprie procedure per la visualizzazione, che possono anche essere tutte diverse anche per elementi dello stesso tipo.
Non contestuale
le regole di visualizzazione non dipendono dal contesto in cui vengono fatte, ma ognuna fa specie a sé.
<ROMANZO>
<TITOLO>Tre Uomini in Barca</TITOLO>
<AUTORE>Jerome K. Jerome</AUTORE>
<ANNO>1889</ANNO>
<CAPITOLO>
<TITOLO>Capitolo primo</TITOLO>
<INDICE>
<EL>Tre invalidi</EL>
<EL>Le sofferenze di George e Harris </EL>
<EL>La vittima di centosette malattie inguaribili</EL>
</INDICE>
<PARA>Eravamo in quattro: George, William Samuel Harris,
io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente. </PARA>
<PARA>Ci sentivamo tutti piuttosto giù di corda,</PARA>
</CAPITOLO>…
</ROMANZO>
Markup descrittivo
Sono informazioni (descrizioni) sugli elementi del documento, che ne specificano il ruolo, la giustificazione, la relazione con gli altri elementi.
Il markup descrittivo
Basato sul ruolo
di ogni elemento viene descritto il ruolo all’interno del testo, più che le regole per la sua visualizzazione:
ad esempio: “questo è un titolo, questo è un paragrafo, questo è il nome dell’autore, questa è una citazione.”
Indipendente dal sistema
poiché il markup descrittivo assegna ruoli (e non regole di visualizzazione) agli elementi del testo, questi sono intrinseci agli elementi stessi, e non alle funzionalità disponibili nel sistema di visualizzazione.
un sistema incapace di variare l’interlinea, o con un elenco limitato di font e dimensioni, può aver problemi ad interpretare un markup procedurale troppo ricco, ma la differenza tra (per esempio) un “titolo” o un “elenco” o un “paragrafo” non dipende dalla sofisticazione del sistema di visualizzazione.
Il markup descrittivo
Basato su categorie
i ruoli sono categorie. Ogni elemento è associato ad una categoria, e ne riflette tutte le caratteristiche automaticamente.
Contestuale
con il markup dichiarativo è possibile definire delle regole che permettano o impediscano l’assegnazione di una categoria (ruolo) ad un elemento del testo a seconda del contesto.
ad esempio, si può richiedere che il titolo vada all’inizio del testo, o che una lista sia composta solo di elementi della lista, e non da paragrafi, ecc.
La storia del markup
1969 : Charles Goldfarb (IBM) dirige lo sviluppo di GML
1974 : Charles Goldfarb inventa SGML, il padre dei linguaggi di marcatura
1986: SGML diventa uno standard ISO (ISO 8879 – “Standard Generalized Markup Language'')
1989: Tim-Berners Lee (CERN di Ginevra) inventa HTML
1995: Fondazione del World Wide Web Consortium (W3C)
1996: Inizio dello sviluppo di XML presso il W3C
1998: XML 1.0 diventa una raccomandazione W3C
SGML
SGML (Standard Generalized Markup Language) è un meta-linguaggio standard e non proprietario per il markup dichiarativo. Facilita markup leggibili, generici, strutturati, gerarchici.
Un meta-linguaggio è un linguaggio per definire linguaggi, una grammatica di costruzione di linguaggi.
non proprietario significa che non esiste un’unica ditta o casa produttrice che ne detiene il controllo.
In SGML il markup è posto in maniera leggibile a fianco degli elementi del testo a cui si riferiscono.
SGML ha teorizzato l’uso del markup per informazioni (descrizioni) sugli elementi dei documenti, che ne specificano il ruolo, la giustificazione, la relazione con gli altri elementi.
SGML permette di definire delle strutture, suggerite o imposte, a cui i documenti si debbono adeguare.
le strutture imposte da SGML sono tipicamente a livelli di dettaglio successivi.
Parte II
Storia e Introduzione a XML
INTRODUZIONE - I
L'eXtensible Markup Language (XML) non è l'ennesimo linguaggio di markup né l'evoluzione dell'HTML.
Esso è un meta-linguaggio di markup, cioè un linguaggio che permette di definire altri linguaggi di markup.
progettato per lo scambio e la interusabilità di documenti strutturati su Internet.
A differenza di HTML, XML non ha tag predefiniti e non serve per definire pagine Web né per programmare.
Serve esclusivamente per definire altri linguaggi.
XML di per sé è un insieme standard di regole sintattiche per modellare la struttura di documenti e dati.
Questo insieme di regole, dette specifiche, definiscono le modalità secondo cui è possibile crearsi un proprio linguaggio di markup.
Le specifiche ufficiali sono state definite dal W3C (Worl Wide Web Consortium) e sono consultabili a partire dall'indirizzo http://www.w3.org/XML.
INTRODUZIONE - II
XML: cos’è?
Un meta-linguaggio di markup derivato da SGML
XML e SGML sono meta-linguaggi di markup descrittivo
inseriscono all'interno del documento delle etichette o marcature (tag), che permettono di descrivere il contenuto del documento stesso.
in questo modo un'applicazione, ad esempio un motore di ricerca , è in grado di leggere le informazioni contenute nel documento e di elaborarle in maniera efficiente e corretta.
Ecco l'esempio di un documento, che descrive gli estremi di una legge, in formato XML:
<?xml version="1.0"?>
<Legge>
<Intestazione>
<DataLegge>7 dicembre 2000</DataLegge>
<NumeroLegge>383</NumeroLegge>
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
</Intestazione>
</Legge>
XML: cos’è?
I tag non sono predefiniti dal linguaggio, e’ compito dell’autore del documento a definirli
l'insieme delle marcature utilizzabili per creare un documento XML non è predefinito come succede per il linguaggio HTML per il quale un organismo unico internazionale, il Web Consortium, ha definito l'insieme dei tag utilizzabili e il loro significato.
l'autore del documento XML definisce i propri tag in base alla tipologia dei dati da descrivere.
per autore s'intende l'insieme dei soggetti interessati alla distribuzione di documenti XML che descrivono una certa tipologia semantica e che concordano insieme una struttura comune da adottare
ad esempio, se un ente pubblico o privato intende rendere accessibile su Internet le schede bibliografiche del catalogo della propria biblioteca, utilizzando il linguaggio XML, dovrà contattare gran parte degli enti pubblici e/o privati che hanno la stessa esigenza e concordare con essi una struttura da utilizzare, ossia definire il numero e il tipo di tag.
XML: cos’è?
E’ stato inventato per descrivere semanticamente i dati
XML è stato progettato per trattare la descrizione delle informazioni, ossia concentra l'attenzione sul significato dei dati.
ad esempio, in questo documento XML, che descrive gli estremi di una legge,
<?xml version="1.0"?>
<Legge>
<Intestazione>
<DataLegge>7 dicembre 2000</DataLegge>
<NumeroLegge>383</NumeroLegge>
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
</Intestazione>
</Legge>
le marcature indicano in maniera non ambigua il significato di ciascun dato, per cui un'applicazione è in grado di estrarre correttamente tutte le informazioni contenute nel documento senza incorrere in errori interpretativi.
XML: cos’è?
XML non è orientato ad uno specifico tipo di elaborazione
XML è stato creato esclusivamente come uno strumento per strutturare, memorizzare e scambiare informazioni.
ad esempio, in questo documento XML che descrive un articolo di una legge,
<?xml version="1.0"?>
<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma Num="1" >La Repubblica riconosce il valore...</Comma>
</Articolo>
non è contenuta alcuna istruzione finalizzata all'elaborazione dei dati; si tratta di pura informazione confezionata nelle marcature XML. Occorre utilizzare un'applicazione specifica per inviare, ricevere o visualizzare il documento XML. Le marcature, evidenziando la semantica delle informazioni contenute in un documento, rendono semplice la progettazione e la realizzazione di applicazioni in grado di elaborare i dati.
PERCHE’ ?
Ma perché si sente tanto parlare di XML?
Perché tutti ne parlano quasi come una rivoluzione in ambito informatico?
Cosa è possibile fare con questo meta- linguaggio?
Come è possibile definire ed utilizzare un proprio linguaggio di markup?
UN PO’ DI STORIA
Internet ed il Web hanno bisogno di standard per poter essere utilizzabili e per poter evolvere senza forzature.
A questo scopo è stato istituito il Worl Wide Web Consortium nel dicembre del 1994 con l'obiettivo di definire standard accettati dai maggiori produttori di software per il Web, primo fra tutti il linguaggio HTML.
L'assalto commerciale ad Internet degli anni '90 e la rapida diffusione del Web ha scatenato una delle lotte più agguerrite sul piano tecnico e commerciale: la guerra dei browser tra Netscape e Microsoft.
ciascun contendente introduceva, con ogni nuova versione del proprio browser, una estensione proprietaria all'HTML.
Risultato: un sito Web che usava le estensioni proprietarie di un browser rischiava di risultare inaccessibile agli altri browser.
UN PO’ DI STORIA
In questo contesto cominciò a delinearsi la necessità di un linguaggio di markup che offrisse maggiore libertà nella definizione dei tag pur rimanendo nell'ambito del rispetto di uno standard.
Nel 1996 si costituì l'XML Working Group nell'ambito del W3C.
lo scopo del gruppo di lavoro era quello di definire un linguaggio che salvasse gli standard e offrisse libertà di estensione.
La ricerca partì dall’SGML un meta-linguaggio per la definizione di linguaggi di markup.
questo linguaggio risultava troppo complesso per gli scopi della ricerca e fu semplificato
Nel dicembre '97 le specifiche di XML venivano pubblicate.
UN PO’ DI STORIA
Anche se gli obiettivi iniziali della nascita di XML erano rivolti alla soluzione di un problema di standard per il Web, ben presto ci si accorse che XML non era limitato al solo contesto Web.
L’XML risulta essere abbastanza generale per poter essere utilizzato nei più disparati contesti: dalla definizione della struttura di documenti allo scambio di informazioni tra sistemi diversi, dalla rappresentazione di immagini alla definizione di formati di dati.
questo aspetto rappresentava una rivoluzione
XML è un acronimo per eXtensible Markup Language
Language perché si tratta di un linguaggio
Markup perché è fondato sull'utilizzo dei marcatori
eXtensible perché consente a chi lo utilizza di creare i tag di cui ha bisogno.
IL MONDO DI XML
Dopo aver conosciuto la storia dell'origine di XML, la domanda che sorge è: allora XML sostituirà l'HTML?
Anche se il dubbio risulta legittimo, possiamo dire che XML e HTML non sono in diretta concorrenza.
Le specifiche di HTML sono ferme alla versione 4.0 del dicembre 1997 (ignorando le piccole revisioni della 4.01) , tuttavia XML contribuisce proprio all'evoluzione dell'HTML.
IL LINGUAGGIO XHTML
L'evoluzione del linguaggio HTML è XHTML (eXtensible HTML), una ridefinizione di HTML in termini di XML.
XHTML è HTML definito secondo le regole di XML.
Le differenze più evidenti si riassumono brevemente:
tutti i tag e i loro attributi sono espressi in minuscolo
è obbligatorio inserire il tag di chiusura
(es. se usiamo <p> dobbiamo chiudere con </p>)
i valori degli attributi devono essere specificati tra doppi apici o singoli apici
(es. <table width="30%">)
i tag vuoti seguono la cosiddetta sintassi minimizzata
(es, il tag <br> diventa <br/>)
Possono sembrare differenze di poco conto, soprattutto perché la tolleranza dei browser ci ha abituato a commettere errori sintattici, ma sono molto importanti.
Le pagine strutturate in XHTML possono essere elaborate da software diversi dai classici browser
ad es. gli spider dei motori di ricerca, i sintetizzatori vocali, i dispositivi wireless, …
XML: standardizzato e strutturato
Abbiamo detto che XML è un insieme standard di regole sintattiche per modellare la struttura di documenti e dati.
Due parole sono di fondamentale importanza: standard e struttura.
Le regole sono standard e questo garantisce l'indipendenza da una specifica piattaforma hardware e software o da uno specifico produttore.
Le regole di XML consentono di definire la struttura di documenti e dati, ma non altre caratteristiche come il tipo o la presentazione dei dati o documenti. Questo compito non è di XML ma è delegato ad altre tecnologie, alcune delle quali sono basate sullo stesso XML.
I vantaggi di XML
Documenti auto-descrittivi
la scelta dei nomi degli elementi può essere fatta per facilitare la comprensione del ruolo strutturale dell’elemento.
Struttura navigabile dei documenti
la rigida struttura ad albero e l’assenza di regole di minimizzazione rendono semplice la visualizzazione
Platform-independence
XML è uno standard aperto, e chiunque può realizzare strumenti che lo usino come formato di dati.
Facile convertibilità a formati Web
la totale interdipendenza tra XML, SGML, HTML etc. fa sì che la conversione tra formati interni e formati per il Web sia facile.
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.
XML 1.0: un meta-linguaggio di markup, sottoinsieme di SGML
XML-Namespace: un meccanismo per la convivenza di nomi di tag appartenenti a DTD diversi
XPath per la creazione di link ipertestuali
XSL: un linguaggio di stylesheet per XML
XML schema: un linguaggio per la specifica di criteri di validazione di documenti XML
Cosa si fa con XML?
Data Interchange
Ogni volta che più programmi si debbono scambiare dati, ci sono problemi di compatibilità. Ogni programma ha le proprie assunzioni in termini di caratteri, separatori, ripetibilità di elementi, differenza tra elementi vuoti e assenti, ecc.
XML si propone come la sintassi intermedia più semplice per esprimere dati anche complessi in forma indipendente dall’applicazione che li ha creati.
Document publishing
XML è ideale come linguaggio per esprimere documenti strutturati o semi strutturati, e per esprimerli in maniera indipendente dalla loro destinazione finale.
Lo stesso documento XML può essere preso e trasformato per la stampa, il Web, il telefonino, l’autoradio.
Cosa si fa con XML? (2)
Interazione tra database eterogenei
Ogni volta che è necessario trasferire dei dati da un database all’altro, la soluzione più economica è stampare i dati dal primo DB su carta e ribatterli a mano sul secondo.
Idealmente si vorrebbe accedere via Web ai dati del primo DB, selezionare quelli di interesse, e spostarli sul secondo DB, che si preoccupa di adattarli alle sue esigenze.
Il secondo DB, dunque, deve essere in grado di comprendere la sintassi dei dati, di interpretare la struttura e di isolare le informazioni di suo interesse.
Per questo potrebbe essere aiutato da un formato di interscambio tipo XML, che permetterebbe di etichettare i dati esplicitamente.
HTML vs XML
HTML nacque come evoluzione del SGML, 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.
Cosa è questo ?
<td> 12 </td>
• Il numero civico di una via ?
• Il numero di telefono per ottenere informazioni sugli abbonati ?
• Entrambe le cose ?
• Nessuna delle due ?
HTML vs XML
<p> <b> Sig. Mario Rossi </b>
<br>
Via Verdi, 12
<br>
56100, Pisa
Un markup con HTML
Sig. Mario Rossi Via Verdi, 12
56100, Pisa
Il nostro algoritmo per trovare il numero civico:
Se un paragrafo contiene due tag <br> allora la prima parola dopo la prima virgola dopo il primo tag <br> è il numero civico.
<business-card>
<persona>
<titolo> Sig. </titolo>
<nome> Mario </nome>
<cognome> Rossi </cognome>
</persona>
<indirizzo>
<strada> Via Verdi </strada>
<numero-civico> 12 </numero-civico>
<cap> 56100 </cap>
<città> Pisa </città>
</indirizzo>
</business-card>
Un semplice markup in XML
Visualizzazione dell’XML
Come l’HTML Sig. Mario Rossi Via Verdi, 12
56100, Pisa
ma anche…
Sig. Mario Rossi Via Verdi, 12
56100, Pisa
Un algoritmo migliore e più semplice per trovare il numero civico:
il numero civico è il contenuto del tag <numero-civico>
Visualizzazione dell’XML
Il linguaggio XML non produce nessun effetto: non comprende le istruzioni di elaborazioni (neanche quelle di visualizzazioni)
Neccessita sempre di qualche applicazione che decide cosa fare per ogni tag.
Gli attuali browser non sono in grado di visualizzare i documenti XML senza il supporto di altri linguaggi di formattazione (es. XSL, eXtensible Style Sheet)
Es. senza XSL
cdcatalog.xml
Es. con XSL
cdcatalog_xsl.xml
Visualizzazione dell’XML
XML vs HTML
XML non è stato progettato per sostituire HTML
XML e HTML sono stati progettati per svolgere compiti diversi:
XML è stato pensato per descrivere i dati ed è incentrato sul loro valore semantico
riguarda la descrizione delle informazioni
HTML è stato pensato per visualizzare i dati ed è incentrato sull'aspetto con il quale il dato è presentato
tratta la visualizzazione delle informazioni
XML è estensibile, è un metalinguaggio nel senso che permette di definire altri linguaggi di marcatura (si veda, ad esempio, il linguaggio Wireless Markup Language usato per le connessioni senza cavo)
HTML non è estensibile
XML mantiene separate la struttura del documento dalle regole per la sua visualizzazione
HTML usa elementi per la struttura insieme ad elementi per la visualizzazione
XML: gli obiettivi
Questi gli obiettivi progettuali di XML secondo il W3C XML Working Group:
XML deve essere utilizzato in modo semplice su Internet.
XML deve supportare un gran numero di applicazioni.
XML deve essere compatibile con SGML.
Deve essere facile lo sviluppo di programmi che elaborino XML.
Il numero di caratteristiche opzionali deve essere mantenuto al minimo possibile, idealmente a zero.
I documenti XML dovrebbero essere leggibili da un uomo e ragionevolmente chiari.
La progettazione XML dovrebbe essere rapida.
La progettazione XML dovrebbe essere formale e concisa.
I documenti XML devono essere facili da creare.
Non è di nessuna importanza l’economia nel markup XML.
Parte III
Documenti, dati e rappresentazioni
Le componenti di XML
Tre parti fondamentali da tenere distinte:
il documento XML;
le specifiche relative agli elementi, la struttura (DTD);
le specifiche relative alla rappresentazione, lo stile (Stylesheet).
STRUTTURA DEI DOCUMENTI XML
Concretamente, un documento XML è un file di testo che contiene una serie di tag, attributi e testo secondo regole sintattiche ben definite.
documento va inteso nel senso generale di contenitore di informazioni
Analizziamo ora XML dal punto di vista logico e sintattico e i documenti che con esso si possono creare dando uno sguardo alla struttura logica.
Un documento XML è intrinsecamente caratterizzato da una struttura gerarchica. E’ composto da componenti denominati elementi.
ciascun elemento rappresenta un componente logico del documento e può contenere altri elementi (sottoelementi) o del testo.
gli elementi possono avere associate altre informazioni che ne descrivono le proprietà, chiamate attributi.
L'organizzazione degli elementi segue un ordine gerarchico o arboreo che prevede un elemento principale (root element o radice).
la radice contiene l'insieme degli altri elementi del documento.
Struttura gerarchica di un documento XML
Possiamo rappresentare graficamente la struttura di un documento XML tramite un albero, noto come document tree.
Prendiamo in considerazione la rappresentazione di un generico articolo a carattere tecnico e proviamo a rappresentarlo secondo il modello XML.
Struttura gerarchica di un documento XML
Root element
elementi
Attributo
Element root
Ogni documento XML deve contenere un solo elemento radice, cioè un elemento che racchiude tutti gli altri elementi secondo una struttura di relazione padre-figlio, cioé strettamente gerarchica.
L'elemento radice è il primo elemento di un documento XML.
Struttura logica di un documento XML
La struttura logica di un documento XML dipende dalle scelte progettuali. Siamo noi a decidere come organizzare gli elementi all'interno di un documento XML.
non esistono regole universali per l'organizzazione logica di un documento.
La struttura logica di un documento XML viene tradotta in una corrispondente struttura fisica composta di elementi sintattici chiamati tag.
questa struttura fisica viene implementata tramite un file di testo creato con un qualsiasi editor.
Struttura logica di un documento XML
<?xml version="1.0" ?>
<articolo titolo="Titolo dell'articolo">
<paragrafo titolo="Titolo del primo paragrafo">
<testo>
Blocco di testo del primo paragrafo
</testo>
<immagine file="immagine1.jpg">
</immagine>
</paragrafo>
<paragrafo titolo="Titolo del secondo paragrafo">
<testo>
Blocco di testo del secondo paragrafo
</testo>
<codice>
Esempio di codice
</codice>
<testo>
Altro blocco di testo
</testo>
</paragrafo>
<paragrafo tipo="bibliografia">
<testo>
Riferimento ad un articolo
</testo>
</paragrafo>
</articolo>
rappresentazione fisica del documento XML visto prima
tag
attributo element root
elemento paragrafo
Struttura logica di un documento XML
La prima riga del documento lo identifica come un documento XML e ne specifica la versione (in questo caso la 1.0): <?xml version="1.0" ?>
deve essere sempre presente
Sempre nella stessa dichiarazione può essere specificato l'insieme (set) di caratteri che si desidera includere all'interno dei propri documenti. Il set di caratteri usato, nel caso in cui non venga specificato diversamente, è UNICODE (UTF-8), una sorta di ASCII esteso.
Un altro set di caratteri utilizzato è il LATIN (ISO-8859-1). In questo caso la prima linea di un documento diventa:
<?xml version="1.0" encoding="ISO-8859-1"?>
XML e Unicode
XML abbandona completamente ASCII e le codifiche ad un byte.
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 parte 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.
Struttura logica di un documento XML
Il corpo del documento segue questa prima riga, rappresentando gli elementi tramite tag, cioè sequenze di caratteri delimitate dai segni '<' e '>‘, come in HTML. Ma a differenza dell'HTML in cui i tag sono predefiniti, XML ci lascia liberi di definire i tag che vogliamo.
Per specificare un attributo per un elemento inseriamo il nome dell’attributo con il relativo valore all’interno del tag di apertura dell’elemento
l'organizzazione gerarchica degli elementi viene rappresentata in XML tramite il loro annidamento.
Alcuni elementi possono essere vuoti, cioè possono essere privi di contenuto testuale. A differenza di quanto avviene per l'HTML, XML prevede che vengano sempre specificati i tag di apertura e chiusura.
È questo il caso del tag immagine.
Sintassi abbreviata: <immagine file="immagine1.jpg“/>
I componenti di XML
Un documento XML contiene una varietà dei seguenti componenti
Elementi
caratteristiche della partizione logica della sezione di testo (es.<nomepersona>Francesca</nomepersona>)
Attributi
caratteristiche specifiche dell’elemento (es.<nomepersona tipo=“f”>Francesca</nomepersona>)
Entità
riferimento ad oggetti “esterni” al documento. Convenzione &nomeentità;
Testo (detto anche #PCDATA)
Commenti
Processing Instructions
Elementi
Gli elementi sono le parti di documento dotate di un senso proprio.
il titolo, l’autore, i paragrafi del documento sono tutti elementi.
Un elemento XML è l’insieme di un tag iniziale, un contenuto ed un tag finale.
<TITOLO>Tre uomini in barca</TITOLO>
Alcuni elementi possono essere vuoti
Tutti gli elementi devono avere un tag di chiusura
ciò non è richiesto in HTML, dove alcuni elementi possono non avere il tag di chiusura, dato che la sintassi del linguaggio non lo richiede obbligatoriamente.
<p>Questo è un paragrafo.
Elementi
Differenze tra caratteri maiuscoli e caratteri minuscoli (case sensitive)
I caratteri maiuscoli e minuscoli sono rilevanti per la definizione di un tag XML.
I seguenti elementi:
<articolo></articolo>
<Articolo></Articolo>
sono diversi fra loro, quindi i tag di apertura e di chiusura devono essere scritti con lo stesso uso dei caratteri maiuscoli e minuscoli; non è corretto scrivere:
<articolo></Articolo>
Elementi
Elementi correttamente nidificati
In XML un elemento può essere contenuto (nidificato) in un altro; nell'esempio che segue, l'elemento paragrafo è nidificato all'interno dell'elemento Articolo.
<Articolo>
< paragrafo >1. ... </ paragrafo >
</Articolo>
In XML l'ordine di chiusura dei tag deve essere inverso rispetto all'ordine di apertura; il successivo è un esempio errato di uso della sintassi degli elementi:
<Articolo>< paragrafo >1. ... </Articolo></ paragrafo
>
Ciò non è richiesto in HTML, dove alcuni tag possono non rispettare l'ordine di apertura e chiusura, come nell'esempio che segue:
<b><i>Questo testo è in grassetto e in corsivo</b></i>
Gli attributi sono informazioni aggiuntive sull’elemento che non fanno effettivamente parte del contenuto (meta-informazioni).
Essi sono posti dentro al tag iniziale dell’elemento. Tipicamente hanno la forma nome=valore
<romanzo file=“threemen.sgm”>…</romanzo>
<capitolo N=“1”>Capitolo primo</capitolo>
Ogni attributo è una coppia di oggetti:
nome dell’attributo
valore dell’attributo
Il valore dell’attributo viene indicato nello start-tag
Il valore deve essere sempre racchiuso fra le virgolette (singole o doppie)
Un elemento può contenere uno o più attributi
Attributi
Attributi
Gli attributi servono ad aggiungere informazioni che:
sarebbero irrilevanti se inserite nel testo
ma che sono utili per le applicazioni che devono elaborare il documento
<file type="gif">compu.gif</file>
Uno stesso dato può essere usato sia come attributo che come elemento:
<persona cittadinanza=”italiana">
<nome>Anna</nome>
<cognome>Rossi</cognome>
</persona>
<persona>
<cittadinanza>italiana</cittadinanza>
<nome>Anna</nome>
<cognome>Rossi</cognome>
</persona>
DOCUMENTI BEN FORMATI
XML richiede un certo rigore sugli aspetti sintattici.
ad es. un tag vuoto deve prevedere il tag di chiusura o la sua forma abbreviata
Un principio fondamentale a cui tutti i documenti XML devono sottostare è infatti:
tutti i documenti XML devono essere ben formati (well formed).
Un documento XML è ben formato se è un documento conforme alle regole di sintassi descritte precedentemente
questo concetto è assimilabile in qualche modo alla correttezza ortografica di una lingua ed è un principio a cui i documenti XML non possono sottrarsi.
DOCUMENTI BEN FORMATI
Perché un documento XML sia ben formato deve rispettare le seguenti regole:
ogni documento XML deve contenere un unico elemento di massimo livello (root) che contenga tutti gli altri elementi del documento. Le sole parti di XML che possono stare all'esterno di questo elemento sono i commenti e le direttive di elaborazione
<Capitolo>
…
</Capitolo>
ogni elemento deve avere un tag di chiusura o, se vuoti, possono prevedere la forma abbreviata (/>)
XML fa distinzione tra maiuscole e minuscole,
<paragrafo> I </paragrafo>
DOCUMENTI BEN FORMATI
Perché un documento XML sia ben formato deve rispettare le seguenti regole:
gli elementi devono essere opportunamente nidificati, cioè i tag di chiusura devono seguire l'ordine inverso dei rispettivi tag di apertura
<Capitolo>
<paragrafo>
</paragrafo>
</Capitolo>
i valori degli attributi devono sempre essere racchiusi tra singoli o doppi apici
<paragrafo id=“primo”> </paragrafo>
DOCUMENTI non BEN FORMATI
La violazione di una qualsiasi di queste regole fa in modo che il documento risultante non venga considerato ben formato.
Codice del tipo
<articolo titolo=test>
...
</Articolo>
darà qualche problema, e lo stesso dicasi per situazioni analoghe alla seguente:
<paragrafo>
<testo>
abcdefghi...
</paragrafo>
</testo>
Anche la scelta dei nomi dei tag deve seguire alcune regole. Un tag può iniziare con un lettera o un underscore (_) e può contenere lettere, numeri, il punto, l'underscore (_) o il trattino (-). Non sono ammessi spazi o altri caratteri. XML è sensibile all'uso di maiuscolo e minuscolo, quindi i tag <prova> e <Prova> sono considerati diversi.