XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi);...
-
Upload
dario-lorenzi -
Category
Documents
-
view
214 -
download
2
Transcript of XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi);...
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 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/>)
DTD
• In caso di external set il DTD di riferimento viene "chiamato" <!DOCTYPE label SYSTEM "/URL/della/risorsa">.
• <!DOCTYPE nomeradice [DTD]>
Più tipi di content specification
TIPO CONTENUTO PERMESSO
EMPTY (vuoto) 0
ANY (qualunque cosa) any
MIXED Dati o sotto-elementi
ELEMENT SOLO sotto elementi
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à,)>
• 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>[email protected]</email>• <matricola>5555ep</matricola>• <nome>Mario Rossi</nome>• </STUDENTE>
• <STUDENTE corso="LT-2000" email="[email protected]" matricola="5555ep">
• Mario Rossi
• </STUDENTE>
Attributi e DTD
• <!ATTLIST nomeNomeAttributo 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="[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>
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: 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.
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