XML - DISI

Transcript

XML - DISI
Linguaggi di markup
Laura Papaleo
[email protected]
Esempio: contatti in rubrica
Laura Papaleo
123.2342323232
[email protected]
Franco Tallero
Via degli Ulivi 19/19
Genova, 16100
010.28389239 (preferito)
346.92938281
[email protected]
1
Esempio: address book in XML
<?xml version="1.0"?>
<address-book>
<entry>
<name>Laura Papaleo </name>
<tel> 123.2342323232 </tel>
<email href=" [email protected]"/>
</entry>
<entry>
<name>Franco Tallero</name>
<address>
<street>Via degli Ulivi 19/19</street>
<postal-code>16100</postal-code>
<locality> Genova</locality>
</address>
<tel preferred="true"> 010.28389239</tel>
<tel> 346.92938281</tel>
<email href="[email protected] "/>
</entry>
</address-book>
XML Sintassi: Elemento
Un elemento è un blocco elementare dei
documenti XML
Elemento
Start-tag
Contenuto
End-tag
Un elemento è una parte del documento
delimitata da 2 TAG
üEsempio:
<AUTHOR> Laura Papaleo </AUTHOR>
2
XML Sintassi: Tag (1/2)
I tag appaiono, normalmente, in
coppia,
ü tag di apertura (start-tag)
ü tag di chiusura (end-tag)
<NOME_TAG> Laura Papaleo </NOME_TAG>
Il tag rappresenta il nome dell’elemento
XML Sintassi: Tag (2/2)
Il nome di un elemento è Case-Sensitive
cioè il tag NAME è diverso da name
Start-tag ed end-tag devono essere
perfettamente identici
Un tag segue la seguente grammatica
[ L | _ | : ]{ L | D | . | - | _ | : }*
dove L rappresenta una lettera o D un digit
ü
Es: My.Name, _MyName, :SPECIAL
3
XML:
Struttura gerarchica degli elementi
Libro
libro
Capitolo
sezione
Capitolo
Capitolo
Capitolo
sezione
sezione
sezione
Struttura gerarchica degli elementi
No!
Libro
Capitolo
Ogni elemento
deve essere
completamente
incluso da
un altro
elemento
sezione
Capitolo
sezione
4
Contenuto di un Elemento
altri elementi (sub-elements)
<address>
<street> 33, Terry Dr.</street>
<city> Morristown </city>
</address>
testo (data content)
<street> 33, Terry Dr.</street>
contenuto misto (mixed content)
<par>Today,
<date>05-06-2000</date> Mr.
<name>Bill Gates</name>
is in California to talk to ...
</par>
XML:
Elemento - confronto con HTML
In HTML, l'insieme dei possibili tag da
utilizzare è predefinito
In XML è si possono invece creare tutti
i tag che si preferiscono
5
Elemento documento
(Document Element)
E’ l’elemento più esterno in un
documento XML
Viene anche detto elemento radice
Contiene tutti gli elementi del
documento esempio:
<libro>
… …
</libro>
Deve sempre esistere
Elemento documento
(Document Element)
No!
Capitolo
sezione
Non è possibile
avere
più elementi a
livello radice
Capitolo
sezione
6
Elemento vuoto (Empty Elements)
E’ un elemento senza contenuto
ü Non ha il tag finale
ü Ha una particolare rappresentazione del Tag iniziale
Esempio:
<foto source=“ciao.gif”/>
<email indirizzo=“[email protected]”/>
XML: Definire gli attributi
Un elemento può avere degli attributi
Gli attributi possono essere pensati come
aggettivi che descrivono gli elementi
Ogni attributo ha nome e valore
Tutti gli attributi di un elemento devono
essere distinti
<AUTHOR nome_attributo=”valore_attributo">
Marco Mesiti
</AUTHOR>
7
Valori degli attributi
Gli attributi possono contenere diversi
possibili valori
ü
ü
ü
numeri
parole
URL
Un valore non può contenere alcuni caratteri
(es. “, <, &)
Un valore segue il nome dell'attributo ed un
segno di uguale =
ü
<AUTHOR
a="1874"> Laura Papaleo</AUTHOR>
In XML, i valori degli attributi sempre tra
virgolette
Esempio di elemento con attributi
<AUTHOR laurea=”informatica">
Laura Maria Rita
</AUTHOR>
<AUTHOR laurea=”informatica">
<name>Laura</name>
<name>Maria Rita</name>
<lastname>Papaleo</lastname>
</AUTHOR>
<AUTHOR laurea=”informatica”
name1=”Laura” name2=”Maria Rita”
lastname=”Papaleo”/>
8
Elementi Vs Attributi
Quando è meglio usare elementi o attributi
per rappresentare un’informazione?
Sicuramente elementi se si tratta di
informazione strutturata
Un elemento,
quando:
ü
ü
ü
Si richiede di recuperare i
dati velocemente
E’ visibile a tutti
E’ rilevante per il significato
del documento
Un attributo,
quando:
ü
ü
ü
Esprime una scelta
E’ utilizzato dal sistema
Non è rilevante per il
significato del documento
Un documento 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 dichiarazione (opzionale) del tipo di documento e
sul nome della DTD associata
ü Il contenuto del documento con tag XML
9
Un esempio di documento XML (1)
BOOKS.xml
<?xml version="1.0"?>
<BOOKLIST>
<BOOK>
<TITLE edition=”2000">XML Tutorial</TITLE>
<AUTHOR>Laura Papaleo</AUTHOR>
</BOOK>
…
<BOOK>
<TITLE edition=”2003" type=”XML">
Strutturare le informazioni nel web
</TITLE>
<AUTHOR>Laura Papaleo</AUTHOR>
<AUTHOR>Franco Tallero</AUTHOR>
<AUTHOR>Marco Mesiti</AUTHOR>
</BOOK>
</BOOKLIST>
Un esempio di documento XML (2)
ORDERS.xml
<?xml version="1.0"?>
<Orders>
<SalesOrder SONumber="12345">
<Customer CustNumber="543">
<CustName>ABC Industries</CustName>
<Street>123 Main St.</Street>
<City>Chicago</City>
<State>IL</State>
<PostCode>60609</PostCode>
</Customer>
<OrderDate>981215</OrderDate>
<Line LineNumber="1">
<Part PartNumber="123">
<Description> Turkey wrench: Stainless steel,
one piece construction, lifetime guarantee.
</Description>
<Price>9.95</Price>
</Part>
<Quantity>10</Quantity>
</Line>
</SalesOrder>
</Orders>
10
Un semplice esempio (3)
LEASE.xml
<?xml version="1.0"?>
<Lease>
<Leasee>ABC Industries </Leasee>
agrees to lease the property at
<Address>
123, Main St., Chicago, IL
</Address>
from
<Lessor>
XYZ Properties
</Lessor>
for a term of not less than
<LeaseTerm TimeUnit=“Months”> 18 </LeaseTerm>
at the cost of the
<Price Currency=“USD” TimeUnit=“Months”>
1000
</Price>
</Lease>
Dichiarazione di documento XML
Un file XML comincia sempre con una
dichiarazione XML
Sta ad indicare che
üil documento è un file XML
üla versione di XML usata (attualmente sempre 1.0)
La dichiarazione XML è del tipo:
<?xml version="1.0"?>
11
Dichiarazione di documento XML
Oltre all’indicazione della versione può
essere inserito:
ü il set di caratteri utilizzato → attributo encoding
ü il fatto che l’interpretazione del documento dipende da
altri documenti → attributo standalone
<?xml version="1.0” encoding = “UTF-8”
standalone = “no”?>
Questi sono i valori di default. E’
possibile non specificarli
Dichiarazione della DTD del documento
Prima del root element (l’elemento
radice) può essere dichiarata la DTD
che verrà utilizzata
Es: <!DOCTYPE Libro SYSTEM “libro.dtd”>
Vedremo in seguito come può essere
strutturata tale dichiarazione
12
Character Data Section
I simboli ‘<‘, ‘>’, ‘&’ sono usati da XML con
un preciso significato
Per usarli nel testo, in XML vengono
introdotti dei simboli “speciali” (entità
carattere) ‘&lt;’, ‘&gt;’, ‘&amp;’
A volte però può causare confusione l’uso di
tali simboli
Esempio:
Press the &lt; &lt; ENTER &gt; &gt; button
Character Data Section
E quindi possibile identificare dei blocchi di
testo come “character data” che non
contiene markup
In questo modo non si crea confusione
Tali blocchi di testo vengono chiamati
character data section e delimitati da
<![CDATA[testo]]>
<![CDATA [Press the << ENTER >> button] ]>
Il contenuto di tali blocchi non viene
processato dai parser
13
Processing Instruction
Una processing instruction contiene
informazioni richieste da una specifica
applicazione che si suppone andrà a
processare il documento XML
E’ delimitata dai simboli <? e ?>
Il contenuto
ü
ü
inizia con una parola chiave, significativa per l’applicazione che
andrà a eseguire l’istruzione
segue l’istruzione da eseguire
La sintassi del contenuto è significativa per
l’applicazione che andrà a processarla
XML - i Commenti
In XML è possibile inserire i commenti
esattamente come si può fare in HTML
<!-- commento di qualsiasi tipo -->
I commenti sono importanti per
strutturare un file che sia
comprensibile nel tempo
14
DTD
Document Type Definition
Sintassi Di Una DTD
DTD - Document Type Definition
E’ opzionale, ma è consigliabile la presenza
E’ un insieme di regole per definire la
struttura di un documento XML
Tali regole:
ü
ü
ü
stabiliscono gli elementi che possono essere usati
stabiliscono gli attributi da inserire negli elementi
impongono vincoli sulle relazioni tra gli elementi (fratelli,
elemento-sottoelemento,...)
Il DTD è un modo per fare un check sulla
strutturazione corretta di un documento XML
15
Perché è importante usare i DTD?
Sono utili per i programmatori. E’ la
definizione del tipo di documento che
andranno a processare
Utili per definire fogli di stile
Utile per creare documenti “corretti”.
Il DTD può essere visto come un vincolo
sull’informazione da inserire nel documento
Utili per creare interfacce dinamiche per i
documenti XML
DTD - rappresentazione ad albero
Un DTD può essere visto come un albero
Libro
Capitolo +
I nodi dell’albero rappresentano:
ü elementi
ü attributi
Par +
Sezioni
I nomi di elementi e attributi possono essere seguiti
da caratteri speciali (+,*,?)
Gli archi dell’albero permettono di rappresentare la
relazione
elemento-sottoelemento, elemento-attributo
16
Document Type Definition: Elementi
Gli elementi possono essere contenitori o
essere vuoti
Gli elementi contenitori possono contenere:
ü
ü
ü
testo
altri elementi (sottoelementi)
un mix dei precedenti
Nel caso di elementi che contengono
sottoelementi, con il DTD si può specificare
come i “sottoelementi occorrono”
Document Type Definition:
occorrenza di un sottoelemento
Un sottoelemento potrebbe essere
obbligatorio
Ad esempio un libro deve avere un titolo,
quindi l’elemento libro deve avere un
sottoelemento titolo
titolo
Usando la grammatica della DTD
<!ELEMENT libro (… titolo …)>
17
Document Type Definition:
Occorrenza di un sottoelemento
Un sottoelemento può essere opzionale
Ad esempio, un libro può avere un
sottotitolo, quindi l’elemento sottotitolo è
opzionale per l’elemento libro
sottotitolo
Usando la grammatica della DTD
<!ELEMENT libro (… sottotitolo? …)>
Document Type Definition:
Occorrenza di un sottoelemento
Un sottoelemento può essere ripetibile
Ad esempio, un libro ha degli autori, almeno
uno
Quindi l’elemento libro può avere una lista di
elementi autore, comunque almeno uno
autore
Usando la grammatica della DTD
<!ELEMENT libro (… autore+ …)>
18
DTD - occorrenza di un sottoelemento
Un sottoelemento può essere ripetibile e
opzionale
Ad esempio, un libro può avere dei
traduttori, oppure no
Quindi l’elemento libro può avere una lista di
elementi traduttore, ma anche nessuno
traduttore
Usando la grammatica della DTD
<!ELEMENT libro (… traduttore* …)>
DTD - Sequenze di sottoelementi
Un libro presenta diverse informazioni: gli
autori, il titolo, eventualmente i traduttori e
così via. L’elemento libro può contenere
quindi una sequenza di sottoelementi
titolo
autore
sottotitolo
Usando la grammatica della DTD
<!ELEMENT libro (titolo, autore* sottotitolo?, …)>
Nota: è rilevante l’ordine
19
DTD - Alternative di sottoelementi
Un libro può avere un IBDN oppure un
codice
ISBN
codice
Usando la grammatica della DTD
<!ELEMENT libro (… ISBN | codice …)>
DTD - Riassumendo
I costrutti visti possono essere
combinati nel modo preferito,
al fine di modellare l’informazione
<!ELEMENT A (B*, C, D?)>
<!ELEMENT A (B | C+)>
<!ELEMENT A (B, (C | D+)?, E*)>
20
DTD per una ricetta
DTD ricettario.dtd
<!ELEMENT ricettario (ricetta)*>
<!ELEMENT ricetta (titolo, ingred+,
passo+, note?)>
<!ATTLIST ricetta numero ID #REQUIRED>
<!ELEMENT titolo (#PCDATA)>
<!ELEMENT ingred (#PCDATA)>
<!ELEMENT passo (#PCDATA)>
<!ELEMENT note ANY>
<!ATTLIST passo numero ID #REQUIRED>
Dichiarare un
elemento non vuoto (1/2)
<!ELEMENT agenda (contatto*)>
<!ELEMENT contatto (nome, indirizzo+, telefono*,
email*, foto?)>
L'agenda sarà composta da zero o più
contatti con:
üun nome;
üuno o più (simbolo +) indirizzi;
üzero o più numeri di telefono;
üzero o più indirizzi di email;
üuna o nessuna (simbolo ?) fotografia.
21
Dichiarare un
elemento non vuoto (2/2)
<!ELEMENT nome (#PCDATA)>
Il nome è semplicemente una stringa
di caratteri,
Eventuali entità presenti nella stringa
vengono trasformate nei caratteri
corrispondenti
Dichiarazione di un elemento vuoto
<!ELEMENT foto EMPTY>
Ad esempio l’oggetto foto potrebbe
pensarsi equivalente al tag HTML
<IMG>
Pertanto non ha un marcatore di
chiusura né tantomeno un contenuto
Possiede solo degli attributi
22
Dichiarazione di un elemento ANY
<!ELEMENT note ANY>
Indica che il contenuto dell’elemento
può essere arbitrario
In altre parole, non viene fissato alcun
vincolo sul contenuto dell’elemento
Dichiarazione
elemento “mixed-content”
Abbiamo detto che un elemento può
avere un contenuto misto
Questo può essere richiesto a livello di
DTD
La dichiarazione di un elemento a
contenuto misto deve seguire le
seguenti regole
ü viene dichiarato una alternativa di sottoelementi
ü il primo sottoelemento deve essere #PCDATA
ü L’alternativa di sottoelementi deve essere ripetibile
23
Dichiarazione
elemento “mixed-content”
Vediamo un esempio:
<!ELEMENT emph (#PCDATA|sub|super)*>
<!ELEMENT sub (#PCDATA)>
<!ELEMENT super (#PCDATA)>
<emph>
H <sub>2</sub> O è l’acqua
</emph>
Dichiarazione di attributi
<!ATTLIST foto src CDATA #REQUIRED desc
CDATA #IMPLIED>
üsrc, nome del file bitmap necessario (#REQUIRED)
üdesc, descrizione è opzionale (#IMPLIED)
<!ATTLIST telefono tipo (casa | ufficio |
cellulare) 'casa'>
ül’elemento telefono ha un attributo tipo,
üche indica se il numero è di casa, dell'ufficio o di un
cellulare
üil valore di default è 'casa’
24
Tipi degli attributi (1/2)
CDATA
Stringhe di caratteri.
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
Tipi degli attributi (2/2)
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 par.
tonde
25
Valori di default per gli attributi
#REQUIRED
Obbligatorio
#IMPLIED
Non obbligatorio e non viene
assegnato un valore di default
"valore"
Non è obbligatorio specificare un
valore per l'attributo
#FIXED "valore"
Non è obbligatorio specificare un
valore per l'attributo ma se lo si
specifica, il valore può essere solo
quello prefissato
I tipi CDATA e NMTOKEN degli attributi
Sia CDATA che NMTOKEN vengono usati per
rappresentare stringhe di caratteri
Nel caso di NMTOKEN non ci sono restrizioni
sui caratteri che possono essere utilizzati per
la prima lettera della parola (può iniziare con
un digit)
NMTOKENS ammette la presenza di spazi
bianchi
26
Uso di identificatori e riferimenti
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
biblioteca (autori,libri)>
autori (autore)*>
libri (libro)*>
autore (nome,cognome,dataNascita)>
autore ident ID #REQUIRED>
<!-- … dichiarazione elementi di autore -->
<!ELEMENT libro (titolo, scrittoDa, data)>
<!ELEMENT scrittoDa (#PCDATA)>
<!-- … dichiarazione elementi di libro -->
<!ATTLIST scrittoDa autore IDREFS>
…
Uso di identificatori e riferimenti
<biblioteca>
<autori>
<autore ident=“001”> … </autore>
<autore ident=“002”> … </autore>
<autore ident=“003”> … </autore>
…
</autori>
<libri>
<libro scrittoDa=“001”> … </libro>
<libro scrittoDa=“002 003”> … </libro>
<libro scrittoDa=“003 001 002”> z
…
</libro>
…
</libri>
27
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)>
<!ELEMENT citta (#PCDATA)>
<!ELEMENT cap (#PCDATA)>
<!ELEMENT provincia (#PCDATA)>
<!ELEMENT telefono (#PCDATA)>
Dati
Parsed
Un esempio completo - la DTD
… continua
<!ATTLIST telefono tipo (casa |ufficio
| cellulare)'casa'>
Valore
predefinito
<!ELEMENT email (#PCDATA)>
Elemento vuoto
<!ELEMENT foto EMPTY>
<!ATTLIST foto src CDATA #REQUIRED desc
CDATA #IMPLIED>
<!ENTITY BO "40100">
Entità
<!ENTITY MO "41100">
Dichiarate
<!ENTITY RE "42100">
28
Un esempio completo - XML
Agenda.xml
<?XML version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE agenda SYSTEM "agenda.dtd">
Radice
<agenda>
DTD associata
<contatto>
<nome>Pinco Pallino</nome>
<indirizzo>
<via>Via Incognita</via>
<numero>10</numero>
<citta>Bologna</citta>
<cap>&BO;</cap>
</indirizzo>
Richiamo entità
della DTD
…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 di Pinco Pallino"/>
</contatto>
</agenda>
Elemento vuoto foto
29
Un altro esempio
<!DOCTYPE Orders[
<!ELEMENT Orders(SalesOrder)+>
<!ELEMENT SalesOrder(Customer,OrderDate,Line*)>
<!ELEMENT
Customer(CustName,Street,City,State,PostCode,tel*)>
<!ELEMENT CustName (#PCDATA)>
<!ELEMENT Street (#PCDATA)>
<!ELEMENT State (#PCDATA)>
<!ELEMENT PostCode (#PCDATA)>
<!ELEMENT tel (#PCDATA)>
<!ELEMENT OrderDate (#PCDATA)>
<!ELEMENT Line (Part,Quantity)>
<!ELEMENT Part(Description,Price)>
<!ELEMENT Quantity (#PCDATA)>
<!ELEMENT Description (#PCDATA)>
<!ELEMENT Price (#PCDATA)>
<!ATTLIST SalesOrder SONumber CDATA #REQUIRED>
<!ATTLIST Customer CustNumer CDATA #REQUIRED>
<!ATTLIST Line LineNumber CDATA #IMPLIED>
<!ATTLIST Part PartNumber CDATA #REQUIRED>
Un altro esempio 2
<!DOCTYPE WorldLawBulletin[
<!ELEMENT WorldLawBulletin (Law*,BluePageReport?)>
<!ELEMENT Law (Topic,Summary)>
<!ELEMENT Topic (#PCDATA)>
<!ELEMENT Summary ANY>
<!ELEMENT BluePageReport (Section+)>
<!ELEMENT Section (Law+)>
<!ATTLIST WorldLawBulletin Date CDATA
#REQUIRED>
<!ATTLIST Law Id ID #REQUIRED
Country CDATA #REQUIRED
RelatedLaws IDREFS #IMPLIED>
<!ATTLIST Section GeoArea CDATA #REQUIRED>
]>
30
Un altro esempio 2
<WorldLawBulletin Date=“8/8/1999”>
<Law Country=“USA” RelatedLaws = “LK75”/>
<Topic>Taxation</Topic> <Summary>...</Summary>
</Law>
<Law Id=“LK75” Country=“Italy”/>
<Topic>Import-Export</Topic> <Summary>...</Summary>
</Law>
<BluePageReport>
<Section GeoArea=“Europe”>
<Law Country=“Germany”/>
<Topic>Guns</Topic> <Summary>...</Summary>
</Law>...
</Section>
<Section GeoArea=“NorthAmerica”>
<Law Country=“USA”/>
<Topic>Transportation</Topic> <Summary>...</Summary>
</Law> ...
</Section>
</BluePageReport>
</WorldLawBulletin>
Dichiarazione di DTD
Il DTD può essere dichiarato all’inizio di ogni
documento che deve conformare a tali regole
OPPURE
Il DTD può essere inserito in un file esterno
al documento e riferito dal documento
attraverso un tag speciale posto all’inizio del
documento
OPPURE
Il DTD può essere parzialmente contenuto
nel documento e parzialmente in un file
esterno. In questo caso si parla di external
subset e internal subset
31
Dichiarazione di DTD
external
internal
Valutazione dei DTD (standard)
Cammino seguito dal parser
internal
External
subset
Prima si valuta la parte interna poi quella
esterna
32
Valutazione dei DTD (in generale)
Il comportamento presentato viene seguito
quando l’attributo standalone è posto uguale
a “no” altrimenti la componente esterna non
viene considerata
caso “yes”
caso “no”
internal
External
subset
Dichiarazione di DTD
solo esterno e solo interno
ESTERNO
Questa riga va posta dopo la dichiarazione di
documento XML
<!DOCTYPE libro SYSTEM ”libro.dtd">
Indica, attraverso la keyword SYSTEM (PUBLIC), che
la DTD è contenuta nel file libro.dtd
INTERNO
<!DOCTYPE libro
[ <!ELEMENT libro (titolo, autori+,
traduttori*)>
]>
33
Dichiarazione di DTD misto
<!DOCTYPE libro SYSTEM “libro.DTD” [
<!ELEMENT traduttori (Fname,Mname?,Lname)>
]>
Vengono inserite in più le specifiche tipiche di
elementi presenti solo nel documento
Tutte le specifiche “importanti” sono lasciate
fuori dal documento
Struttura fisica di un
documento XML
Le entità
34
XML:
Dichiarazione ed utilizzo di Entità
Abbiamo visto come organizzare logicamente
l’informazione
Al fine di razionalizzare, riusare e rendere
modulare l’informazione dal punto di vista
fisico, vengono introdotte le entità
Inoltre, le entità vengono utilizzate per
ü
ü
ü
rappresentare dati non XML (ad esempio: dati binari)
caratteri non standard
abbreviazioni per frasi e markup
Generalizzando le entità possono essere viste
come delle macro
XML:
Dichiarazione ed utilizzo di Entità
Le entità risultano utili quando l’informazione:
è utilizzata in posti diversi e la duplicazione può
causare errori e spreco di tempo
può essere rappresentata differentemente in
sistemi eterogenei
è parte di un documento di grandi dimensioni e
per ragioni pratiche è meglio spezzarla in più
parti
è di un formato diverso da quello di XML
35
XML:
Definizione di Entità
Entità
Unità di informazione identificata da un nome
Entità documento (document entity)
file utilizzato per rappresentare l’intero
documento
L’entità documento, a differenza delle altre
entità, non ha nome
L’entità documento può:
ü
ü
essere un contenitore di altre entità (entità componenti)
contenere direttamente tutto il documento
XML:
Dichiarazione ed utilizzo di Entità
Dichiarare entità all'interno di una DTD
valore
nome
<!ENTITY xml "eXtensible Markup Language">
ü
Ogni qual volta il parser incontra l'entità &xml; questa viene
sostituita con la stringa associata.
<!ENTITY cap1 SYSTEM ”/book/capitolo1.xml">
ü
Ogni qual volta il parser incontra l'entità &cap1; al suo posto
viene inserito il contenuto del file specificato
Dichiarazione di entità Vs riferimento ad
entità
36
XML: Nome di un’entità
Il nome di un’entità deve seguire la
seguente grammatica
[ L | - | : ]{ L | . | _ | - | : | D }*
dove L è un lettera dell’alfabeto e D un
digit
ü Es: :myEnt, my.Ent12
ü Il nome è case-sensitive
ü Es: myEnt è diverso da MyEnt
XML: Valore di un’entità
Il valore di un’entità è racchiuso tra
“ ” oppure ‘ ’
ü Esempio
“World Wide Web” o ‘World Wide Web’
Si usano ‘ ’ quando all’interno si
usano “ ”
ü Esempio
‘Egli disse “Arrivederci” e se ne andò’
37
XML: Entità built-in
Ogni processore XML ha un piccolo
insieme di entità predefinite
Ad esempio:
ü &lt;
ü &gt;
ü &amp;
ü &apos;
ü &quot;
→
→
→
→
→
‘<’
‘>’
‘&’
‘‘’
‘“’
Queste entità sono usate per non
creare problemi al processore XML
XML: Entità carattere
Una entità carattere viene introdotta per
rappresentare un carattere in un certo set di
caratteri
Un riferimento ad entità carattere ha lo
stesso formato di un riferimento ad entità
testuale
Viene aggiunto un # tra & e il nome
dell’entità
ü
Es: &#60 è uguale a ‘<’ in ASCII; &nbsp = blank_space
38
XML: Entità testuali interne
DTD
Internal Text Entity Declaration
<!ENTITY WWW "World Wide Web">
XML
Entity Reference
<p>We all use the &WWW;.</p>
Logically equivalent to
actually appearing
<p>We all use the World Wide Web.</p>
External Text Entities
Mylife.xml
DTD…
<mylife>
Chap1.xml
<teen>yada yada</teen>
Gli elementi logici
possono essere
divisi
in entità fisiche
distinte
Chap2.xml
<adult>… … … … </adult>
</mylife>
39
External Text Entities
DTD
External Text Entity Declaration
<!ENTITY chap1 SYSTEM "http://...chap1.xml">
XML
Entity Reference
URL
<mylife> &chap1; &chap2;</mylife>
<mylife>
<teen>yada yada</teen>
<adult> blah blah</adult>
</mylife>
Logically equivalent to
inlining file contents
Entità: Unparsed (& "Binary")
DTD
<!ENTITY fusion SYSTEM "http://...
fusion.ps" NDATA ps>
<!attlist fullPaper source ENTITY #REQUIRED>
<!NOTATION ps SYSTEM "ghostview.exe">
XML
<fullPaper source="fusion"/>
40
XML Entità:
Dichiarazione di notazioni
<!NOTATION GIF SYSTEM "GIF">
Quando ci si riferisce a dati binari esterni,
occorre dichiarare una notation che
identifichi il tipo di dati a cui ci si riferisce
L'applicazione che riceve l'informazione di
notazione provvederà ad utilizzarla per
interpretare correttamente l'entità esterna
XML Entità:
Dichiarazione Entità Parametriche
Vengono espanse e interpretate nella DTD e
non espanse e passate all’applicazione
Presenti solo nella DTD con % davanti
<!ENTITY % indr_corto
citta)>’>
‘<!ELEMENT indirizzo (via,
<!ENTITY % indr_lungo ‘<!ELEMENT indirizzo (via,
numero, citta, cap, provincia)>’>
poi utilizzo...
<!ELEMENT contatto (nome, cognome,%indr_corto;)> …
41
XML Entità:
Esempio di entità parametriche
Common.dtd
<!ENTITY % alarmStatusType "UnderRepair | Critical | … ">
<!ENTITY % availabilityStatusType "InTest | Failed |
PowerOff | OffLine | … ">
…
…
<!ENTITY % statusAttributes
"alarmStatus (%alarmStatusType;) #REQUIRED
availabilityStatus (%availabilityStatusType;) #REQUIRED
controlStatus (%controlStatusType;) #REQUIRED
standByStatus (%standByStatusType;) #REQUIRED
unknownStatus (%boolean;) #REQUIRED">
Character Set
42
Set di caratteri
I markup di XML e il contenuto dei documenti
possono essere riconosciuti solo quando i
caratteri utilizzati conformano a uno schema
di codifica standard
Gli standard più importanti:
ü
ü
ü
ü
ASCII
ISO 8859
UNICODE
ISO 10646
Documento XML: I Caratteri
Un documento XML è una sequenza di
caratteri (characters) che descrivono:
ü Contenuto del documento
ü Tags
Le macchine “non capiscono” i
caratteri
Per memorizzare i caratteri si usano
codici
T
84
43
Character Set
Character set
insieme di corrispondenze numero-carattere
Font
insieme di corrispondenze
numero-“formato carattere”
Ci possono essere dei problemi quando si
passa da una macchina all’altra perché
cambia il legame numero-carattere
American Standard
Code for Information Interchange
ASCII
American Standard Code for Information
Interchange
Standard per un set di caratteri
Assegna un significato comune per i caratteri
utilizzati
Esempio
in ASCII il numero 84 rappresenta la ‘T’
ASCII definisce un valore per solo 127
caratteri (rappresentazione a 7-bit)
44
American Standard
Code for Information Interchange
L’ottavo bit viene lasciato come
check-bit
ASCII è uno standard ISO/IEC 646
Problema: Come faccio a
rappresentare altri caratteri, oltre ai
127?
Extended ASCII
Nei sistemi più moderni non è necessario un
bit di controllo
à rappresentazione a 8 bit (255 caratteri)
Nuovo problema
non c’era accordo su quali caratteri
rappresentare con i “nuovi” 128 numeri
Esempio:
Apple:
MS-DOS:
è – 142
è – 130
45
Extended ASCII
Questo problema è stato affrontato da
ISO 8859 che definisce (tra gli altri)
un character set standard per
l’alfabeto latino (chiamato 8859/1)
Questo standard è utilizzato da Web
browsers, Microsoft Windows, Sun OS
UNIX
Compatibile con ISO 646. L’ottavo bit è
0 per i primi 127 caratteri
Extended ASCII
‘/1’ identifica solo una versione di 8859
Ci sono però altre varianti per coprire i
requisiti di altre lingue
Esempio:
ISO 8859/6 ASCII + Arabic
ISO 8859/7 ASCII + Greco moderno
Problema:
Si riescono a rappresentare ancora “pochi
caratteri”
46
UNICODE e ISO/IEC 10646
Per affrontare i problemi dei
precedenti standard si è pensato di
usare più di un byte per codificare ogni
carattere
Nascono così due nuovi standard:
UNICODE
ISO/IEC 10646
Standard UNICODE: Caratteristiche
Versione attuale 2.1
Primo tentativo ad usare 2 byte per
rappresentare caratteri (65.535 caratteri)
...ma continua ad avere problemi per
rappresentare il cinese
à viene introdotto ISO/IEC 10646: usa fino a
4 byte (oltre 2 milioni di caratteri)
XML ha adottato lo standard ISO 10646 come
formato di codifica dei caratteri
47
ISO/IEC 10646
ISO 10646 è formato da un insieme di
schemi di codifica:
UCS (Universal Character Set)
Schema
fisso
BMP (Basic Multilanguage Plane)
UTF (UCS Trasformation Format)
UTF-8
Schema
variabile
UTF-16
Dichiarazione set di caratteri in XML
Nella dichiarazione di “documento XML”
<?xml ... encoding=“UTF-8” ... ?>
Questo è il formato di default (questo
attributo non è obbligatorio)
Curiosità
si assume che questo è il formato del
documento se i primi 4 byte del file sono
‘3C 3F 78 6D’ (corrispondono a ‘<?xm’)
48
Dichiarazione set di caratteri in XML
Si richiede la dichiarazione della
codifica del documento per gli
standard diversi da UTF-8 e UTF-16
Esempio
Per dichiarare ISO 8859 occorre:
<?xml ... encoding=“ISO-8859-1” ... ?>
Riferimenti per gli standard di codifica
ISO (International Organization for Standardization).
ISO/IEC 10646-1993 (E). Information technology -- Universal Multiple-Octet
Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane.
[Geneva]: International Organization for Standardization, 1993 (plus
amendments AM 1 through AM 7). ISO/IEC 10646-2000
ISO (International Organization for Standardization).
ISO/IEC 10646-1:2000. Information technology -- Universal Multiple-Octet Coded
Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane.
[Geneva]: International Organization for Standardization, 2000. Unicode
The Unicode Consortium.
The Unicode Standard, Version 2.0. Reading, Mass.: Addison-Wesley Developers
Press, 1996. Unicode3
The Unicode Consortium.
The Unicode Standard, Version 3.0. Reading, Mass.: Addison-Wesley Developers
Press, 2000. ISBN 0-201-61633-5.
49
Documenti well-formed
e documenti validi
Documento XML ben formato (1/2)
Presenza “elemento radice”
ü cioè un elemento che contiene tutti gli elementi del
documento
Bilanciamento dei marcatori
ü Ad ogni marcatore di apertura deve corrisponderne
uno di chiusura
w a meno di un elemento vuoto --> in questo caso <tagvuoto/>
Valori degli attributi tra virgolette
<img src="image.gif" width="50"
height="40" border="0"/>
50
Documento XML ben formato (2/2)
Uso di entità dichiarate
üL'utilizzo di entità è consentito solo previa
dichiarazione delle stesse all'inizio del documento XML
o nella DTD
üAl posto dei caratteri speciali &, <, >, ', ", devono
essere usate le entità interne predefinite
n
&amp; &lt; &gt; &apos; &quot;
Tutti gli altri caratteri speciali devono
essere dichiarati prima di poter essere
usati
Un esempio SI!
<?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>
51
Un esempio NO!
<?XML version="1.0"?>
<!DOCTYPE ricettario SYSTEM “ricettario.dtd”>
Entità speciale
<ricettario>
non dichiarata
<ricetta numero="1">
<titolo>...
<ingred>200 &g; di ... </ingred>
<ingred>...</ingred>
Tag non
<passo numero=1>...</passo>
chiuso
<passo numero=2>...</passo>
</ricetta>
</ricettario>
Valori non tra
virgolette
Documento XML Valido
Un documento XML è valido se
E’ ben formato
Rispetta una struttura descritta in una
Document Type Definition
I documenti XML devono essere validi nel caso di
strutturazione di documenti di una certa importanza
Esempio:
in una azienda dove è fondamentale mantenere una
stessa struttura
52
Document Type Definitions (DTDs)
Quando un documento XML viene processato,
esso viene confrontato con la DTD associata
(se ce ne è una)
Questo confronto è un processo che viene
definito validazione e viene attuato dal
parser
Un parser è un software che fa un check per
assicurarsi che il documento XML segua una
particolare sintassi
Parser per XML
Un non-validating parser controlla che un
documento segua le regole di sintassi XML
ü
costruisce un albero dai TAG del documento
Un validating parser
ü
ü
ü
controlla la sintassi corretta del documento
costruisce l'albero dei tag
confronta l'uso dei tag nel documento per essere conforme alle
regole della DTD
la DTD è necessaria solo nel caso in cui si
voglia creare un documento XML valido
53
Namespace
XML:
Namespace (Raccom. W3C 1999)
Attraverso i Namespace è possibile dichiarare
un insieme di nomi il cui significato non è
ambiguo, cioè tutti sono d’accordo sul loro
significato
i Namespace permettono di distinguere 2
elementi con con stesso nome, ma con
significato diverso
Un Namespace XML è una collezione di nomi
identificati da un URL
vengono usati nel doc. XML come nomi di
elementi e di attributi
54
XML: Namespace
Identificare i namespaces che verranno usati
Identificare dove i tag che hanno bisogno di
namespace sono posizionati
Il tag lo si fa precedere dal namespace
relativo
Il nome di un elemento/attributo è
composto da 2 parti: prefix:name
Dichiarare e usare i Namespaces
A livello di documento
<document xmlns:name_sp=“fixed_URL”>
<name_sp:tag_nm> content </tag_nm>
ambiguità
<Info>
<person>
<name>Rosalie Panelli</name>
<address>33 Terry Dr.</address>
</person>
<webSite>
<name>XML Italia</name>
<address>http://www.xml.it</address>
</webSite>
</Info>
55
Dichiarare e usare i Namespaces
Soluzione all’esempio
<Info>
<person xmlns:person=“http://namespaces.xml.it/person”>
<person:name>Rosalie Panelli</person:name>
<person:address>33 Terry Dr.</person:address>
</person>
<webSite
xmlns:webSite=“http://namespaces.xml.it/webSite”>
<webSite:name>
XML Italia
</webSite:name>
<webSite:address>
http://www.xml.it
</webSite:address>
</webSite>
</Info>
Dichiarare e usare
i Namespaces all’interno di DTD
Il namspace può essere dichiarato a
livello di DTD
Tutti i documenti che conformano con
il DTD usano tale namespace
<!ELEMENT person
(person:name, person:address)>
<!ATTLIST person xmlns:person CDATA #FIXED
“http://namespaces.xml.it/person”>
<!ELEMENT person:name
(#PCDATA)>
<!ELEMENT person:address (#PCDATA)>
56

Documenti analoghi

XML: cosa è

XML: cosa è Le specifiche sono state rilasciate come W3C Recommendation nel 1998 e aggiornate nel 2004 XML deriva da SGML, un linguaggio di mark-up

Dettagli

progettazione e produzione multimediale i4 – html, xml, xhtml

progettazione e produzione multimediale i4 – html, xml, xhtml Alle funzionalità iniziali di lettura e presentazione dell’informazione si è presto sentita l'esigenza di affiancare un supporto a una qualche forma di interattività superiore a quella offerta dall...

Dettagli

XML e basi di dati - Dipartimento di Matematica e Informatica

XML e basi di dati - Dipartimento di Matematica e Informatica ID e IDREF, che possono essere visti come le controparti XML delle chiavi e delle chiavi esterne delle basi di dati relazionali. Oltre agli attributi, possono essere definite delle entità. Un’entit...

Dettagli

Ai miei sponsor ufficiali

Ai miei sponsor ufficiali indica che l’elemento articolo ha come sottoelemento uno o più elementi di paragrafo. Il carattere “+” indica il relativo numero di occorrenze. Un insieme di caratteri speciali ha lo scopo di indi...

Dettagli

appendice_2

appendice_2 che viene usato sul web per descrivere dati strutturati. Si procede dunque inizialmente con una presentazione generale dell’argomento, in modo da formalizzare alcuni termini informatici ed individu...

Dettagli