Diapositiva 1

Download Report

Transcript Diapositiva 1

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>
Struttura di una pagina HTML

Template di una pagina web
<html>
<head>
<title> titolo </title>
</head>
<body>
contenuto del documento
</body>
</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 contenuto
Il 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"
Annalisa Pascarella">

content
=
“home
page
di
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>


<b> </b> (<i> </i>)


per tracciare una linea orizzontale
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”>
<body>


testo
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


esistono diversi attributi per definire le proprietà delle immagini




il pathname del file può essere assoluto o relativo
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>
realizza il collegamento
alla pagina link.html
<a href="mailto: [email protected]">
Contatti
</a>
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?


come faccio ad estrarre le informazioni che mi interessano (e solo
quelle)?



· non ci dice nulla sul contenuto del documento
· 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:
Parte II:
Parte III:
Parte IV:
Parte V:
Parte VI:
Cos’è il markup
Storia e Introduzione all’XML
Documenti, dati e rappresentazioni
Definizione e applicazione di grammatiche
Modelli di presentazione dei documenti XML
Strumenti e indirizzi per XML
Parte 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.
Un testo su carta
Capitolo primo
Tre Uomini in Barca
Tre invalidi - Le sofferenze di George e Harris - La
vittima di centosette malattie inguaribili - […]
Jerome K. Jerome
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, ...
1889
3
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.
Treuominiinbarcajeromekjerome1889capitolopri
motreinvalidilesofferenzedigeorgeeharrislavittim
adicentosettemalattieinguaribilieravamoinquattr
ogeorge,williamsamuelharrisioemontmorencyst
andocenesedutiincameramiafumavamoeparlav
amodiquantofossimomalridottimalridottidalpunt
odivistadellasaluteintendonaturalmentecisentiv
amotuttipiuttostogiùdicorda
Markup metabolizzato

Aggiungiamo
markup
puntuazionale
e
presentazionale:
maiuscole/minuscole, punteggiatura, spazi e ritorni a capo sono
essi stessi elementi di markup.
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 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.
{\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 }}
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é.
Markup descrittivo

Sono informazioni (descrizioni) sugli elementi del documento, che ne
specificano il ruolo, la giustificazione, la relazione con gli altri elementi.
<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>
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.
INTRODUZIONE - II
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.
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


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. se usiamo <p> dobbiamo chiudere con </p>)
(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.
HTML vs XML
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 ?
Un markup con HTML
<p> <b> Sig. Mario Rossi </b>
<br>
Via Verdi, 12
<br>
56100, Pisa
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.
Un semplice markup in XML
<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>
Visualizzazione dell’XML
Come l’HTML
ma anche…
Sig. Mario Rossi
Via Verdi, 12
56100, Pisa
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>
element
<immagine file="immagine1.jpg">
tag
root
</immagine>
</paragrafo>
<paragrafo titolo="Titolo del secondo paragrafo">
<testo>
Blocco di testo del secondo paragrafo
</testo>
<codice>
rappresentazione fisica
Esempio di codice
attributo
del documento XML
</codice>
<testo>
visto prima
Altro blocco di testo
</testo>
</paragrafo>
<paragrafo tipo="bibliografia">
<testo>
Riferimento ad un articolo
elemento paragrafo
</testo>
</paragrafo>
</articolo>
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



di
testo
caratteristiche
specifiche
dell’elemento
tipo=“f”>Francesca</nomepersona>)
(es.<nomepersona
Entità


sezione
Attributi


caratteristiche della partizione logica della
(es.<nomepersona>Francesca</nomepersona>)
riferimento ad
&nomeentità;
oggetti
Testo (detto anche #PCDATA)
Commenti
 Processing Instructions
“esterni”
al
documento.
Convenzione
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>
Attributi

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

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.
DOCUMENTI BEN FORMATI – contenuto


Un documento XML può contenere potenzialmente qualsiasi carattere
dell'alfabeto latino, cifre e punteggiatura.
 normalmente vengono accettati come caratteri validi in un documento
XML i primi 128 caratteri della codifica ASCII (lettere dell'alfabeto latino
minuscole e maiuscole, cifre, segni di punteggiatura, ecc.).
 se un documento contiene caratteri che non rientrano tra questi (es.:
lettere accentate, simboli di valuta, ecc.) è necessario specificare lo
schema di codifica utilizzato.
Lo schema di codifica ed altre informazioni dirette al software
incaricato di elaborare il documento XML sono indicate tramite
elementi speciali detti direttive di elaborazione o processing
instruction.
 ad esempio, la seguente direttiva di elaborazione:
<?xml version="1.0" encoding="iso-8859-1"?>
abilita l'uso del set di caratteri noto come Latin 1 contenente le lettere
accentate.
DOCUMENTI BEN FORMATI – commenti

In un documento XML possiamo trovare i commenti, cioè informazioni
ignorate dai software che lo elaborano.
 Queste note non fanno parte del contenuto del documento, e le
applicazioni XML li ignorano.
 Sono molto comodi per passare informazioni tra un autore e l’altro, o
per trattenere informazioni per se stessi, nel caso le dimenticassimo.

I commenti XML seguono la stessa sintassi dell'HTML, sono cioè
racchiusi tra le sequenze di caratteri <!– e --> e possono trovarsi in
qualsiasi punto del documento.
 <!– bla bla bla -->
DOCUMENTI BEN FORMATI – entità

Potrebbe essere necessario inserire in un documento XML dei
caratteri particolari che potrebbero renderlo non ben formato.
 ad esempio, se dobbiamo inserire del testo che contiene il simbolo <,
corriamo il rischio che possa venire interpretato come l'inizio di un
nuovo tag, come nel seguente esempio:
<testo>
il simbolo < indica minore di
</testo>

Per evitare situazioni di questo tipo, XML prevede degli oggetti
speciali detti entità che consentono di sostituire altri caratteri.
DOCUMENTI BEN FORMATI – entità

Cinque entità sono predefinite e consentono l'uso di altrettanti
caratteri riservati all'interno di un documento:
 &amp; definisce il carattere &
 &lt; definisce il carattere <
 &gt; definisce il carattere >
 &quot; definisce il carattere “
 &apos; definisce il carattere ‘

Sfruttando le entità, l'esempio precedente diventa:
<testo>
il simbolo &lt; indica minore di
</testo>
DOCUMENTI BEN FORMATI – CDATA

In determinate situazioni gli elementi da sostituire con le entità
possono essere molti, il che rischia di rendere illeggibile il testo ad
essere umano.
 si consideri il caso in cui un blocco di testo illustri proprio del codice
XML:
<codice>
<libro>
<capitolo>
</capitolo>
</libro>
</codice>


In questo caso, al posto di sostituire tutte le occorrenze dei simboli
speciali con le corrispondenti entità è possibile utilizzare una sezione
CDATA.
Una sezione CDATA (Character DATA) è un blocco di testo che viene
considerato sempre come testo, anche se contiene codice XML o altri
caratteri speciali.
DOCUMENTI BEN FORMATI – CDATA
Per indicare una sezione CDATA è sufficiente racchiuderla tra le sequenze di
caratteri <![CDATA[ e ]]>.
Il nostro esempio diventerà come segue:
<codice>
<![CDATA[
<libro>
<capitolo>
</capitolo>
</libro>
]]>
</codice>
In certe situazioni non si conosce a priori il contenuto che può essere inserito
in un blocco di testo e pertanto l'utilizzo delle sezioni CDATA risulta
obbligatorio.
DOCUMENTI VALIDI – grammatica





XML offre la libertà di definire i tag a seconda delle necessità, ma per
evitare confusione è necessario un meccanismo che ne vincoli
l'utilizzo all'interno dei documenti. Abbiamo bisogno di definire una
grammatica per il linguaggio di markup che abbiamo ideato.
Una grammatica è un insieme di regole che indica quali vocaboli
(elementi) possono essere utilizzati e con che struttura è possibile
comporre frasi (documenti).
 una grammatica definisce uno specifico linguaggio di markup.
Se un documento XML rispetta le regole definite da una grammatica è
detto valido per un particolare linguaggio.
La caratteristica di documento valido si affianca a quella di documento
ben formato per costruire documenti XML adatti ad essere elaborati
automaticamente.
Un documento ben formato può non essere valido rispetto ad una
grammatica ma non rispetto a un’altra, mentre un documento valido è
necessariamente ben formato.
DOCUMENTI VALIDI – grammatica

Ma come si definisce una grammatica per descrivere un linguaggio di
markup?

Attualmente due sono gli approcci più diffusi alla creazione di
grammatiche per documenti XML:
 Dtd – Document Type Definition
 XML Schema

Questi argomenti saranno affrontati in seguito.
DOCUMENTI VALIDI – tipi di elaborazione

Un documento XML può essere all'origine di diversi tipi di
elaborazione : generazione di altri documenti, eventualmente in
formati diversi, controllo delle impostazioni di programmi,
rappresentazione di immagini, ecc.

Tutti i possibili impieghi di XML, però, si fondano su due tipi di
elaborazione preliminare: la verifica che un documento sia ben
formato e la sua validità rispetto ad una grammatica.

I software che si occupano di queste elaborazioni sono detti parser e
sono degli strumenti standard disponibili sulle diverse piattaforme.
 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).
DOCUMENTI VALIDI – parser

Possiamo suddividere i parser in due categorie (talvolta può essere lo
stesso parser che assume due ruoli):
 parser non validante è un parser che verifica soltanto se un
documento è ben formato




anche in presenza di un DTD è solo in grado di verificare la buona forma del
documento.
In alcune applicazioni, però, non è necessario validare i documenti, solo
verificare la loro buona forma.
parser validante è un parser che, oltre a verificare che un documento è
ben formato, verifica se è corretto rispetto ad una data grammatica
La maggior parte degli editor XML più recenti hanno un parser
integrato o si appoggiano su parser esterni per effettuare la convalida
dei documenti.
Parte IV
Definizione e applicazione di grammatiche
DTD: Document Type Definition



Una caratteristica fondamentale dell'XML è l'estensibilità. L'autore di
un documento XML può creare nuovi tag per descrivere i contenuti
semantici dei propri dati, semplificando il loro scambio fra i gruppi di
persone interessate allo stesso settore.
 Ciò ha portato alla necessità di definire delle regole grammaticali, o
vincoli, alle quali gli elementi devono attenersi.
Queste regole grammaticali sono definite nelle specifiche XML e sono
codificate nel Document Type Definition (DTD).
 da un punto di vista cronologico il DTD rappresenta il primo approccio
per la definizione di grammatiche per documenti XML
Un Dtd è un documento che descrive i tag utilizzabili in un documento
XML, la loro reciproca relazione nei confronti della struttura del
documento e altre informazioni sugli attributi di ciascun tag.
DTD: Document Type Definition




Le regole grammaticali o vincoli specificano:
 qual è l'insieme degli elementi e degli attributi che si possono usare nel
documento XML
 quali sono le relazioni gerarchiche fra gli elementi
 qual è l'ordine in cui gli elementi appariranno nel documento XML
 quali elementi ed attributi sono opzionali
Il DTD definisce quindi gli elementi legali di un documento XML,
stabilisce le regole degli elementi del documento, cioè determina il
suo modello
Quando un documento XML è ben formato e rispetta le regole del DTD
a cui si riferisce si dice che è un documento XML valido.
La sintassi di un DTD si basa principalmente sulla presenza di due
dichiarazioni: <!ELEMENT> e <!ATTLIST>.
 La prima definisce gli elementi utilizzabili nel documento e la struttura
del documento stesso, la seconda definisce la lista di attributi per
ciascun elemento.
DTD - dichiarazione

Un documento XML che usa un DTD deve dichiararlo con una
Document Type Declaration:
<!DOCTYPE nomeElementoRoot
[ eventuale descrizione
della struttura ]>

segue la descrizione degli elementi, racchiusi fra le parentesi quadre
Definito un DTD abbiamo definito la grammatica per un linguaggio di
markup. A questo punto dobbiamo mettere in relazione un documento
XML con il suo DTD , in modo che un parser XML possa verificare non
soltanto la struttura ben formata del documento, ma anche la sua
validità rispetto alla grammatica specificata.
 Esistono due modi per indicare il Dtd cui un documento XML fa
riferimento. Il DTD può essere


in un file esterno al documento XML
incluso nello stesso documento XML
Entità, documenti e considerazioni su
XML
Il primo modo prevede la presenza del Dtd all'interno del documento XML,
come nel seguente esempio:
<?xml version="1.0">
<!DOCTYPE articolo[
...Definizioni del Dtd...
]>
<articolo>
...Contenuto del documento XML...
</articolo>
La dichiarazione <!DOCTYPE> indica che il documento individuato
dall'elemento root <articolo> segue le regole definite tra le parentesi quadre.
sintassi:
<!DOCTYPE elemento-radice
[
dichiarazione-elementi
]>
Entità, documenti e considerazioni su
XML
Il secondo modo prevede che il Dtd sia definito in un file esterno ed il
documento XML abbia un riferimento a tale file, come nel seguente esempio:
<?xml version="1.0">
<!DOCTYPE articolo SYSTEM "articolo.dtd">
In questo caso si fa riferimento al Dtd definito nel file articolo.dtd.
L'indicazione del file contenente il Dtd può essere espressa come URL
assoluto o relativo.
Ad esempio, se il Dtd viene pubblicato su un sito web è possibile specificare il
riferimento al Dtd come nel seguente esempio:
<!DOCTYPE articolo SYSTEM "http://www.myXML.it/articolo.dtd">
sintassi:
<!DOCTYPE elemento-radice SYSTEM "nome-file">
dove nome-file è un file esterno che contiene il DTD per il documento XML
DTD – <!ELEMENT>

<!ELEMENT> definisce gli elementi utilizzabili nel documento e la
struttura del documento stesso
 posso specificare quali sono gli elementi leciti all’interno di un elemento,
in quale numero e quale posizione rispetto agli altri.

Ad esempio, la dichiarazione
 <!ELEMENT articolo(paragrafo+)>
indica che l'elemento <articolo> ha come sottoelemento uno o più
elementi <paragrafo>.

Il carattere '+', dopo il nome del sottoelemento, indica il relativo
numero di occorrenze.
DTD – <!ELEMENT>

Una dichiarazione di elemento può assumere tre forme.

Prima forma: <!ELEMENT NomeElemento (#PCDATA)>

questa è la forma più semplice in cui si dichiara che un elemento può
contenere come valore una qualsiasi stringa di testo; ad esempio:

<!ELEMENT Rubrica (#PCDATA)>

In questo caso il documento XML che fa riferimento al DTD contenente tale
dichiarazione potrà contenere un elemento del tipo:
...
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
...
DTD – <!ELEMENT>

Seconda forma: <!ELEMENT NomeElemento EMPTY>

questa è la forma con la quale si dichiara che un elemento è privo di
valore. In questo caso all'elemento sono sempre associati uno o più
attributi:
<!ELEMENT Numero EMPTY>
<!ATTLIST Numero
Valore CDATA #REQUIRED>

e quindi il documento XML che fa riferimento al DTD contenente tale
dichiarazione potrà contenere un elemento del tipo:
...
<Numero Valore="1"/ >
...
DTD – <!ELEMENT>

Terza forma: <!ELEMENT
ElementoFiglio2, ...)>

NomeElemento
(ElementoFiglio1,
questa è la forma a contenitore in cui si dichiara che un elemento è
composto da sottoelementi (figli) con i quali s'instaura una stretta
gerarchia del tipo padre-figlio.
<!ELEMENT Legge (TitoloLegge, Articolato)>
<!ELEMENT TitoloLegge (#PCDATA)>
<!ELEMENT Articolato (...)>

In questo caso il documento XML che fa riferimento al DTD contenente
tale dichiarazione potrà contenere un elemento del tipo:
<Legge>
<TitoloLegge>Disciplina delle associazioni di promozione
sociale</TitoloLegge>
<Articolato>
...
</Articolato>
</Legge>
DTD – <!ELEMENT>

Quando si usa la terza forma per dichiarare gli elementi, i sottoelementi
possono essere specificati in maniera più articolata utilizzando un insieme di
caratteri speciali che ha lo scopo di indicare il numero di occorrenze di un
elemento. In particolare:
 + (indica che l'elemento è presente una o più volte)
 * (indica che l'elemento è presente zero o più volte)
 ? (indica che l'elemento è presente zero o una sola volta, opzionale)
 se non si specifica niente l’elemento deve comparire solo una volta

Per esempio, la definizione
 <!ELEMENT paragrafo(immagine*, testo+)>
indica che
 l'elemento <paragrafo> contiene la sequenza di elementi <immagine> e
<testo>.
 L'elemento <immagine> può essere presente zero o più volte, mentre <testo>
deve essere presente almeno una volta.
Separatori

Separano specifiche determinando l’ordine o l’obbligatorietà:
 ‘,’ (virgola): richiede la presenza di entrambe le specifiche nell’ordine
precisato.


Es.: (a , b): ci devono essere sia a che b, e prima ci deve essere a e poi b.
‘|’ (barra verticale): ammette la presenza di una sola delle due
specifiche.

Es.: (a | b): ci può essere o a, oppure b, ma solo uno di essi.
Esempio
DTD – <!ELEMENT>
Esiste la possibilità di definire elementi il cui contenuto non è definito
a priori, possono cioè essere vuoti o contenere altri elementi senza
vincoli particolari. Per definire questo tipo di elementi si utilizza la
seguente dichiarazione:
 <!ELEMENT elemento ANY>
Ricapitolando…

<!ELEMENT X ANY>

l’elemento X può contenere qualunque altro elemento specificato nel
DTD, o anche testo
<!ELEMENT X EMPTY>

l’elemento X non può contenere niente. Debbo scrivere il tag con la
sintassi tipica degli elementi vuoti: <X/>
<!ELEMENT X #PCDATA>

l’elemento X può solo contenere testo. E’ proibito mettere altri elementi
al suo interno
<!ELEMENT X (Y, (W | Z)+ , K*)>

l’elemento X può contenere solo elementi secondo la specifica data,
usando i separatori e gli operatori di ripetizione specificati.
<!ELEMENT X (#PCDATA | Y | W | Z)*>





L’elemento X può contenere sia testo sia altri elementi in maniera ed
ordine specificati.
Un esempio
Un
libro, fatto di capitoli e a loro volta di paragrafi.
<!DOCTYPE ROMANZO SYSTEM “romanzo.dtd”>
<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… <INCISO>malridotti,
dal punto di vista della salute, <INCISO>intendo,</INCISO>
naturalmente</INCISO>. </PARA>
<PARA>Ci sentivamo tutti piuttosto giù di corda,</PARA>
</CAPITOLO>…
</ROMANZO>
Il file “romanzo.dtd”
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
ROMANZO
CAPITOLO
TITOLO
AUTORE
ANNO
INDICE
EL
PARA
INCISO
(TITOLO, AUTORE, ANNO, CAPITOLO+)>
(TITOLO, INDICE, PARA+)>
(#PCDATA) >
(#PCDATA) >
(#PCDATA) >
(EL+) >
(#PCDATA) >
(#PCDATA | INCISO) * >
(#PCDATA | INCISO)* >
DTD – <!ATTLIST>

La dichiarazione di attributi all'interno di un DTD identifica:
 quali elementi hanno attributi
 il tipo di attributi
 l'eventuale valore assunto nel caso in cui non venga esplicitamente
assegnato un valore (valore di default)

Una dichiarazione di attributo viene espressa secondo la seguente
sintassi:
<!ATTLIST NomeElemento
NomeAttributo1 TipoAttributo1 ValoreAttributo1
NomeAttributo2 TipoAttributo2 ValoreAttributo2
...
NomeAttributoN TipoAttributoN ValoreAttributoN >
DTD – <!ATTLIST>

ad esempio, la dichiarazione:
 <!ATTLIST articolo titolo CDATA #REQUIRED>
indica che l'elemento <articolo> prevede un attributo titolo che può
averecome valore una qualsiasi combinazione di caratteri (CDATA).


l'indicazione #REQUIRED indica che la presenza dell'attributo è obbligatoria.
I valori di default importanti in XML sono di quattro tipi:
 Valore esplicito: un stringa tra virgolette
 Valore necessario: la keyword #REQUIRED.
 Valore opzionale: la keyword #IMPLIED.
 Valore esplicito e non modificabile: la keyword #FIXED e una stringa
tra virgolette.
DTD – <!ATTLIST>

Se un attributo prevede valori alternativi predefiniti è necessario
specificarli al posto di CDATA, come accade per l'attributo tipo del tag
<paragrafo>
<!ATTLIST paragrafo
titolo CDATA #REQUIRED
tipo (abstract|bibliografia|note) #IMPLIED
>

In questo caso vengono definiti due attributi per l'elemento
<paragrafo> facendo seguire alla definizione del primo attributo
(titolo) quella del secondo (tipo). L'attributo tipo, opzionale, può
assumere uno tra i valori abstract, bibliografia o note.
DTD – <!ATTLIST>
<!ATTLIST
X att CDATA “uno”>
 Il tag iniziale di X può contenere un attributo chiamato “att”. Qualunque
stringa è lecita. Se non viene specificata una stringa, il valore definito per
default è “uno”
<!ATTLIST X att (uno|due|tre)
“due”>
 Il tag iniziale di X può contenere un attributo chiamato “att”. Sono leciti solo i
valori descritti. Se non viene specificata una stringa, il valore definito per
default è “due”
<!ATTLIST X att ID #IMPLIED>
 Il tag iniziale di X può contenere un attributo chiamato “att”. Sono leciti solo
valori unici su tutto il documento. L’elemento X assume identificabilità
assoluta all’interno del documento: è un “luogo notevole”. Poiché il valore
deve essere sempre diverso, non è possibile specificare un valore di default.
<!ATTLIST X att IDREF #IMPLIED>
 Il tag iniziale di X può contenere un attributo chiamato “att”. I valori di “att”
debbono essere uguali ad un valore di un attributo di tipo ID esistente da
qualche parte nel documento.
Esempio, più: attributi ID e IDREF
L’elemento
dell’indice punta al paragrafo che vi si riferisce:
<!DOCTYPE ROMANZO SYSTEM “romanzo.dtd”>
<ROMANZO>
<TITOLO>Tre Uomini in Barca</TITOLO>
<AUTORE>Jerome K. Jerome</AUTORE> <ANNO>1889</ANNO>
<CAPITOLO>
<TITOLO>Capitolo primo</TITOLO>
<INDICE>
<EL p=“uno”>Tre invalidi</EL><EL p=“due”>Le sofferenze di
George e Harris</EL><EL p=“tre”>La vittima di centosette
malattie inguaribili</EL>
</INDICE>
<PARA n=“uno”>Eravamo in quattro: George, William Samuel
Harris, io, e Montmorency. Standocene seduti in camera mia,
fumavamo e parlavamo di quanto fossimo malridotti… <INCISO>
malridotti, dal punto di vista della salute, <INCISO>intendo,
</INCISO> naturalmente</INCISO>. </PARA>
<PARA>Ci sentivamo tutti piuttosto giù di corda,</PARA>
</CAPITOLO>…
</ROMANZO>
Il file “romanzo.dtd”
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ELEMENT
<!ATTLIST
<!ELEMENT
ROMANZO
(TITOLO, AUTORE, ANNO, CAPITOLO+)>
CAPITOLO (TITOLO, INDICE, PARA+)>
TITOLO
(#PCDATA) >
AUTORE
(#PCDATA) >
ANNO
(#PCDATA) >
INDICE
(EL+) >
EL
(#PCDATA) >
EL p IDREF#REQUIRED >
PARA (#PCDATA | INCISO)* >
PARA n ID #IMPLIED >
INCISO
(#PCDATA | INCISO)* >
DTD - Elemento vs Attributo

Un DTD può essere costruito utilizzando soltanto gli elementi oppure
anche gli attributi. Non esiste una regola generale per scegliere l'una o
l'altra soluzione: la scelta dipende dal contesto che si sta
formalizzando.

L'uso degli attributi può comportare alcuni problemi:
 gli attributi non possono contenere valori multipli
 gli attributi non possono descrivere le strutture
 gli attributi sono più difficili da manipolare dagli applicativi
 gli attributi non possono essere vincolati da legami gerarchici fra di loro
Entità




Abbiamo visto come XML preveda degli elementi, detti entità, che
consentono di sostituire caratteri speciali.
Più in generale, una entità consente di sostituire sequenze di caratteri
con nomi speciali della forma & nome;.
È possibile definire entità personalizzate all'interno di un Dtd in modo
da sostituire qualsiasi sequenza di caratteri.
Per definire un'entità personalizzata si utilizza la dichiarazione
<!ENTITY>.

il seguente esempio mostra la definizione di un'entità & html; che
rappresenta un'abbreviazione per la stringa HyperText Markup
Language:
<!ENTITY html "HyperText Markup Language">

grazie a questa dichiarazione possiamo utilizzare l'entità & html; al
posto dell'intera stringa all'interno del documento XML che fa riferimento
a questa grammatica.
Considerazioni



Utilizzando i DTD abbiamo un maggior controllo sulla struttura e
sull'uso dei tag in un documento XML, evitando che la libertà nella
definizione dei tag possa far perdere il controllo sui contenuti.
Tuttavia l'uso dei DTD per definire la grammatica di un linguaggio di
markup non sempre è del tutto soddisfacente.
Il principale problema: il DTD descrive la struttura di un documento e
non il suo contenuto

A parte il fatto che la sintassi utilizzata per definire un DTD non segue
le regole stesse di XML, i DTD non consentono di specificare un tipo
di dato per il valore degli attributi, né di specificare il numero minimo o
massimo di occorrenze di un tag in un documento o altre
caratteristiche che in determinati contesti consentirebbero di ottenere
un controllo ancora più accurato sulla validità di un documento XML.

Queste limitazioni hanno spinto alla definizione di approcci alternativi
per definire grammatiche per documenti XML. Tra questi approcci il
più noto è XML Schema.
XML Schema

Analogamente ad un Dtd, un XML Schema è una descrizione formale
di una grammatica per un linguaggio di markup basato su XML.

XML Schema è stato pensato per fornire quel supporto di validazione
che i DTD permettono solo parzialmente, in particolare sul contenuto
degli elementi e degli attributi del documenti XML.

I DTD non distinguono tra nome del tag e tipo del tag, ed hanno solo
due tipi: complesso (cioè strutturato) e semplice (cioè CDATA o
#PCDATA). XML Schema, invece, fornisce un set complesso di tipi, a
cui i tag e il loro contenuto debbono aderire.

A differenza di un DTD, che utilizza una propria sintassi specifica, un
XML Schema utilizza la stessa sintassi XML per definire la grammatica
di un linguaggio di markup permettendo l’uso di applicazioni XML per
la verifica della validità dei dati espressi.
XML Schema: elementi e struttura

Quindi uno XML Schema è un documento XML che descrive la
grammatica di un linguaggio XML utilizzando un linguaggio di markup
specifico. In quanto documento XML, uno XML Schema ha un root
element che contiene tutte le regole di definizione della grammatica.

La struttura generale di uno schema XML è la seguente:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
... Definizione della grammatica ...
</xs:schema>

L'elemento root del documento è rappresentato dal tag <xs:schema>.
 esso indica al parser che in questo documento saranno utilizzati dei tag
definiti dal namespace standard del W3C.


i namespaces rappresentano un meccanismo per
appartenenti ad una specifica grammatica
questi tag speciali sono caratterizzati dal prefisso xs:
identificare
tag
XML Schema: elementi e struttura

XML schema prevede il tag <xs:element> per la definizione degli
elementi utilizzabili in un documento XML, specificando nell’attributo
name il nome del relativo tag.

All’interno di ciascun tag <xs:element> possiamo indicare il tipo di
dato dell’elemento e possiamo definire gli eventuali attributi

Ad esempio la seguente definizione specifica l’elemento testo che può
contenere solo stringhe
 <xs:element name=“testo” type=“xs:string” />


questa dichiarazione corrisponde alla seguente dichiarazione Dtd
<!ELEMENT testo(#PCDATA)>
TIPO DI DATO

Per comprendere meglio ed apprezzare la potenza degli XML Schema
occorre analizzare il concetto di tipo di dato.

Esistono due categorie di tipi di dato: semplici e complessi.
TIPO DI DATO SEMPLICI



XML Schema introduce il concetto di tipo di dato semplice per definire
gli elementi che non possono contenere altri elementi e non
prevedono attributi.
Si possono usare tipi di dato semplici predefiniti oppure è possibile
personalizzarli.
Sono previsti numerosi tipi di dato predefiniti, alcuni dei quali sono
riportati nella seguente tabella:
TIPO DI DATO SEMPLICI
Ad esempio, la seguente dichiarazione:
<xs:element name="quantita" type="xs:integer" />
permette l'utilizzo dell'elemento quantità in un documento XML consentendo soltanto
un contenuto di tipo intero.
In altre parole, sarà considerato valido l'elemento
<quantita>123</quantita>
Mentre non lo sarà l'elemento
<quantita>uno</quantita>.
TIPO DI DATO SEMPLICI

XML Schema prevede anche la possibilità di definire tipi di dato
semplici personalizzati come derivazione di quelli predefiniti.
 se, ad esempio, abbiamo bisogno di limitare il valore che può essere
assegnato all'elemento <quantita> possiamo definirlo nel seguente
modo:
<xs:element name="quantita" >
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>

In altre parole, la dichiarazione indica che l'elemento <quantita> è di
tipo semplice e prevede una restrizione sul tipo di dato intero predefinito
accettando valori compresi tra 1 e 100.
TIPO DI DATO COMPLESSI



I tipi di dato complessi si riferiscono ad elementi che possono
contenere altri elementi e possono avere attributi.
Definire un elemento di tipo complesso corrisponde a definire la
relativa struttura.
Lo schema generale per la definizione di un elemento di tipo
complesso è il seguente:
<xs:element name="NOME_ELEMENTO">
<xs:complexType>
... Definizione del tipo complesso ...
... Definizione degli attributi ...
</xs:complexType>
</xs:element>
TIPO DI DATO COMPLESSI

Se l'elemento può contenere altri elementi possiamo definire la
sequenza di elementi che possono stare al suo interno utilizzando uno
dei costruttori di tipi complessi previsti:
 <xs:sequence>


<xs:choice>


consente di definire un elenco di sottoelementi alternativi
<xs:all>


consente di definire una sequenza ordinata di sottoelementi
consente di definire una sequenza non ordinata di sottoelementi
Per ciascuno di questi costruttori e per ciascun elemento è possibile
definire il numero di occorrenze previste utilizzando gli attributi
minOccurs e maxOccurs.
TIPO DI DATO COMPLESSI

Ad esempio, se l'elemento testo può essere presente una o infinite
volte all'interno di un paragrafo possiamo esprimere questa
condizione nel seguente modo:
<xs:element name="paragrafo">
<xs:complexType>
<xs:element name="testo" minOccurs="1"
maxOccurs="unbounded"/>
</xs:complexType>
</xs:element>

In questo caso il valore unbounded indica che non è stabilito un
massimo numero di elementi testo che possono stare all'interno di un
paragrafo.
TIPO DI DATO COMPLESSI

Per gli elementi vuoti è prevista una definizione basata sul seguente
schema:
<xs:element name="NOME_ELEMENTO">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xs:anyType" />
... Definizione degli attributi ...
</xs:complexContent>
</xs:complexType>
</xs:element>

In altri termini, un elemento vuoto è considerato un elemento di tipo
complesso il cui contenuto non si basa su nessun tipo predefinito.
TIPO DI DATO COMPLESSI

La definizione degli attributi è basata sull'uso
<xs:attribute>, come nel seguente esempio:
<xs:attribute name="titolo" type="xs:string“
use="required" />
del
tag

L'attributo use consente di specificare alcune caratteristiche come la
presenza obbligatoria (required) o un valore predefinito (default) in
combinazione con l'attributo value.
 ad esempio, la seguente definizione indica un attributo il cui valore di
predefinito è test:
<xs:attribute
name="titolo"
type="xs:string"
use="default" value="test" />

Bisogna tener presente che se non si specifica esplicitamente
l'obbligatorietà dell'attributo, esso è considerato opzionale.
TIPO DI DATO – esempio
Il seguente codice presenta uno XML Schema relativo al linguaggio di descrizione
di articoli tecnici mostrato nei vari esempi.
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="articolo">
<xs:complexType>
<xs:sequence>
<xs:element name="paragrafo" maxOccurs="unbounded">
<xs:complexType>
<xs:all maxOccurs="unbounded">
<xs:element name="immagine" minOccurs="0">
<xs:complexType>
<xs:attribute name="file“ use="required">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="testo"/>
<xs:element name="codice" minOccurs="0"/>
</xs:all>
<xs:attribute name="titolo" type="xs:string"use="optional"/>
TIPO DI DATO – esempio
<xs:attribute name="tipo" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="abstract"/>
<xs:enumeration value="bibliografia"/>
<xs:enumeration value="note"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="titolo" type="xs:string“ use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Questo XML Schema è equivalente al Dtd che abbiamo visto precedentemente
Integrazioni di grammatiche e
namespaces

A partire da una grammatica definita tramite uno XML Schema, è
possibile sfruttare un parser XML validante per verificare la validità di
un documento XML.

Il parser avrà bisogno:
 del documento XML da validare
 dello schema XML rispetto a cui effettuare la validazione
Integrazioni di grammatiche e
namespaces

Ci sono diversi modi per fornire al parser informazioni sullo schema
da utilizzare per la validazione: si può nell'inserire nel documento XML
un riferimento allo schema da usare.
 Ad esempio:
<articolo
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:noNamespaceSchemaLocation="articolo.xsd"
titolo="Guida ad XML"
>

Oltre all’attributo titolo sono stati aggiunti due attributi predefiniti.
 l'attributo xmlns:xsi indica un URL che specifica la modalità con cui si
indicherà il riferimento allo schema XML.
 l'attributo xsi:noNamespaceSchemaLocation indica il nome e
percorso del file contenente lo schema XML di riferimento.
Integrazioni di grammatiche e
namespaces



Una delle caratteristiche auspicabili nella creazione di un nuovo
linguaggio è la possibilità di integrare elementi derivanti da
grammatiche diverse.
Questa caratteristica consente di riutilizzare parti di grammatiche già
definite evitando di dover rifare parte di lavoro già fatto in altri ambiti.
 In questo modo, ad esempio, sarebbe possibile integrare un linguaggio
per la descrizione di articoli tecnici con un linguaggio pre-esistente per
la descrizione di bibliografie, ottenendo un nuovo linguaggio composto.
La composizione di linguaggi pone almeno due tipi di problemi:
 un documento che utilizza due grammatiche presenta il problema della
validazione: a quale schema si deve fare riferimento per validare un
documento XML "ibrido"?
 due linguaggi potrebbero avere tag ed attributi con lo stesso nome,
anche se utilizzabili in contesti diversi: come fare a risolvere questo tipo
di ambiguità?
Integrazioni di grammatiche e
namespaces



La soluzione a questi problemi deriva dai namespace.
Un namespace è un insieme di nomi di elementi e nomi di attributi
identificati univocamente da un identificatore.
L'identificatore univoco individua l'insieme dei nomi distinguendoli da
eventuali omonimie in altri namespace.
 esempio: se nell'ambito di una grammatica per descrivere dei dati
anagrafici è stato definito un elemento indirizzo, questo nome potrebbe
essere confuso con l'elemento indirizzo definito nell'ambito di una
grammatica che descrive messaggi di posta elettronica.
 l'identificatore del relativo namespace consente di distinguere i due
elementi omonimi.
Integrazioni di grammatiche e
namespaces

Concetto non nuovo nell'informatica:
 quando definiamo i nomi dei campi in una tabella di un database
abbiamo definito un namespace.
 non possiamo avere campi con lo stesso nome all'interno di una tabella,
ma possiamo avere gli stessi nomi in tabelle diverse.
 possiamo risolvere l'ambiguità tra due campi omonimi facendoli
precedere dal nome della tabella (il namespace).

Un XML schema definisce implicitamente un namespace degli
elementi e degli attributi che possono essere usati in un documento
XML
Se in un documento XML si utilizzano elementi definiti in schemi
diversi abbiamo bisogno di un meccanismo che permetta di
identificare ciascun namespace e il relativo XML Schema che lo
definisce.

Sintassi dei namespace

In un documento XML si fa riferimento ad un namespace utilizzando
un attributo speciale (xmlns) associato al root element, come nel
seguente esempio:
 <articolo xmlns="http://www.dominio.it/xml/articolo">
 questo indica che l'elemento articolo ed i suoi sottoelementi utilizzano i
nomi
definiti
nel
namespace
identificato
dall'identificatore
http://www.dominio.it/xml/articolo.

L'identificatore di un namespace può essere rappresentato da una
qualsiasi stringa, purché sia univoca. Proprio per garantirne
l'univocità, è prassi ormai consolidata utilizzare un URI (Uniform
Resource Identifier) come identificatore.
 non è necessario che l'indirizzo specificato come identificatore di
namespace corrisponda ad un file pubblicato sul Web.
Sintassi dei namespace

Per mettere in relazione un namespace con il relativo XML Schema occorre
dichiararlo nel root element come nel seguente esempio:
<articolo
xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance"
xmlns="http://www.dominio.it/xml/articolo"
xmlns="http://www.dominio.it/xml/bibliografia"
xsi:schemaLocation="http://www.dominio.it/xml/articolo
articolo.xsd"
xsi:schemaLocation="http://www.dominio.it/xml/bibliografia
bibliografia.xsd"
>
 l'attributo xmlns:xsi specifica la modalità con cui viene indicato il riferimento
allo schema.
 l'attributo xsi:schemaLocation indica il namespace ed il file in cui è definito il
relativo XML Schema separati da uno spazio.
Sintassi dei namespace

È possibile combinare più namespace facendo in modo che ciascun
elemento utilizzato faccia riferimento al proprio namespace.

Occorre tener presente che quando si fa riferimento ad un namespace,
questo riferimento vale per l'elemento corrente e per tutti gli elementi
contenuti, a meno che non venga specificato un diverso namespace.
Sintassi dei namespace
Il seguente utilizza elementi di due diversi namespace: uno relativo alla grammatica
della struttura di un articolo e l'altro relativo alla grammatica di bibliografie:
<articolo xmlns="http://www.dominio.it/xml/articolo" titolo="Guida ad XML">
<paragrafo titolo="Introduzione">
<testo>
bla bla bla
</testo>
</paragrafo>
<paragrafo titolo="Bibliografia">
<bibliografia
xmlns="http://www.dominio.it/xml/bibliografia">
<autore>
Tizio
</autore>
<titolo>
Opera citata
</titolo>
<anno>
1999
</anno>
</bibliografia>
</paragrafo>
</articolo>
Sintassi dei namespace



Riportare il riferimento ad un namespace per ogni elemento è di solito
scomodo e rende di difficile lettura il documento XML.
È possibile creare delle abbreviazioni per fare riferimento ai
namespace.
Queste abbreviazioni sono costituite da caratteri alfanumerici seguiti
da due punti (:) dichiarati nel root element ed utilizzati come prefissi
dei nomi degli elementi.
Sintassi dei namespace
Il seguente esempio riporta il codice XML precedente facendo uso di questi prefissi:
<art:articolo titolo="Guida ad XML"
xmlns:art="http://www.dominio.it/xml/articolo"
xmlns:bibl="http://www.dominio.it/xml/bibliografia" >
<art:paragrafo titolo="Introduzione">
<art:testo>
bla bla bla
</art:testo>
</art:paragrafo>
<art:paragrafo titolo="Bibliografia">
Le dichiarazioni
<bibl:bibliografia>
xmlns:art
<bibl:autore>
Tizio
xmlns:bibl
</bibl:autore>
assegnano i prefissi
<bibl:titolo>
art:
Opera citata
bibl:
</bibl:titolo>
<bibl:anno>
ai relativi namespace e questi
1999
prefissi vengono utilizzati per
</bibl:anno>
ciascun elemento del documento
</bibl:bibliografia>
</art:paragrafo>
XML.
</art:articolo>
Parte V
Modelli di presentazione dei documenti XML
Presentazione di XML con CSS

A differenza di HTML, che è un linguaggio specifico di strutturazione e
presentazione di documenti, XML è più generale e non ha una
semantica di presentazione .

Non è previsto alcun meccanismo predefinito per visualizzare i vari
elementi di un documento.
 ad esempio, un documento XML visualizzato in un browser appare
generalmente così com'è, al massimo con una indentazione e una
colorazione dei tag impostata dal browser.
Fogli di stile


Un foglio di stile è un documento separato che contiene regole di
formattazione e visualizzazione per un documento XML o HTML.
Quale è il vantaggio di separare lo stile dai contenuti?
 Un foglio di stile può essere utilizzato per controllare molti documenti
contemporaneamente e quindi permette di applicare modifiche di
formattazione in modo veloce ed accurato intervenendo soltanto nel
documento che contiene le regole di visualizzazione.
 In un foglio di stile sono specificate tutte le regole di formattazione che
verranno applicate ai documenti di un intero sito Web.
 Nella gestione di un sito Web complesso, ad esempio, è possibile
personalizzare i punti degli elenchi, o impostare diverse dimensioni di
carattere semplicemente modificando il foglio di stile invece che tutte le
pagine del sito.
Fogli di stile

Esistono due tipi di fogli di stile:
 i fogli di stile CSS (Cascading Style Sheets);
 i fogli di stile XSL (eXtensible Stylesheet Language)

I fogli di stile CSS applicano le regole di formattazione direttamente al
contenuto del documento per creare i risultati desiderati e possono
essere utilizzati sia con i documenti HTML sia con i documenti XML.
I fogli di stile XSL eseguono invece una trasformazione del contenuto
del documento e possono essere usati solo con documenti XML.


Un'altra differenza significativa consiste nel fatto che i CSS
contengono solo regole di formattazione, mentre i fogli XSL
contengono anche regole di trasformazione.
Presentazione di XML con CSS

Importante differenza tra l'utilizzo dei CSS per formattare documenti
HTML e il loro uso per i documenti XML.

In HTML la maggior parte dei tag ha una formattazione predefinita e
pertanto un foglio di stile CSS consente di ridefinire tali impostazioni.

In XML i tag non hanno alcun significato di formattazione, pertanto è
necessario specificare tutto.
Presentazione di XML con CSS

E’ possibile utilizzare i CSS in modo analogo a come si utilizzano con
HTML.

Nel documento XML bisogna indicare (catalog_with_css.xml):
<?xml version="1.0"?>
<?xml-stylesheet type="text/css” href="catalog.css"?>

Per ciascun elemento del documento XML che vogliamo formattare
occorre definire una regola secondo lo schema:
selettore { proprietà: valore; proprietà: valore; ... }

il selettore specifica a quale elemento la regola deve essere applicata,
mentre la parte racchiusa tra parentesi graffe elenca le caratteristiche
da impostare e il relativo valore.
Presentazione di XML con CSS

Per strutturare visivamente il documento dobbiamo indicare la modalità di
visualizzazione di ciascun elemento tramite la proprietà display di CSS.
 ad esempio, per formattare l'elemento paragrafo di un articolo possiamo definire
una regola come la seguente:
 paragrafo {display: block; font-size: 12pt; text-align:
left}

Generalmente un foglio di stile CSS da applicare ad un documento XML viene
salvato in un file di testo con estensione .css (l'estensione usata è irrilevante).
 nel documento XML possiamo quindi inserire un riferimento ad esso mediante
un’apposita direttiva di elaborazione, come nel seguente esempio:
 <?xml- stylesheet type="text/css" href="stile.css" ?>

questa dichiarazione fa in modo che un browser abilitato applichi le impostazioni del
foglio di stile CSS specificato al documento XML.
Presentazione di XML con CSS


Raggruppamento
 I selettori possono essere raggruppati fra di loro, separandoli con una
virgola. Ad esempio, sempre per un documento HTML, possiamo scrivere:
 h1, h2, h3, h4, h5, h6 {color: green}
 per avere dello stesso colore i tag di struttura da h1 a h6.
L'attributo classe (class)
 Per mezzo dell'attributo class si possono definire diversi stili per lo stesso
elemento. Supponiamo di volere, per un documento HTML, due tipi diversi di
paragrafo: uno con allineamento a destra e l'altro con allineamento centrato. Qui
di seguito sono indicate le linee per la definizione del foglio di stile:
 p.right {text-align: right}
 p.center {text-align: center}
 mentre qui sotto viene ilustrato come usare l'attributo class nel documento:
 <p class="right">Questo è un paragrafo. Il testo in questo paragrafo sarà
allineato a destra.</p>
 <p class="center">Questo è un paragrafo. Il testo in questo paragrafo sarà
centrato.</p>
Presentazione di XML con CSS

L'attributo id
 Con l'attributo id si può definire uno stile unico da usare con più
elementi.
 Di seguito viene indicata la riga per la definizione del foglio di stile:


Qui sotto si mostra come si deve usare l'attributo id nel documento:



#right {text-align: right}
<p id="right">Questo è un paragrafo. Il testo in questo paragrafo sarà
allineato a destra.</p>
<h3 id="right">Questo è un titolo; anche questo titolo sarà allineato a
destra.</h3>
L'attributo id deve avere un unico valore nel documento.
Presentazione di XML con CSS

I fogli di stile CSS sono pensati principalmente per il Web e mancano
pertanto di alcune caratteristiche che possono risultare utili in ambiti
diversi.
 ad esempio, per la presentazione su supporti cartacei occorrerebbero
maggiori funzionalità per l'impaginazione.

Tra le principali limitazioni, non è prevista la possibilità di estrarre il
valore degli attributi degli elementi in modo da poterli visualizzare.

Per risolvere questi problemi il W3C ha definito un insieme di
specifiche volte a gestire in maniera altamente flessibile la
presentazione e la trasformazio ne di documenti XML: l'eXtensible
Stylesheet Language (XSL).
XSL: eXtensible Stylesheet Language



L'eXtensible Stylesheet Language (XSL) è un insieme di tre linguaggi
che forniscono gli strumenti per l'elaborazione e la presentazione di
documenti XML in maniera molto flessibile.
La definizione di questa tecnologia si basa sull'osservazione del
processo di presentazione di dati di qualsiasi natura.
Possiamo individuare i seguenti meccanismi di base:
 un meccanismo per l'individuazione dei dati da presentare
 un meccanismo per il controllo dell'elaborazione dei dati e di come la
presentazione deve essere effettuata
 un meccanismo per la definizione della formattazione da applicare ai
dati per la presentazione vera e propria
XSL: eXtensible Stylesheet Language

A ciascuno di questi tre meccanismi, XSL associa uno specifico
linguaggio:
 XPath consente di individuare gli elementi e gli attributi di un
documento XML sui quali verranno applicate le operazioni necessarie
per la presentazione dei dati
 XSLT (XSL transformation) consente di controllare le operazioni che
rendono i dati presentabili; linguaggio per descrivere come trasformare
e impaginare i documenti XML in altri documenti XML, HTML o TXT
 XSL-FO (XSL Formatting Objects) definisce un insieme di tag di
formattazione; linguaggio per trasformare e impaginare i documenti
XML in PDF, PostScript, SVG

Es. Se i dati di fatturazione sono in XML, posso ottenere la fattura in PDF
con una trasformazione XSL-FO
XSL: eXtensible Stylesheet Language

Questa suddivisione dei compiti nel processo di presentazione è il
punto di forza di XSL e ne garantisce la flessibilità.
 questi tre linguaggi non sono strettamente dipendenti l'uno dall'altro.

Se, ad esempio, in una particolare applicazione ci rendiamo conto che
XPath non soddisfa le nostre esigenze di ricerca di elementi in un
documento XML, potremmo utilizzare linguaggio analogo (XQL, per
citarne uno) ma senza modificare la presentazione dei caratteri.

Oppure potremmo decidere di non utilizzare affatto XSL-FO per
formattare i dati di un documento XML e produrre direttamente codice
HTML, o meglio XHTML, cioè la versione di HTML basata su XML.
XSL: eXtensible Stylesheet Language

Poiché un foglio di stile XSL è a sua volta un documento XML, deve
iniziare con la dichiarazione <?xml version="1.0"?>.

Inoltre conterrà in sequenza le seguenti due righe:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WDxsl">
<xsl:template match="/">

La prima definisce l'inizio del foglio di stile, mentre la seconda definisce
l'inizio di un modello (template), che individua la parte di documento
XML a cui applicare le regole di trasformazione. Tutti i tag che fanno
parte di un documento XSL iniziano con il suffisso "xsl:" e sono detti
direttive.
XSL: eXtensible Stylesheet Language

La presentazione dei dati racchiusi in un documento XML è basata su
due elementi:
 un documento che descrive come i dati devono essere elaborati per la
presentazione, chiamato foglio di stile XSLT
 un componente software, chiamato processore XSLT, in grado di
prendere in input un documento XML e un foglio di stile XSLT e di
produrre in output i dati secondo il formato di presentazione prescelto
(XSL-FO, XHTML, testo, ecc.)


XSLT usa le espressioni di Xpath per localizzare i nodi del documento XML
che devono subire il trattamento
La definizione di un foglio di stile XSLT è quindi il punto cruciale della
presentazione dei dati XML.
 le regole di trasformazione presenti in un foglio XSLT consentono di
selezionare gli elementi di un documento XML e di gestirne la modalità
di presentazione.
XPath: espressioni e funzioni

Individuare gli elementi di un documento XML rappresenta il primo
passo di un'elaborazione per la presentazione dei dati.

Nei CSS questo ruolo è svolto dal selettore, cioè l'elemento sintattico
di una regola CSS che individua gli elementi da formattare.
In XSL questo passo viene descritto tramite il linguaggio XPath.
 a differenza dei selettori CSS, XPath è molto più potente e flessibile.


Questo linguaggio consente di creare espressioni dichiarative,
chiamate espressioni XPath o pattern, che individuano i vari nodi
dell'albero di rappresentazione di un documento XML.
XPath: espressioni e funzioni
<?xml version="1.0" ?>
<articolo titolo="">
<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>
</articolo>
XPath: espressioni e funzioni




Per individuare l'elemento <testo> all'interno del nostro esempio di documento
XML dobbiamo specificare un percorso di questo tipo:
 /articolo/paragrafo/testo
Se siamo interessati all'attributo titolo dell'elemento <paragrafo> possiamo
specificarlo nel modo seguente:
 /articolo/paragrafo/@titolo
Queste espressioni, però, individuano il primo elemento che corrisponde al
percorso.
Per selezionare uno specifico elemento, ad esempio il paragrafo con titolo
Titolo del secondo paragrafo, possiamo farlo con l'espressione seguente:
 /articolo/paragrafo/[@titolo=“Titolo del secondo paragrafo”]

In pratica, all'interno delle parentesi quadre specifichiamo la condizione che deve
essere soddisfatta dall'elemento.
XPath: espressioni e funzioni

Per selezionare un elemento specifico è possibile utilizzare anche
alcune funzioni predefinite, come position(), che specifica la posizione
di un elemento, e last(), che specifica l'ultima posizione di una
sequenza di elementi.
 ad esempio, le due espressioni seguenti specificano rispettivamente il
secondo paragrafo e l'ultimo paragrafo dell'articolo:


/articolo/paragrafo[position()=2]
/articolo/paragrafo[position()=last()]
Fogli di stile XSLT

Nell'ambito dello standard XSL il compito di trasformare un
documento XML in un altro documento è affidato al linguaggio XSLT.

Nella terminologia di XSLT, il documento da trasformare è chiamato
documento origine (source document), mentre il documento generato
dal processo di trasformazione è chiamato documento risultante
(result document).
 il documento risultante di una trasformazione XSLT può essere un
documento XML o un documento di altro tipo.

ad esempio, a partire da un documento XML possiamo generare un
documento XHTML oppure un documento WML o anche RTF o altri formati
testuali.
Fogli di stile XSLT

La trasformazione avviene in base alle informazioni contenute in un
particolare tipo di documento e interpretate da un processore XSLT.
Questo documento di trasformazione, chiamato foglio di stile XSLT,
non è altro che un documento XML che fa uso di tag appartenenti alla
grammatica di XSLT in grado di controllare il processo di
trasformazione.
 In generale, un foglio di stile XSLT ha la seguente struttura :
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/transorm">
... template di trasformazione ...
</xsl:stylesheet>

Fogli di stile XSLT

All'interno del root element <xsl:stylesheet> vengono definite le istruzioni
di trasformazione da applicare al documento XML origine.

XSLT consente di trasformare ciascun elemento del documento XML di origine
in un altro elemento del formato del documento risultante.

È possibile anche aggiungere al documento risultante elementi completamente
nuovi o non prendere in considerazione determinati elementi del documento
origine, riordinare gli elementi, fare elaborazioni in base al risultato di
determinate condizioni, ecc.

Il processo di trasformazione controllato da XSLT si basa sull'uso del
linguaggio XPath per individuare gli elementi del documento origine, sui quali
viene applicato un template (o modello) di trasformazione.
Fogli di stile XSLT



Da un punto di vista sintattico, un template è un elemento del
linguaggio XSLT che ha la seguente forma di base:
<xsl:template match="espressione XPath">
... Definizione dell’output...
</xsl:template>
Un template XSLT individua un elemento o un insieme di elementi di
un documento XML sfruttando un’espressione XPath e vi applica una
serie di elaborazioni per ottenere un output.
 normalmente le stringhe prodotte dal XSL sono istruzioni di HTML in
modo da costituire un documento HTML interpretabile da un browser
Un foglio di stile XSLT non è altro che un insieme di template da
applicare ai vari elementi di un documento XML.
 comprendere come avviene l'applicazione dei template di un foglio di
stile XSLT da parte del relativo processore è un elemento essenziale
per realizzare fogli di stile corretti.
Esempio
Il template trasforma dinamicamente il documento XML in un documento
HTML
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE> ... </TITLE>
</HEAD>
<BODY>
...
</xsl:template>
</xsl:stylesheet>
Fogli di stile XSLT



Il processore XSLT va alla ricerca dei template da applicare partendo dal root
element e seguendo l'albero di rappresentazione logica del documento stesso.
In linea di principio, con l'applicazione del relativo template al root element
termina il compito del processore XSLT.
Se il foglio di stile contiene diversi template che devono essere applicati ai vari
elementi del documento XML di partenza è necessario specificarlo
esplicitamente.
 questo può essere fatto specificando all'interno del template corrente l'elemento
<xsl:applytemplates/>.

questo tag indica al parser di continuare a scandire il documento XSL
alla ricerca di altri modelli da applicare i da applicare ai nodi sottostanti,
o
Fogli di stile XSLT

Non è importante l'ordine con cui sono stati specificati i template
all'interno del foglio di stile; sarà il processore ad individuarli in base
all'espressione XPath associata.
 ad esempio, un possibile template del root element che avvia la
trasformazione di un articolo può essere analogo al seguente:
<xsl:template match="/">
<xsl:value-of select="articolo/@titolo"/>
<xsl:apply-templates/>
</xsl:template>

Questo template estrae il titolo dell'articolo ed indica al processore
XSLT di cercare altri template da applicare al documento XML.
Fogli di stile XSLT

<xsl:value-of>

direttiva XSL più importante per l'estrazione dei dati da un file XML
 una volta che tale direttiva è applicata ad un certo nodo, se questo
contiene altri nodi, il parser li esplicita comunque restituendone il
contenuto, separandolo con spazi. Questa sintassi viene usata per
selezionare gli elementi del documento XML da sottoporre alla
trasformazione XSL.
 Ad esempio:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE><xsl:value-of select="Legge/TitoloLegge"/></TITLE>
</HEAD>
<BODY>
...
</xsl:template>
</xsl:stylesheet>
Fogli di stile XSLT

<xsl:for-each select="condizione">

Questa direttiva viene usata per selezionare ogni elemento del
documento XML che verifica la condizione specificata dalla select.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE><xsl:value-of select="Legge/TitoloLegge"/></TITLE>
</HEAD>
<BODY>
...
<xsl:for-each select="Legge/Articolato/Articolo">
<p
align="center"><B><font
color="#008080">Art.
select="Num"/><BR/>
<xsl:value-of select="Rubrica"/></font></B></p>
...
</xsl:for-each>
...
</xsl:template>
</xsl:stylesheet>
<xsl:value-of
Fogli di stile XSLT


Elaborazione degli attributi
I fogli di stile XSL permettono anche di gestire, in maniera potente e
flessibile, gli attributi degli elementi XML, facendo precedere il nome
dell'attributo dal simbolo "@".
<xsl:template match="/">
<!--Apply template to everything starting from the root node-->
<HTML>
<HEAD>
<TITLE>Legge n.<xsl:value-ofselect="Legge/Intestazione/@NumeroLegge"/>
del <xsl:value-of select="Legge/Intestazione/Data"/></TITLE>
</HEAD>
<BODY>
Esempio


esempi\cdcatalog_xsl.xml
esempi\cdcatalog_xsl.xsl
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="CATALOG/CD/TITLE"/>
*************
<xsl:value-of select="CATALOG/CD/ARTIST"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Esempio

Per stampare il contenuto di un nodo del documento XML, si usano
normalmente il tag <xsl:value-of, insieme all’attributo select.
 <xsl:value-of: produce il contenuto di un nodo, individuato
dall’attributo select
 select=“espressione”: identifica l’insieme di nodi del documento
XML sorgente il cui contenuto deve essere inserito in questa posizione.



Es.: <xsl:value-of select="CATALOG/CD/TITLE"/>
Se piu’ nodi soddisfano l’espressione, viene considerato solo il primo
nodo, a meno che non si usi <xsl:for-each
L’elemento <xsl:value-of e’ EMPTY, cioe’ non ha contenuto, quindi
si puo’ usare la chiusura abbreviata:
 <xsl:value-of select="TITLE"/>
Applicazioni

XML viene applicato in numerosi campi e per vari scopi: archiviazione
elettronica e gestione dei contenuti documentali, pubblicazione su
web, scambio di documenti elettronici, formati interni per strumenti
software, nel commercio elettronico, nell.apprendimento e in molti altri
campi.
 tra i settori meno ovvi ci sono quelli relativi alla chimica, alla biologia,
alla teologia, al turismo, alla giurisprudenza e alla salute pubblica.

XML è uno standard nato nel mondo Web ma che è utilizzato sia
dentro che fuori il Web stesso.
 è un modo di rappresentazione dei dati che devono circolare su Internet
ed è non legato necessariamente, quindi, al loro modo di presentazione
attraverso un browser.
XML e giornalismo

Il Giornalismo è un classico esempio di dominio applicativo in cui
l’XML sta producendo dei cambiamenti nel modo di lavorare.

Negli anni settanta i progressi nel campo dei computer e delle
telecomunicazioni per lo scambio e l’archiviazione dei documenti ha
portato all’automazione dei processi di lavoro in molti campi, incluso il
giornalismo. In quegli anni erano stati sviluppati dei formati di
descrizione degli articoli che permettevano lo scambio e
l’archiviazione elettronica dei documenti

Un articolo codificato in uno di questi formati contiene il testo
dell’articolo (sono supportati solo articoli in formato testo), i campi, le
categorie e gli indici aggiuntivi come per esempio l’identificativo
numerico, la data, la sezione, la priorità.
XML e giornalismo



L’evoluzione della tecnologia (Internet, multimedialità etc.) e
l’aumentata attività giornalistica sta rendendo questi formati sempre
più antiquati.
Di seguito un elenco delle carenze segnalate per questi formati:
 Non supportano la descrizione di contenuti multimediali
 Non hanno metadati per agevolare la classificazione e la ricerca degli
articoli ( ricerche per persone, luoghi etc)
 Le categorie di indici disponibili mancano di dettaglio
 Non supportano l’intero ciclo di vita di un articolo, per esempio non e’
possibile identificare l’autore di un articolo, includere quale versione e’
attualmente disponibile chi l’ha ricevuta.
 Non permettono collegamenti ad altri articoli correlati
 Non permettono la composizione degli articoli (per esempio associare
una fotografia al testo dell’articolo).
Per rispondere a queste necessità le organizzazioni per gli standard
giornalistici hanno deciso di sviluppare nuovi standard basati su
applicazioni XML.
Un esempio: XMLNews (1)

XMLNews definisce il contenuto testuale e le meta-informazioni di
notizie da agenzia stampa.
 E’ una parte dello standard denominato News Industry Text Format
(NITF), sviluppato dal International Press Telecommunications Council
(IPTC) e dalla Newspaper Association of America.


NITF è stato il primo standard XML sviluppato dall’IPTC negli anni novanta.
NITF è una applicazione XML per la descrizione di articoli in formato
testuale, sebbene possa contenere oggetti multimediali. Questo linguaggio
mira a superare alcune delle caremze che sono state identificate negli
standard definiti in precedenza in quanto incorpora molti elementi di
metadati
XMLNews è composto di due parti:
 XMLNews-Story è un DTD XML per descrivere in maniera variamente
arricchita il testo delle notizie
 XMLNews-Meta definisce il formato delle meta-informazioni per notizie
d’agenzia. E’ conforme al Resource Description Framework (RDF), e
non si riferisce solo alle notizie testuali, ma anche a immagini, videoclip, ecc.
Un esempio: XMLNews (2)

XMLNews-Story: il testo di una notizia di agenzia è diviso in tre parti: l’head contiene
informazioni di organizzazione, mentre il body è a sua volta diviso in intestazione e contenuto.
<?xml version="1.0"?>
<nitf>
<head> <title>Colombia Earthquake</title> </head>
<body>
<body.head>
<hedline><hl1>143 Dead in Earthquake</hl1></hedline>
<byline><bytag>By Jared Kotler, AP </bytag></byline>
<dateline>
<location>Bogota, Colombia</location>
<story.date>January 25 1999 7:28 ET</story.date>
</dateline>
</body.head>
<body.content> … </body.content>
</body>
</nitf>
Un esempio: XMLNews (3)

XMLNews-Story: Il body ha un markup minimale di struttura del testo:
<?xml version="1.0"?>
<nitf> <head> … </head> <body> <body.head> … </body.head>
<body.content>
<p>Un terremoto ha colpito la Colombia occidentale
lunedì, uccidendo almeno 143 persone e ferendone
più di 900 mentre scoperchiava edifici nella zona
delle coltivazioni di caffè più ricca e fertile
della nazione. Gli addetti alla difesa civile sono
immediatamente intervenuti.</p>
<p>Il terremoto è avvenuto nel primo pomeriggio, con
una magnitudine del 6 grado, secondo il Geological
Survey Americano, in Golden, Colorado. L’epicentro
è stato identificato nella valle dello stato del
Cauca, a 210 chilometri a ovest della capitale,
Bogotà.</p>
</body.content> </body>
</nitf>
Un esempio: XMLNews (4)



XMLNews-Story: Però è possibile in qualunque momento aggiungere
informazioni inline:
<p>Un <event>terremoto</event> ha colpito la <location>
<country>Colombia</country> occidentale</location>
<chron norm=“19990125”>Lunedì</chron>, uccidendo
almeno 143 persone e ferendone più di 900 mentre
scoperchiava edifici nella zona delle coltivazioni
di caffè più ricca e fertile della nazione. Gli
<function>addetti alla difesa civile</function>
sono immediatamente intervenuti.</p>
Questo permette di arricchire la storia con altre informazioni in maniera semiautomatica:
 nella ricerca: è possibile cercare tutto quello che è successo in Colombia, o cosa
è successo in una certa data.
 nella presentazione: un provider potrebbe fornire semi-automaticamente dei link
o delle cartine della Colombia.
 nell’organizzazione delle news: è possibile cercare tutti i terremoti effettivi, e non
le notizie che ne usano la parola, magari figurativamente.
Un esempio: XMLNews (5)


XMLNews-Meta: Assieme ad ogni notizia, vengono scritte delle
informazioni sulla notizia, che possono avere una distribuzione
separata.
XMLNews-Meta permette di gestire insieme informazioni come:
 Informazioni sul contenuto della notizia (titolo, lingua, formato, ecc.)
 Informazioni sulle date della notizia: creazione, pubblicazione,
scadenza, ecc.
 Informazioni sulla provenienza ed attendibilità della notizia
 Informazioni sui possessori dei diritti di distribuzione e copyright
 Informazioni di classificazione ed organizzazione
 Link a documenti connessi: versioni precedenti, seguenti, ed altre
notizie connesse.
Modello di attività giornalistica basato su
XML.


Le attività giornalistiche possono essere così suddivise
 Creazione di un articolo fatta da un cronista (nella maggior parte dei
casi per conto di una agenzia di informazione).
 Selezione degli articoli da pubblicare (effettuata di solito, da una
redazione).
 Impaginatura degli articoli diversa per un giornale cartaceo o per uno
elettronico.
Attualmente i contenuti delle notizie prodotte in una agenzia sono
principalmente in formato testuale, di solito disponibile ai media
attraverso dei database.
 Gli articoli sono creati usando un formato di descrizione delle notizie
(per esempio ANPA 1312) che, tra le altre limitazioni, non ammette i
contenuti multimediali.
Modello di attività giornalistica basato su
XML.




Una redazione, dopo aver selezionato quali articoli pubblicare tra
quelli resi disponibili dalle agenzie e dalle altre risorse, stabilisce
l’impaginazione del giornale sia per la versione cartacea che per
quella elettronica.
L’agenzia di informazioni diverrà una agenzia di informazioni
multimediali in grado di produrre notizie con contenuti in tutti i formati
digitali (testo, immagine, audio, video, grafica e animazione
computerizzata).
Il contenuto giornalistico sarà contrassegnato usando l’applicazione
standard dell’XML e archiviato in un database XML che conterrà i
contenuti di notizie passate e presenti.
I News Media saranno in grado di fare ricerche simultanee sulle basi
dati di differenti agenzie, sfruttando il fato che tutti saranno in grado di
usare lo stesso formato per le notizie. Il supporto di metadati
permetterà ricerche molto più intelligenti ed efficienti.
Modello di attività giornalistica basato su
XML.




Il giornale sarà creato usando le notizie in formato XML delle altre
agenzie o preparate dalla redazione stessa.
Usando differenti fogli di stile sarà possibile creare in modo
automatico diverse versioni del giornale per le distinte piattaforme:
cartacea per la distribuzione tradizionale, HTML per chi accede dal
Web, WML per i telefoni cellulari e la televisione digitale.
Il giornale potrebbe offrire all’utente finale un database di notizie
giornaliere che potrebbero avere una copertura molto più ampia di
quella tradizionale.
L’utente finale potrebbe registrare le sue preferenze sul server del
giornale e accedendo al database delle notizie il server potrebbe
scegliere quelle che più si avvicinano alle preferenze dell’utente finale.
Influenza di XML sul WWW



XHTML sta sostituendo HTML
I blog si basano su feed RSS (o ATOM), che sono documenti XML
I siti di informazione diffondono le notizie con XML e RSS: Corriere
della Sera, Repubblica, CNN
XHTML: NextGen HTML
<?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns="http://www.w3.org/TR/xhtml1" >
<head>
<title> Title of text XHTML Document </title>
</head>
<body>
<div class="myDiv">
<h1> Heading of Page </h1>
<p> here is a paragraph of text. I will include inside this
paragraph
a bunch of wonky text so that it looks fancy. </p>
<p>Here is another paragraph with <em>inline
emphasized</em>
text, and <b> absolutely no</b> sense of humor. </p>
<p>And another paragraph, this one with an <img
src="image.gif"
alt="waste of time" />
image, and a <br /> line
break. </p>
</div>
</body></html>
XHTML and other Data
<?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns="http://www.w3.org/TR/xhtml1" >
<head>
<title> Title of XHTML Document </title>
</head><body>
<div class="myDiv">
<h1> Heading of Page </h1>
<mathml xmlns=“http://www.w3.org/TR/mathml”>
… MathML markup …
</mathml>
<p> more html stuff goes here </p>
<smil xmlns=“http://www.w3.org/TR/smil1”>
… SMIL markup …
</smil>
</div>
</body></html>
RSS

RSS (acronimo di RDF Site Summary ed anche di Really Simple
Syndication) è uno dei più popolari formati per la
distribuzione di contenuti Web

Linguaggio basato su XML, nato tra il 1997 e il 1999
 da XML ha ereditato la semplicità, l‘ estensibilità e la flessibilità.

Permette la visualizzazione su portali e siti web di headline e link
relativi a notizie pubblicate su altri siti
I progenitori erano le newsletter

Come funzionano?

Un documento XML è pubblicato e aggiornato continuamente

Ci si “iscrive” al feed mediante un reader indicando l’URL del
documento XML
 http://www.google.com/reader/view
I reader sono in grado di cercare e segnalare automaticamente nuovi
aggiornamenti quando disponibili per i feed sottoscritti
 programmi client
 via browser

Syndication



I siti possono utilizzare il documento XML per aggiornare
dinamicamente le proprie pagine (syndication)
Syndication indica la distribuzione di contenuti internet attraverso
appositi canali, di norma rappresentati da feed
Il verbo che ne deriva, to Syndicate, indica l'azione di un sito di
mettere a disposizione sezioni o interi contenuti attraverso feed
Vantaggi



Evitano di dover aprire i diversi siti solo testo
Nuova modalità di consumo delle news online, come una prima pagina
costruita dall’utente
La diffusione dipenderà dall’evoluzione delle interfacce di facilitazione
alla navigazione on line
RSS e giornalismo
Gli
RSS sono utilizzati
anche dai
giornali on
line, The New York
Times, ABSCnews, La
Repubblica, Corriere
Podcast e podcasting



Un podcast è una registrazione digitale audio o video, scaricabile
automaticamente da un apposito programma (un client) messa a
disposizione su Internet per chiunque si abboni ad una trasmissione
periodica
Il Podcasting è un neologismo basato sulla fusione di due parole: iPod
e broadcasting
Il termine nacque quando l'uso dei feed RSS divenne popolare per lo
scambio di registrazioni audio su computer, palmari, lettori di musica
digitale e anche telefoni cellulari.
Come funziona?



Per ricevere un podcast sono necessari:
 un qualsiasi supporto connesso ad internet (un PC, ad esempio)
 un programma client apposito (spesso gratuiti)
 un abbonamento presso un fornitore di podcast (spesso gratuiti)
Un podcast funziona come un abbonamento ad una pubblicazione
periodica: il supporto connesso ad internet è la cassetta postale, il
client è il postino, e il fornitore di podcast è la casa editrice
 l'abbonato riceve regolarmente le pubblicazioni, e può ascoltarle o
vederle nella modalità e nei tempi che gli sono più congeniali.
http://www.audiocast.it/podlist/
Come funziona?


Il podcasting funziona grazie ad un semplice software (generalmente
gratuito), che ad intervalli regolari si collega a internet e controlla quali
audio o video sono stati pubblicati dai siti ai quali si è abbonati: se ne
trova di nuovi li scarica
 la notifica della pubblicazione di nuove edizioni avviene tramite un feed
RSS scambiato tra il sito del produttore e il programma dell’utente
I podcast possono essere ascoltati in ogni momento poiché la copia
del file, una volta scaricata automaticamente, rimane sul computer
dell’abbonato.
 a differenza delle radio Web in streaming, i podcast non richiedono
necessariamente un collegamento ad internet durante l’ascolto ma solo
nella fase di download (i.e., i podcast si possono ascoltare anche offline magari su un supporto mobile non connesso ad internte)
Streaming vs Podcast


Nonostante i programmi in streaming (come le radio tradizionali)
possono essere registrati dal ricevente, la loro natura transitoria li
distingue nettamente dai programmi podcast che invece arrivano già
in formato compresso sul computer
 questa differenza è importante anche dal punto di vista legale
Anche il mondo del giornalismo, della politica e della comunicazione
sono interessati ai podcast.
 in italia Radio Rai offre le proprie trasmissioni come podcast, La
Repubblica distribuisce via podcasting le trasmissioni di Repubblica
Radio, altre radio tipo RadioDJ, Radio105, RDS etc. solo alcune
trasmissioni
Dizionario

Broadcast: indica una trasmissione radio tradizionale, ascoltabile ad
una determinata ora decisa dall’emittente

Streaming: indica una risorsa ascoltabile in qualsiasi momento tramite
un collegamento internet al sito dell’emittente
 non occorre averla scaricata tutta prima di poter ascoltarla ma si può
ascoltare mano a mano che viene scaricata

Podcasting: indica una risorsa ascoltabile in qualsiasi momento
scaricata automaticamente in formato mp3 o altro dal sito
dell’emittente
 a volte occorre averla scaricata tutta prima di poterla ascoltare
XQuery



Nel Web Consortium esiste un gruppo di lavoro (XML Query Working
Group) preposto alla definizione di un linguaggio di interrogazione
specifico per i documenti XML.
L'obiettivo del gruppo è quello di fornire un linguaggio potente e
flessibile per estrarre dati dai documenti XML con prestazioni
paragonabili a quelle fornite dai linguaggi progettati per i database . In
questo modo le collezioni di file XML saranno accessibili nello stesso
modo in cui lo sono attualmente i database.
Ad oggi non esiste una raccomandazione del W3C per un linguaggio
d'interrogazione, ma esistono diverse proposte, fra le quali si può
citare XML Query Language (XQL), estensione di XSL Patterns, lo
schema per la costruzione di espressioni atte ad indicare gli elementi
di un documento XML.
 Linguaggio di query concepito per essere applicabile a qualsiasi
documento XML

simile al linguaggio SQL nei database
XQuery



Le espressioni XQL assomigliano ai percorsi per individuare file e
directory nel disco di un computer. Infatti XQL sfrutta la natura
gerarchica della struttura di un documento XML. Per esempio,
l'espressione
 /Legge//Comma
 indica l'insieme degli elementi Comma discendenti dell'elemento Legge,
che si trovano nel documento, mentre
l'espressione:
 /Legge//Capo[@Num = "I"]/Articolo
 seleziona tutti gli articoli del capo I.
Il risultato di una query XQL è un estratto del documento XML
contenente le parti selezionate, ossia un documento XML che ha come
radice l'elemento <xql:result>.
XQuery




Nella progettazione di XQL si sono perseguiti 3 obiettivi fondamentali:
 la compattezza: XQL utilizza brevi sequenze di caratteri
 la semplicità: XQL utilizza pochi elementi sintattici
 la natura dichiarativa: le espressioni esprimono cosa si vuole ottenere e
non "come" ottenerle (concetto analogo a quello espresso per il
linguaggio eXtensible Stylesheet Style)
Questi presupposti sono positivi, ma comportano anche degli
svantaggi: per esempio, la compattezza porta, nel caso di espressioni
complesse, a compromettere la facilità dell'interpretazione.
Esistono poi due limitazioni non indifferenti:
 non sono previsti meccanismi di unione fra più query (join), nè di
ordinamento o di aggregazione
 non è prevista l'interrogazione su più documenti contemporaneamente
Nonostante ciò, non mancano le implementazioni: XQL è supportato,
per esempio dagli XML database server eXcelon di ObjectStore e
Tamino di Software AG.
XQuery

<?xml version="1.0" ?>
<magazzino>
<articolo codice="A1">
<descrizione>Righello 25 cm</descrizione>
<quantita>50</quantita>
</articolo>
<articolo codice="A2">
<descrizione>Calcolatrice</descrizione>
<quantita>60</quantita>
</articolo>
<articolo codice="A3">
<descrizione>Quaderno a quadri</descrizione>
<quantita>120</quantita>
</articolo>
</magazzino>

XQuery: /magazzino/articolo[quantita > 100]

Tutti gli articoli con quantità > 100
Conclusioni: perché utilizzare XML








XML permette di strutturare i documenti e di associare una sintassi.
XML supporta UNICODE, un grande numero di set di caratteri può
essere utilizzato.
XML può essere usato come formato di scambio per documenti
elettronici ed applicazioni.
Indipendente da hardware e software
Consente di manipolare i dati in modo più semplice ed efficiente.
Quando registriamo informazioni vogliamo essere sicuri di poterle
riutilizzare in futuro.
 es. word 1, word 2, word per mac, word per pc, incompatibilità, perdita
di informazioni
Un documento XML è in formato leggibile dall’uomo.
·Documento strutturati e metainformazioni consentono motori di
ricerca più acurati
Conclusioni: perché utilizzare XML







Sistemi standard di metadati: Resource Description Framework.
XML è estensibile, non ha tag predefiniti.
·Consente di creare linguaggi standard ed estendibili, per campi di
applicazione (medicina, elettronica, matematica, musica, ...)
I collegamenti offrono nuove possibilità. (punti precisi, più
destinazioni, database centralizzato -> maggiore maneggevolezza, più
semplice controllare corrispondenza collegamenti).
Offre una ottima capacità di rappresentare dati complessi (notazioni
matematiche, interfacce grafiche)
Visualizzare documento su media differenti in modi diversi senza
doverlo riscrivere ogni volta.
XSL offre meccanismi per rappresentare e manipolare il documento,
buona capacità di rappresentare dati complessi (notazioni
matematiche, interfacce grafiche); sequenze, cicli e condizioni
Approfondimenti

XML – esempi e dettagli sul formato
http://it.wikipedia.org/wiki/XML

“L'azienda è più flessibile con i documenti digitali”
http://www.weekit.it/index.php?option=com_content&task=view&id=37
710&Itemid=190
Glossario










Applicazione XML: un linguaggio XML definito tramite un DTD o uno XML Schema ed usato
in un particolare ambiente.
CSS: Cascading Style Sheets. Fogli di stile che consentono di definire come presentare
documenti HTML e XML.
DOM: Document Object Model. Questa è un.interfaccia indipendente tra la piattaforma di
sviluppo e il linguaggio di programmazione usato e permette di accedere e modificare il
contenuto o la struttura di documenti HTML e XML.
DTD: Document Type Definition. Questo è un formato usato per definire la struttura e gli
elementi di una particolare applicazione XML.
HTML: HyperText Markup Language. E. il linguaggio di marcatura usato per creare
documenti da pubblicare sul Web. E. stato standardizzato dal W3C.
Markup language: Un linguaggio che consente l.aggiunta di marcatori ad un documento di
testo, al fine di fornire un significato semantico o descrivere come presentare il contenuto
del documento stesso.
Metadato: Un dato usato per descrivere o aggiungere informazione agli altri dati.
Metalinguaggio: Nel mondo IT è un linguaggio utilizzato per definire altri linguaggi.
Namespace: Consente di individuare una parte che definisce un insieme di elementi e
attributi utilizzati in un documento XML.
Glossario













SGML: Standard Generalized Markup Language. Metalinguaggio per definire linguaggi di
marcatura; il precursore dell.XML.
WML: Wireless Markup Language. Un linguaggio che è usato correntemente per presentare
contenuti ipertestuali su telefonia mobile e dispositivi palmari PDA.
W3C: World Wide Web Consortium. E. l.organizzazione responsabile dello sviluppo degli
standards legati al Web.
XLink: XML Linking Language. Linguaggio per definire links tra documenti XML.
XML: Extensible Markup Language . E. un metalinguaggio per definire linguaggi di
marcatura, standardizzato dal W3C.
XML Schema: Come i DTD, esso consente di definire come è un documento XML, ma con
un po. piu. di dettaglio.
XPath: XML Path Language. Parte dell.XSL che permette di identificare porzioni di un
documento XML (elementi, attributi).
XPointer: Un linguaggio che permette di identificare un punto qualsiasi del documento
XML.E. un.estensione di XPath ed è usato in combinazione con XLink.
XQuery: E. un linguaggio di interrogazione per l.XML, utilizzabile sia per documenti XML
singoli sia su database di documenti XML.
XSL: eXtensible Stylesheet Language. Linguaggio di fogli di stile per l.XML standardizzato
dal W3C. Comprende 3 componenti: XPath, XSLT e XSL-FO.
XSLT: XSL Transformations. Parte dell.XSL che permette di definire come trasformare un
documento XML in un altro documento XML, HTML, o testo.
XSL-FO: XSL Formatting Objects. Parte dell.XSL che consente di presentare un documento
XML.
Parte V
Strumenti per XML
Editor
Browser
XML Conversion Tools
Document Storage Systems
Xmetal
http://www.softquad.com/products/xmetal/
XMLNotepad


http://msdn.microsoft.com/xml/notepad/intro.asp
Freeware
Xeena


http://alphaworks.ibm.com/tech/xeena
Freeware e portabile
Browsers

Questa categoria comprende gli strumenti per la visualizzazione e la
navigazione di documenti XML

Internet Explorer - Microsoft (Win32, Mac)
 Mozilla (Win32, Mac, Linux)
 Xplorer - IBM Alphaworks (IBM)
Xplorer


http://alphaworks.ibm.com/tech/xplorer
Freeware e portabile. E' solo un visualizzatore
Document Storage Systems

Strumenti per la gestione dei documenti XML, in grado di gestirne la
memorizzazione e di semplificare le operazioni di ricerca.

Database con supporto per XML
 XML Data Store
Oracle 8i

http://www.oracle.com

Database con supporto per XML
 inserimento di documenti XML come dati primitivi (ricerche testuali)
 importazione dati da XML
 esportazione dati in XML
eXcelon (1)

http://www.exceloncorp.com

XML Data Store
 gestione nativa dei dati XML
 interrogazione mediante XML query languages (XQL)
 accesso ai dati attraverso interfacce DOM
eXcelon (2)
Siti Web interessanti

The XML Cover Pages
http://www.oasis-open.org/cover/

The Whirlwind Guide to XML Tools and Vendors
http://www.infotek.no/sgmltool/guide.htm

Free XML tools and software
http://www/xmlsoftware.org/
http://www.garshol.priv.no/download/xmltools/

W3C XML page
http://www.w3.org/XML/

http://www.extrowebsite.com/corso_xml.asp
http://www.kosmous.com/risorse/articolo.php?id=13
