XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi);...

29
XML e DTD

Transcript of XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi);...

Page 1: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

XML e DTD

Page 2: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

– il "PROLOG“ contiene: • dichiarazione della versione di XML; • commenti (facoltativi); • dichiarazione del DOCUMENT TYPE.

– il "DOCUMENT INSTANCE“ contiene i dati veri e propri.

Page 3: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Struttura Logica

Page 4: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Gli elementiSono i "pezzi" che compongono il documento e

possono essere di due tipi:

– ELEMENTI con CONTENUTO, così definiti: start-tag - Contenuto dell'elemento - end-tag ("<" , NAME , ">" ) cont. el. ( "<" , "/" , "NAME" , ">" ) Esempio: <nome> Paolo </nome>

– ELEMENTI VUOTI, così definiti: - start-tag ( "<" , NAME , ">" ) - end-tag ( "<" , "/" , "NAME" , ">" ) Esempio: <VUOTO></VUOTO> (si può abbreviare con <VUOTO/>)

Page 5: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

DTD

• In caso di external set il DTD di riferimento viene "chiamato" <!DOCTYPE label SYSTEM "/URL/della/risorsa">.

• <!DOCTYPE nomeradice [DTD]>

Page 6: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Più tipi di content specification

TIPO CONTENUTO PERMESSO

EMPTY (vuoto) 0

ANY (qualunque cosa) any

MIXED Dati o sotto-elementi

ELEMENT SOLO sotto elementi

Page 7: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

EsempioTIPO COME SI DICHIARA

EMPTY (vuoto) <!ELEMENT VUOTO1 EMPTY>

ANY (qualunque cosa)

<!ELEMENT QUI-QUO.QUA ANY>

MIXED <!ELEMENT nome (RILIEVO)> <!ELEMENT RILIEVO (#PCDATA)>

MIXED <!ELEMENT nome (#PCDATA|EMPH)>

ELEMENT <!ELEMENT label (nome,via,città,)>

Page 8: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

• Elementi alternativi (INDIRIZZO|EMAIL)

• Elementi opzionali (EMAIL?)

• * = l'asterisco indica qualsiasi numero da 0 a n

• + = il simbolo "più" indica qualsiasi numero da 1 a n

Esempio5.xml

Page 9: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Formattazione del testo

• dit.unitn.it/~srossi/info-um.html

• Esempio3

Page 10: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Attributi

• Simili agli attributi HTML• Nomi univoci

• <STUDENTE>• <corso>LT-2000</corso>• <email>[email protected]</email>• <matricola>5555ep</matricola>• <nome>Mario Rossi</nome>• </STUDENTE>

Page 11: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

• <STUDENTE corso="LT-2000" email="[email protected]" matricola="5555ep">

• Mario Rossi

• </STUDENTE>

Page 12: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Attributi e DTD

• <!ATTLIST nomeNomeAttributo TYPE ValoreDefault

NomeAttributo TYPE ValoreDefault

NomeAttributo TYPE ValoreDefault >

Page 13: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

• <!ELEMENT STUDENTE (#PCDATA)>

• <!ATTLIST STUDENTE corso CDATA #REQUIRED>• <!ATTLIST STUDENTE email CDATA #REQUIRED>• <!ATTLIST STUDENTE matricola CDATA #REQUIRED>

• <!ATTLIST STUDENTE corso CDATA #REQUIRED• email CDATA #REQUIRED• matricola CDATA #REQUIRED>

Page 14: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

• "CDATA"" indica che l'attributo avrà la forma di una stringa di caratteri;

• "#REQUIRED" indica che l'attributo è obbligatorio.

Page 15: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Tipi di Attributi

• Attributo CDATA (character data):– Il valore dell'attributo può contenere qualsiasi

carattere.– <STUDENTE email="[email protected]">Mario Rossi

</STUDENTE>• Attributo NMTOKEN:

– Questo attributo può contenere qualsiasi stringa che sia un NAME-TOKEN, cioè contenga caratteri alfanumerici (numeri e lettere) più i seguenti caratteri: "." (punto), "-" (meno), "_" (trattino basso), ":" (due punti).

– <STUDENTE email="mario">Mario Rossi</STUDENTE>

Page 16: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Tipi di Attributi

• Attributo NMTOKENS– Questa dichiarazione è simile a quella precedente,

solo che permette di specificare più di un NMTOKEN separato dagli altri da uno spazio vuoto

– <STUDENTE corso="Linguaggi e Traduttori 2002">Mario Rossi</STUDENTE>

• Attributo ENUMERATED: – E' un tipo di attributo che può assumere un valore

solo tra un insieme predefinito di possibili valori.– <!ATTLIST STUDENTE indirizzo (informatica |

organizzazione) “informatica”>

Esempio6.xml

Page 17: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

• REQUIRED: – ogni elemento contenente questo attributo deve specificarne un

valore. Un valore mancante può causare un errore.• IMPLIED:

– indica che questo attributo è opzionale. L'elaboratore può ignorare questo attributo se non viene rilevato alcun valore.

• FIXED: – permette di fissare nel DTD il valore che quell'attributo può

assumere.– <!ATTLIST STUDENTE corso CDATA #FIXED lt-2002>

• DEFAULT: – indica un valore che il sistema usa in caso non sia specificato

niente di differente.– <!ATTLIST STUDENTE corso CDATA NMTOKEN "lt-2002“>

Page 18: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Esercizio

• dit.unitn.it/~srossi/info-um.html

• Esempio8

• Scrivere il DTD

Page 19: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Tipi di Attributi

• Attributi ID, IDREF e IDREFS:– Servono quando vengono fatti dei riferimenti ad altri elementi del

documento.

• ESEMPIO: sto lavoando su un libro.• <DOCTYPE BOOK [....• <!ELEMENT CHAPTER (TITLE,P+)>• <!ATTLIST CHAPTER MY-ID ID #IMPLIED>• <!ELEMENT CROSS-REFERENCE EMPTY>

• <!ATTLIST CROSS-REFERENCE TARGET

IDREF #REQUIRED> ..... • ]>

Page 20: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

• <CHAPTER MY-ID="INTRODUZIONE">

• "Come abbiamo visto nel capitolo

<CROSS-REFERENCE TARGET="INTRODUZIONE"/>, l'XML permette di creare riferimenti ad altre parti del testo"

Esempio7.xml

Page 21: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Tipo di attributi: IDREFS

Il tipo IDREFS è simile a IDREF, solo che consente l'utilizzo di più valori separati da spazi.

Lo si usa quando si vuole far riferimento a più identificativi contemporaneamente.

Tornando all'esempio dei capitoli, potrei voler far riferimento a più capitoli in uno stesso punto.

Page 22: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Esempio

Per permettere ciò, la dichiarazione dovrebbe essere fatta come segue:

<!ATTLIST CROSS-REFERENCE TARGET IDREFS #IMPLIED>

Il modo di usare questa dichiarazione sarebbe il seguente:

"Come abbiamo visto nei capitoli <CROSS-REFERENCE TARGET="INTRODUZIONE CAP1 CAP5"/>, l'XML permette di creare riferimenti ad altre parti del testo".

Page 23: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Tipo di attributi: ENTITY e ENTITIES

Il valore dell’attributo deve fare riferimento a un'entità binaria esterna dichiarata nella DTD.

Un' entità è un modo per riferirsi a degli oggetti che non necessariamente devono essere trattati come oggetti di un documento XML.

Faccio riferimento ad una risorsa esterna (in genere) o interna e la includo così nel mio documento.

Sarà il foglio di stile a dire cosa ne voglio fare.

Page 24: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

• <!ENTITY EntityName EntityDefinition>

• un documento che parla di DTD e di non voler scrivere per esteso ogni volta "Document Type Definition“

• <!ENTITY dtd "Document Type Definition">• .... introduciamo il concetto di DTD (&dtd;).

Page 25: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Entità predefinite

• Servono per far sì che i caratteri normalmente interpretati come MARKUP possano essere utilizzati come caratteri di testo (ad esempio per scrivere un manuale HTML).

• Sono i seguenti: – &amp; = & – &bt; = < – &gt; = > – &apos; = ' – &quot; = "

Page 26: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

DTD: ENTITYIn XML possono essere classificate in due

categorie:analizzabili e non analizzabili.

• Le entità non analizzabili sono invece dei file esterni ai quali si fa riferimento, quali immagini o altro, che non possono essere interpretati direttamente dall’elaboratore XML.Serve una definizione e una “annotazione” per il loro formato.

Page 27: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Tipo di attributi: ENTITY e ENTITIES

<!ATTLIST BOOK-REF TARGET ENTITY #REQUIRED>

<!ENTITY libro1 SYSTEM "http://www...../libro.html" NDATA HTML>

Attribuisco un nome (libro1) ad un'entità.Quando uso un elemento book-ref voglio fare

riferimento all'entità libro1 che fa riferimento al documento HTML (quindi esterno al documento XML)

Page 28: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

<!ENTITY NuovaImmagine SYSTEM “immagine3.gif” NDATA GIF><!NOTATION GIF SYSTEM

“/Utility/Gifview.exe”>

che indica all’elaboratore di XML di utilizzare Gifview.exe per elaborare l’entità di tipo GIF ogni volta che essa viene rilevata

Page 29: XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.

Un altro esempio è se voglio inserire nel mio documento una figura. Sarà il foglio di stile a dire che voglio includerla nel mio documento XML.

<!ATTLIST BOOK-REF TARGET ENTITY #REQUIRED> <!ENTITY figura27 SYSTEM "http://www.unitn.it/unitn.gif" NDATA

GIF> <ARTICOLO>

... <BOOK-REF TARGET="figura27> ...

</ARTICOLO>

Esempio6.xml