290 likes | 397 Views
XML e DTD. il "PROLOG“ contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. il " DOCUMENT INSTANCE “ contiene i dati veri e propri. Struttura Logica. Gli elementi.
E N D
il "PROLOG“ contiene: • dichiarazione della versione di XML; • commenti (facoltativi); • dichiarazione del DOCUMENT TYPE. • il "DOCUMENT INSTANCE“contiene i dati veri e propri.
Gli elementi Sono 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/>)
DTD • In caso di external set il DTD di riferimento viene "chiamato" <!DOCTYPE label SYSTEM "/URL/della/risorsa">. • <!DOCTYPE nomeradice[DTD]>
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
Formattazione del testo • dit.unitn.it/~srossi/info-um.html • Esempio3
Attributi • Simili agli attributi HTML • Nomi univoci • <STUDENTE> • <corso>LT-2000</corso> • <email>mario@unitn.it</email> • <matricola>5555ep</matricola> • <nome>Mario Rossi</nome> • </STUDENTE>
<STUDENTE corso="LT-2000" email="mario@unitn.it" matricola="5555ep"> • Mario Rossi • </STUDENTE>
Attributi e DTD • <!ATTLIST nome NomeAttributo TYPE ValoreDefault NomeAttributo TYPE ValoreDefault NomeAttributo TYPE ValoreDefault >
<!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>
"CDATA"" indica che l'attributo avrà la forma di una stringa di caratteri; • "#REQUIRED" indica che l'attributo è obbligatorio.
Tipi di Attributi • Attributo CDATA (character data): • Il valore dell'attributo può contenere qualsiasi carattere. • <STUDENTE email="!mario@unitn.it">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>
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
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“>
Esercizio • dit.unitn.it/~srossi/info-um.html • Esempio8 • Scrivere il DTD
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> ..... • ]>
<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
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.
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".
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.
<!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;).
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: • & = & • &bt; = < • > = > • ' = ' • " = "
DTD: ENTITY In 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.
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)
<!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
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