Diapositiva 1 - ITIS "Luigi di Savoia"

Transcript

Diapositiva 1 - ITIS "Luigi di Savoia"
XML
INVITO ALLO STUDIO
EUROPEAN NETWORK OF INNOVATIVE SCHOOLS
Road Map
• Cos’è XML
• La Struttura dell’XML
• DTD
• XML Schema
• CSS e XML
• XSL,XSLT
• XLink
• Applicazioni XML (DOM, SAX)
Oggi
Mercoledì 12 Ottobre
Mercoledì 19 Ottobre
Mercoledì 26 Ottobre
Cos’è XML
XML è un insieme di regole per creare
formati di testo facili da generare e
facilmente elaborabili da un computer.
I file di testo risultanti sono strutturati, in
modo tale da essere:
• PRIVI DI AMBIGUITA’
• ESTENDIBILI
• INDIPENDENTI DALLA PIATTAFORMA
• XML e’ uno strumento indipendente
dall’hardware e dal software utile per
memorizzare, trasportare, e scambiare
informazione
• XML serve in generale per descrivere dei
dati
(e non solo per presentarli, come HTML)
Le principali differenze tra l’XML
e l’ HTML
• XML non è un rimpiazzo per l’HTML
• XML e HTML furono creati con fini differenti
• XML è stato progettato per descrivere dati e per
focalizzare l’attenzione su di essi
• HTML è stato progettato per mostrare dati e per
concentrare l’attenzione su di ess
• XML è fatto per descrivere le informazioni,
• HTML è fatto per visualizzare informazioni
I problemi nel trattare i documenti
Problema dei word processor odierni:
nello scambiare documenti che formato usare?
ASCII, RTF,PS,PDF,Tex,HTML
Mescolare comandi che definiscono la
visualizzazione con il contenuto crea problemi.
Es. Word, Acrobat il linguaggio HTML
Legano il documento all’applicativo ovvero alle sue
caratteristiche di rendering.
Un altro problema…
Concentrarsi sulle proprietà visive piuttosto che
sulla struttura del documento porta a non
considerare il peso di ogni informazione
Problema dei motori di ricerca
La presentazione e l’informazione sono legate
insieme nello stesso file
*.htm o *.html
Contenuto – Struttura - Stile
XML nel futuro
Sarà dappertutto
Avrà successo quanto l’ HTML per la creazione
di pagine web
Sarà uno strumento utilizzato prevalentemente
per le manipolazioni di dati e la loro
trasmissione
X
La “X” in XML sta per EXTENSIBLE:
Estensibilità significa che un linguaggio
può essere ampliato per soddisfare
esigenze specifiche.
XML può essere definito un
META LINGUAGGIO DI MARKUP
utile a definire marcatori descrittivi
adatti alle proprie necessità
XML di per sé non è altro che un insieme standard
di regole sintattiche per modellare la struttura di
documenti e dati.
Questo insieme di regole, dette più propriamente
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.
W3C
W3C organizzazione mondiale per standard WEB
• Recommendation
– uno standard (più o meno); stabile; si può usare
• Proposed Recommendation:
– quasi standard; fissabile in 2-3 mesi; le feature
possono essere usate
• Working Draft:
– Lavoro in fase di sviluppo; potrebbe diventare una
Recommendation in meno di un anno;
• Note:
– idee completamente non affidabili
Cos’e’ un linguaggio di markup?
markup: Il processo di marcare
(markup) i manoscritti per la composizione
tipografica con istruzioni per l’uso di font,
dimensioni, spaziatura, indentazione, ecc.
(dal Chicago Manual of Style, una delle
bibbie dell’editoria)
Cos’e’ un linguaggio di markup?
(segue)
• Un linguaggio di markup e’ semplicemente un
insieme di convenzioni per decidere quali parti di
un documento vanno trattate in modo diverso
dalle altre parti
– esempio: l’uso dello stile nei documenti scritti
• L’idea e’ di inserire specifiche sequenze di
caratteri o codici (detti markup tag o tag) nel
testo per permettere ai programmi di distinguere
le varie parti di un documento
– ad esempio, per decidere come visualizzarlo
Quindi
L’introduzione di elementi esterni
(markup) al contenuto di un documento
permette di:
• Separare gli elementi logici del documento
• Specificare le elaborazioni a cui devono
essere sottoposti questi elementi.
I Markup possono essere
classificati come:
Procedural Markup: riguarda la
presentazione del testo, i suoi font gli
spazi etc… i word processor e anche
HTML (che è un text markup language)
rientrano tra questi
Descriptive or Declarative Markup:
concerne la struttura o la funzione delle
delle cose nei nei tag (XML, SGML)
Esempio (Procedural) HTML
<HTML>
H2, tag titolo di livello 2 Prova verrà
formattato con un carattere piu’ grande
<BODY>
<H2> Prova </H2>
<P> una prova</P>
<H1> titolo1 </H1>
</BODY>
</HTML>
prova.xml
Esempio: (Descriptive) una ricetta
<ricetta>
<titolo>Torta al cioccolato</titolo>
<ingrediente>
<quanto>3 cucchiai</quanto>
<cosa>cioccolato</cosa>
</ingrediente>
<ingrediente>
<quanto>540 grammi</quanto>
<cosa>farina</cosa>
</ingrediente>
<ingrediente>
<quanto>2 tazze</quanto>
<cosa>latte</cosa>
</ingrediente>
<ingrediente>
<quanto>1 dozzina</quanto>
<cosa>uova</cosa>
</ingrediente>
<istruzioni>mescolare, impastare, cucinare a 250 gradi per 40 minuti </istruzioni>
</ricetta>
ricetta.xml
Storia
• XML deriva da SGML, un altro metalinguaggio
noto solo in ambienti professionali (es. editoria)
• Rispetto a SGML, XML è stato notevolmente
semplificato, sono state aggiunte delle piccole
estensioni per renderne l’uso più agevole.
(XML è un sottoinsieme di SGML)
La Famiglia di XML
HTML
DTD
XHTML
SGML
XSL
XML
Schema
MathML
XML
XSL-FO
CML
I vantaggi di XML
• XML permette agli sviluppatori di creare
linguaggi ad hoc per contenere informazione
strutturata;
• XML è completamente text-based, quindi
leggibile anche dagli esseri umani e facilmente
editabile anche a mano
• Le strutture definite con XML sono utili anche
per creare strutture dati indipendenti dalla
piattaforma
segue
• L’elaborazione automatica di un
linguaggio XML è particolarmente
semplice ed efficiente. Le rigide regole
grammaticali ne rendono il trattamento
automatico molto conveniente.
• Essendo puro testo (come HTML) i dati
XML possono essere trasportati usando
il protocollo http.
XML: svantaggi
• I documenti XML, a causa della loro
struttura testuale e dei tag, tendono ad
essere molto più ingombranti dei
corrispondenti in formato binario.
• In generale l’uso di XML si presenta più
oneroso in termini di risorse necessarie
(tempi di trasmissione, memoria e tempo
di CPU necessari alla sua decodifica, ecc.)
XML: applicazioni
L’uso di XML è diffusissimo ed in continua espansione
¾ Web ed editoria
XHTML, WML, VoiceML,XSL, XSL-FO,…
¾ Scienza
MathML,CML….
¾ Multimedia
SMIL, SVG,….
¾ Definizione di strutture formali
XML Schema…
¾ Sicurezza
XML Encryption, Xml Signature….
XML - La struttura
Elementi, Attributi, TAG, … DTD
Documenti XML
• Un file XML è un semplice file di testo con TAG
XML al suo interno
– Esso ha una estensione .xml
(nome_file.xml)
• Un file XML contiene tre sezioni:
– Una dichiarazione che si tratta di un file XML
– Una definizione (opzionale) circa il tipo di documento
e sul nome della DTD associata
– Il contenuto del documento con tag XML
Il CONTENUTO documento XML e’
composto da:
•
•
•
•
•
•
•
Elementi
Tag
Attributi
entita’ carattere (character entities)
PCDATA
CDATA
Commenti
Struttura Gerarchica di un
documento XML
Un esempio
<?xml version="1.0" ?>
<articolo titolo="Titolo dell’articolo">
<paragrafo titolo="Titolo del primo paragrafo">
<testo>
Blocco di testo del primo paragrafo
</testo>
<immagine file="immagine1.jpg">
</immagine>
</paragrafo>
<paragrafo titolo="Titolo del secondo paragrafo">
<testo>
Blocco di testo del secondo paragrafo
</testo>
<codice>
Esempio di codice
</codice>
<testo>
Altro blocco di testo
</testo>
</paragrafo>
<paragrafo tipo="bibliografia">
<testo>
Riferimento ad un articolo
</testo>
</paragrafo>
</articolo>
esempio1.xml
XML - la dichiarazione
• Dichiarazione XML opzionale ma consigliata
<?xml version=“1.0” standalone=“yes/no”
encoding=“UTF-8”?>
• Versione
• Viaggia da solo?
• Codifica
(per adesso 1.0!)
(DTD associata o no)
(UTF-8 Default)
Esempio
<?xml version="1.0“ standalone=“yes” encoding=“UTF-8” ?>
<memo>
Prologo o Dichiarazione
<a>tutti</a>
<da>Mario Rossi</da>
<data>15 gennaio 2002</data>
<oggetto>cani e gatti</oggetto>
<testo>Ricordatevi di chiudere tutti i cani e gatti in
casa prima della notte</testo>
</memo>
<da>Mario Rossi</da>
Tag di
Apertura
Elemento
Tag di
Chiusura
Tag
(Marcatore)
• I tag vengono usati per delimitare gli elementi
•Un tag di inizio del tipo <element_name> delimita l’inizio di un
elemento, un tag di fine del tipo </element_name> delimita la fine
di un elemento
• NOTA: gli elementi vuoti hanno un solo tag (di inizio e fine
insieme) del tipo <element_name />
• I tag XML sono case sensitive
esempio: <Lettera> diverso da <lettera>
Elementi
• Sono i “mattoni” principali di cui un documento XML e’
costituito
• Un elemento è delimitato da un tag di partenza e da
un tag di chiusura
-possono contenere lettere, numeri, e altri caratteri
-non possono iniziare con un numero o un carattere di
punteggiatura
-non possono iniziare con le lettere xml (o XML, o
Xml,…)
-non possono contenere spazi
Elementi (segue)
•
Consideriamo il seguente documento XML
<data>9 settembre 2003</data>
Questo documento è composto da un solo elemento di tipo data
<data> tag di apertura o start tag
</data> tag di chiusura o end tag
Ogni cosa tra i due tag è detto contenuto in questo caso il contenuto è
la stringa 9 settembre 2003
i caratteri < e > sono detti delimitatori di markup non è possibile usare
delimitatori di markup nel contenuto di un elemento
al loro posto: &lt; e &gt;
Tipi di Elementi in base al contenuto
•
solo testo detto anche character data
<data>9 settembre 2003</data>
•
solo elementi detti elementi figli
<data>
<giorno>9</giorno>
<mese>settembre</mese>
<anno>2003</anno>
</data>
•
misto: testo e elementi
<data>nel giorno <giorno>9</giorno> del mese
di <mese>settembre</mese> nell'anno
<anno>2003</anno>
</data>
•
vuoto: nè testo nè elementi
<data standard="20030916" valore="9 settembre 2003" ></data>
<data standard="20030916" valore="9 settembre 2003"/>
XML - Elementi (Annidamento)
• Gli elementi devono essere annidati in modo
corretto (non come HTML)
• Esempio:
<contact>
<name> Pinco Pallino </name>
<email> [email protected] </email>
</contact>
Attributi
•Gli attributi forniscono informazioni extra su un elemento
•Sono posti all’interno del tag di inizio
•Ognuno e’ formato da una coppia attributo – valore
<memo data="24/01/2001">
Oppure
<memo data='24/01/2001'>
Attributi
(segue)
• I Tag XML possono possedere un qualsiasi
numero di attributi
<shoe style=“elegant” coloring=“brown”>
• Il valore di un attributo è sempre una stringa
che può contenere anche spazi bianchi o altri
simboli
Attributi vs Elementi
I seguenti 3 documenti xml contengono esattamente gli stessi dati.
•
nell’esempio che segue la parola DATA (temporale) viene usata come attributo
<note date="12/11/99">
<from>Jani</from>
<body>non mi dimenticare questo fine settimana!</body>
</note>
• nel 2° esempio che segue la parola DATA (temporale) viene usata come
elemento:
<note>
<date>12/11/99</date>
<from>Jani</from>
<body>non mi dimenticare questo fine settimana!</body>
</note>
• nel 3° esempio che segue la parola DATA (temporale) viene usata come
elemento esteso (forse la soluzione migliore)
<note>
<date>
<day>12</day>
<month>11</month>
<year>99</year>
</date>
<from>Jani</from>
<body>non mi dimenticare questo fine settimana!</body>
</note>
Attributi vs Elementi
Questi sono alcuni problemi che possono
presentarsi facendo uso di attributi.
• gli attributi non possono contenere valori
multipli ( elementi figli possono)
• gli attributi non sono facilmente espandibili
( per ev.cambi futuri)
• gli attributi non possono descrivere
strutture ( elementi figli possono)
• gli attributi sono più difficilmente
manipolabili dal codice del programma
Attributi vs Elementi
Talvolta si assegnano degli ID di riferimento agli elementi. Questi riferimenti
possono essere usati per accedere agli elementi. Questo esempio lo dimostra:
<messages>
<note ID="501">
<to>Tove</to>
<from>Jani</from>
<body>non mi dimenticare questo fine settimana!</body>
</note>
<note ID="502">
<to>Jani</to>
<from>Tove</from>
<body>non lo farò!</body>
</note>
</messages>
L’ID in questo esempio è solo un contatore , o un identificativo univoco, per
identificare i diversi messaggi nello stesso file xml , e non è una parte del dato
del messaggio.
METADATI ( dato del dato ) dovrebbero venire registrati come attributi , mentre i
dati stessi dovrebbero essere registrati come elementi.
Entita’ (predefinite)
• variabili per definire dei caratteri o
sequenze di caratteri
• Le entita’ vengono “tradotte” da un XML
parser
Entita’
• Entita’ predefinite in XML:
Carattere
&lt;
<
&gt;
>
&amp;
&
&quot;
“
&apos;
‘
XML - Entità (generali)
• Le entità generali sono nella forma
<! ENTITY nome “qualsiasi cosa”>
<! ENTITY copyright
“Pinco Pallino S.p.A.”>
&nome_entità; (come &nbsp; in HTML);
• Sostituisco banalmente il contenuto tra
virgolette...
XML - DOCTYPE
La dichiarazione DOCTYPE serve a utilizzare le ENTITY
in un documento XML
Si trovano sempre dopo la dichiarazione XML <? xml
version=“...” e la dichiarazione della DTD
<! DOCTYPE mydoc
[ … definizione delle
entità … ]>
<mydoc> …
body del documento
</mydoc>
ESEMPIO- ENTITY (generali)
<?xml version="1.0"?>
<!DOCTYPE ricettario
[
<!ENTITY g "grammi">
]>
<ricettario>
<ricetta numero="1">
<titolo>...</titolo>
<ingred>200 &g; di ... </ingred>
<ingred>...</ingred>
<passo numero="1">...</passo>
<passo numero="2">...</passo>
</ricetta>
</ricettario>
entità1.xml
CHARACTER DATA Section
All’interno di una CDATA Section si possono usare
liberamente le <,>,& senza far ricorso alle entità
predefinite.
<![CDATA[testo]]>
IL contenuto del testo non viene processato dal parser
Esempio:
<message>
<![CDATA[Press the <<enter>> button]]>
</message>
ESEMPIO CDATA
<?xml version="1.0"?>
<!DOCTYPE ricettario[
<!ENTITY g "grammi">
]>
<ricettario>
<ricetta numero="1">
<titolo>Titolo1</titolo>
<ingred>200 &g; di zucchero </ingred>
<ingred>300 &g; di farina</ingred>
<passo numero="1">&quot;impastare acqua zucchero e farina
&quot;
</passo>
<passo numero="2">
<![CDATA["cuocere ad 80 gradi"-premere il pulsante
<<temperatura>>]]>
</passo>
</ricetta>
</ricettario>
cdata1.xml
Commenti
• I commenti in XML possono essere inseriti
esattamente come si fa in HTML
<!-- questo è un semplice commento -->
– No “-” o “--” all’interno
– No commenti dentro TAG
– No dentro entità
– Mai prima di <? xml versi…etc... ?>
– No annidamenti!
Istruzioni di Processing
• La dichiarazione XML è già una istruzione
di processing
• Una istruzione di processing rappresenta
una porzione di testo significativa per
l’applicazione che usa il documento XML
• non serve al parser ma all’applicazione
che usa il parser
<?name_of_application instructions?>
<?JAVA_OBJECT
JAR_FILE=“/java/.../myjar.jar” ?>
Documenti Ben Formati
Un documento XML si dice ben formato se e’
conforme ad una serie di regole generali:
• Contiene uno o piu’ elementi
• Ha un unico elemento radice
• I tag XML sono annidati in modo corretto
• Ogni tag di inizio ha un corrispettivo tag di fine
I seguenti documenti sono ben
formati?
•
•
•
•
•
<a></a><b></b> NO
<a><b></a> NO
<a><b></a></b> NO
<a><b></b></a> SI
<c><a><b></b></a></c> SI
Documento XML Valido
• Un documento XML è valido se
• E’ ben formato
• Rispetta una struttura descritta in una
Document Type Definition o in uno
Schema
– I documenti XML devono essere validi nel
caso di strutturazione di documenti di una
certa importanza, ad esempio, in una azienda
dove è fondamentale mantenere una stessa
struttura
Un Esempio SI
<?xml version="1.0"?>
<ricettario>
<ricetta numero="1">
<titolo>...</titolo>
<ingred>200 grammi di ...
</ingred>
<ingred>...</ingred>
<passo numero="1">...</passo>
<passo numero="2">...</passo>
</ricetta>
</ricettario>
ricetta2.xml
Un Esempio NO
<?xml version="1.0"?>
TAG non chiuso
<ricettario>
<ricetta numero="1">
<titolo>...
<ingred>200 &g; di ... </ingred>
<ingred>...</ingred>
<passo numero=1>...</passo>
<passo numero=2>...</passo>
</ricetta>
Valori non tra virgolette
ricetta3.xml
</ricettario>
Il mio primo XML
<?xml version = "1.0"?>
<documento>
<messaggio>Hello Word</messaggio>
</documento>
primoxml.xml
Tutti sui computer! Si comincia.
Internet Explorer è un parser di file XML
(analizzatore non validante)
Capiremo se il nostro documento è ben/mal
formato.
Apriamo blocco note di windows digitiamo il
nostro primo file XML e diamogli un nome
con l’estensione primoxml.xml
DOCUMENTO BEN FORMATO: non ci sono messaggi d’errore
Torniamo ora su blocco note e modifichiamo il file primoxml.xml scambiando gli ultimi
due tag.
DOCUMENTO MAL FORMATO: sono presenti messaggi d’errore
Ben/Mal Formato
• Se il documento XML è “well formed”, cioè
sintatticamente corretto, il parser XML lo legge e lo fa
visualizzare.
• Se ci sono errori di sintassi, vengono visualizzati.
• Gli errori in questa fase possono essere solo:
-tag non chiusi
-più di un elemento root
-annidamento non corretto
-valori degli attributi non tra “ ”
-case sensitive
Esercizio (1)
Catalogo di una biblioteca
• Una biblioteca è composta da tanti libri.
• Ogni libro ha:
- Titolo
- Uno o più autori
- Codice
N.B.: Inserite dati a piacere
Soluzione
<?xml version="1.0" encoding="ISO-8859-1" ?>
<biblioteca>
<libro>
<titolo>I promessi Sposi</titolo>
<autore>Alessandro Manzoni</autore>
<isbn>C6-01</isbn>
</libro>
<libro>
<titolo>Linguaggio C</titolo>
<autore>Dennis M. Ritchie</autore>
<autore>Brian W. Kernighan</autore>
<isbn>C4-A4</isbn>
</libro>
</biblioteca>
Esercizio (2)
• Il Menù di un ristorante
• Possibili Elementi:Nome, Prezzo,
Descrizione, Calorie….
Soluzione
<?xml version="1.0" encoding="ISO8859-1" ?>
<breakfast-menu>
<food>
<name>Belgian Waffles</name>
<price>$5.95</price>
<description>two of our famous Belgian Waffles with
plenty
of real maple syrup</description>
<calories>650</calories>
</food>
<food>
.
.
.
</food>
</breakfast-menu>
Document Type Definition
DTD: COSA SONO?
• XML offre la libertà di definire i tag a seconda
delle necessità, ma perché non si generi
confusione è necessario un meccanismo che ne
vincoli l'utilizzo all'interno dei documenti. Si può
stabilire quali tag possono essere utilizzati e
come per rispecchiare una struttura logica
predefinita.
• In altre parole 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. Dunque 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.
• C’è da sottolineare che un documento ben
formato può non essere valido rispetto ad una
grammatica, mentre un documento valido è
necessariamente ben formato. Tra l’altro, un
documento valido per una grammatica può non
essere valido per un’altra 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 e XML
Schema. Questi argomenti saranno affrontati in
seguito.
DTD - Well-formed e Valido
• Un esempio Ben Formato sensa senso
<complemento>l’XML</complemento>
<predicato>imparo</predicato>
<soggetto>Io</soggetto>
• La DTD mette in ordine i termini corretti per
dare un senso alle frasi del linguaggio
<soggetto>Io</soggetto>
<predicato>imparo</predicato>
<complemento>l’XML</complemento>
DTD - Descrizione
• Document Type Defintion
• Definisce
– gli elementi,
– gli attributi e
– le relazioni che intercorrono (X può contenere Y o Z
ma non entrambi)
• Rappresenta un modo per fare un check sulla
strutturazione corretta di un documento XML
DTD - Descrizione
• Utilizzo non obbligatorio
(contrariamente ad SGML)
• La DTD fornisce
– una grammatica ed
– il vocabolario per il linguaggio di markup
• La DTD specifica tutto quello che un parser
deve sapere per poter comprendere un
documento XML
Strumento per la validazione
• Un documento XML viene processato e viene
confrontato con la DTD associata
(se ce ne è una)
• Il confronto è un processo detto validazione
– Un parser: software per il checking di documenti
XML
• non-validating parser controlla che segua le regole di
sintassi XML
• validating parser,
parser controlla la sintassi ed il matching con
la DTD
• DTD necessaria solo per documenti XML validi
Un esempio di DTD
• DTD ricettario.dtd
Dichiarazione di elemento
<!ELEMENT ricettario (ricetta)*>
<!ELEMENT ricetta (titolo, ingred+,
passo+)>
<!ATTLIST ricetta numero ID #REQUIRED>
<!ELEMENT titolo (#PCDATA)>
Dichiarazione di attributo
<!ELEMENT ingred (#PCDATA)>
<!ELEMENT passo (#PCDATA)>
<!ATTLIST passo numero ID #REQUIRED>
DTD interno
La dichiarazione del DTD viene inclusa nella
definizione DOCTYPE:
<!DOCTYPE root-element [elementdeclarations]>
DTD esterno
Un riferimento al DTD viene incluso nella
definizione DOCTYPE:
<!DOCTYPE root-element SYSTEM “filename”>
ESEMPIO (DTD interno)
<?xml version="1.0"?>
<!DOCTYPE nota [
<!ELEMENT nota (a,da,testo)>
<!ELEMENT a (#PCDATA)>
<!ELEMENT da (#PCDATA)>
<!ELEMENT testo (#PCDATA)>
]>
<nota>
<a>Rudi</a>
<da>Paolo</da>
<testo>Ci vediamo alle 12</testo>
</nota>
ESEMPIO (DTD esterno)
<?xml version="1.0"?>
<!DOCTYPE nota SYSTEM “nota.dtd”>
<nota>
<a>Rudi</a>
<da>Paolo</da>
<testo>Ci vediamo alle 12</testo>
</nota>
<!ELEMENT nota (a,da,testo)>
<!ELEMENT a (#PCDATA)>
<!ELEMENT da (#PCDATA)>
<!ELEMENT testo (#PCDATA)>
nota.dtd
XML - DOCTYPE
La dichiarazione DOCTYPE serve a utilizzare le DTD e
le ENTITY in un documento XML
Si trovano sempre dopo la dichiarazione XML <? xml
version=“...” e la dichiarazione della DTD
<! DOCTYPE mydoc
[ … definizione della DTD … ]>
<mydoc> …
body del documento
</mydoc>
Dichiarazione di elemento
In un DTD, gli elementi vengono definiti con
una dichiarazione del tipo:
<!ELEMENT element-name (element-content)>
Elementi vuoti
Gli elementi vuoti vengono dichiarati con
la categoria EMPTY
<!ELEMENT element-name EMPTY>
• esempio DTD:
<!ELEMENT br EMPTY>
• esempio XML:
<br />
Elementi contenenti solo
character data
Vengono dichiarati con la categoria (#PCDATA)
<!ELEMENT element-name (#PCDATA)>
esempio:
<!ELEMENT da (#PCDATA)>
Elementi con contenuto
qualsiasi
• Vengono
dichiarati con categoria ANY
<!ELEMENT element-name ANY>
esempio:
<!ELEMENT nota ANY>
Significato: “nota” contiene qualsiasi cosa
che non vada contro le altre regole XML
Elementi con figli (in sequenza)
• Gli
elementi con uno o piu’ figli vengono dichiarati
con il nome dei figli tra parentesi
• Quando i figli sono dichiarati come una sequenza
separata da virgole, devono apparire nello stesso
ordine nel documento
<!ELEMENT element-name (child-element-name)>
Oppure
<!ELEMENT element-name (child-elementname, child-elementname,.....)>
esempio:
<!ELEMENT nota (a,da,testo)>
Quante occorrenze dello stesso
elemento? (1)
• esattamente una:
<!ELEMENT element-name (child-name)>
esempio:
<!ELEMENT nota (messaggio)>
• almeno una:
<!ELEMENT element-name (child-name+)>
esempio:
<!ELEMENT nota (messaggio+)>
Quante occorrenze di un
elemento? (2)
• zero
o piu’:
<!ELEMENT element-name (child-name*)>
esempio:
<!ELEMENT nota (messaggio *)>
• zero o una:
<!ELEMENT element-name (child-name?)>
esempio:
<!ELEMENT nota (messaggio?)>
Scelta fra contenuti
• esempio:
<!ELEMENT nota (a,da,(messaggio | testo))>
L’elemento note deve contenere un elemento “a”, un elemento
“da”, e un elemento “messaggio” oppure un elemento “testo”
Contenuto misto
• esempio:
<!ELEMENT nota (#PCDATA|da|a|messaggio)*>
L’elemento note puo’ contenere parsed character
data, o un qualsiasi numero di elementi “a”, “da”, e
“messaggio”, in qualsiasi ordine
Dichiarazione di attributi
• Una dichiarazione di attributo ha la seguente sintassi:
<!ATTLIST element-name attribute-name attribute-type default-value>
esempio DTD:
<!ATTLIST pagamento type CDATA ”assegno">
esempio XML:
<pagamento type=”assegno" />
Valori possibili di attribute-type
CDATA
Stringhe di tipo unparsed.
PCDATA
Stringhe di tipo parsed.
ID
nome che occorre unico all'interno dello stesso documento
IDREF
E' un riferimento ad un elemento che ha un attributo di tipo ID
con valore IDREF
IDREFS
E' una lista di IDREF separati da uno spazio bianco
ENTITY
nome di una entità dichiarata
ENTITIES
E' una lista di ENTITY separati da uno spazio bianco
NMTOKEN
E' una stringa di una parola
NMTOKENS
E' una lista di NKTOKEN separati da uno spazio bianco
Enumerazione E' una lista di nomi come valori che l'attributo può assumere.I
nomi sono separati da virgola e la lista è racchiusa tra
parentesi tonde
Valori possibili di default-values
• value il valore di default
• #REQUIRED il valore dell’attributo deve essere incluso
nell’elemento
• #IMPLIED il valore dell’attributo non deve essere incluso
• #FIXED il valore e’ fissato
Dichiarazione di attributi (esempi)
<!ATTLIST foto src CDATA #REQUIRED
desc CDATA #IMPLIED>
– src, nome del file bitmap necessario
(#REQUIRED)
– desc, descrizione può omettersi
(#IMPLIED)
<!ATTLIST telefono tipo (casa |
ufficio | cellulare) 'casa'>
– ha un attributo che ne identifica il tipo,
– che indica se il numero è di casa, dell'ufficio o
di un cellulare
– il valore di default è 'casa’
DTD - Caratteri per la
grammatica
• In una DTD è possibile
avere dichiarazioni di:
• Elementi
struttura degli elementi
• Entità
• Attributi
e valori, richiesti o no
• Uso di simboli precisi per
definire la grammatica
Character Significato
+
Una o più occorrenze
*
Zero o più occorrenze
Zero o una occorrenza
?
(opzionale)
Un gruppo di espressioni
()
che facciano un match tra
loro
|
OR (questo o quello)
Strettamente ordinati
,
come un AND
ELEMENT_A
ELEMENT_B Non ordinati
ELEMENT_C
Un esempio completo - la DTD
• DTD agenda.dtd
<!ELEMENT agenda (contatto*)>
<!ELEMENT contatto (nome, indirizzo+,
telefono*, email*,foto?)*>
<!ELEMENT nome (#PCDATA)>
<!ELEMENT indirizzo (via, numero, citta,
cap, provincia?)>
<!ELEMENT via (#PCDATA)>
<!ELEMENT numero (#PCDATA)>
Dati
<!ELEMENT citta (#PCDATA)>
Parsed
<!ELEMENT cap (#PCDATA)>
<!ELEMENT provincia (#PCDATA)>
<!ELEMENT telefono (#PCDATA)>
Un esempio completo - la DTD
• … continua
Valore predefinito
<!ATTLIST telefono tipo (casa |ufficio
| cellulare)'casa'>
<!ELEMENT email (#PCDATA)>
<!ELEMENT foto
EMPTY>
Elemento vuoto
<!ATTLIST foto src CDATA #REQUIRED
desc CDATA #IMPLIED>
<!ENTITY BO "40100">
<!ENTITY MO "41100">
<!ENTITY RE "42100">
Entit
à Dichiarate
Entità
Un esempio completo - XML
• Agenda.xml
<?XML version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE agenda SYSTEM "agenda.dtd">
<agenda>
Radice
DTD associata
<contatto>
<nome>Pinco Pallino</nome>
<indirizzo>
<via>Via Incognita</via>
Richiamo entit
à
<numero>10</numero>
entità
<citta>Bologna</citta> della DTD
<cap>&BO;</cap>
</indirizzo>
…continua
Un esempio completo - XML
• … continua
<telefono>051-123456</telefono>
<telefono tipo="ufficio">
051-654321</telefono>
<email> [email protected]
</email>
<foto src="pinco.gif"
desc="Una foto
Elemento vuoto foto
di Pinco Pallino"/>
</contatto>
</agenda>
Esercizio (1)
•
Definire una DTD per un Archivio di CDROM Musicali con i seguenti vincoli:
1. Il documento deve essere composto dai
seguenti elementi :
CD (“titolo”, “artista” o “gruppo”)