Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – [email protected] – Università della Basilicata XML >> Sommario Dettagli e Approfondimenti Un Ulteriore Esempio Il Sistema PdD Dettagli sulla Sintassi Entità DTD Validatori G. Mecca - Tecnologie di Sviluppo per il Web 2 XML >> Dettagli e Approfondimenti >> Un Ulteriore Esempio Un Ulteriore Esempio Il Sistema PdD un sistema per la costruzione di questionari cartacei ed elettronici Esigenza costituire e gestire archivi di domande per varie discipline creare e stampare questionari sulla base degli archivi XML è una soluzione ideale G. Mecca - Tecnologie di Sviluppo per il Web 3 XML >> Dettagli e Approfondimenti >> Un Ulteriore Esempio Un Ulteriore Esempio Idea costituire archivi di domande e questionari come file XML sulla base di un DTD fissato Attenzione fisicamente si tratta di file di testo ma la struttura logica che c’è dietro è quella di un albero >> PdD-archivioQuesitiGeografia.xml >> DOM Inspector G. Mecca - Tecnologie di Sviluppo per il Web 4 XML >> Dettagli e Approfondimenti >> Dettagli Sulla Sintassi Dettagli sulla Sintassi Regole generali sensibile alle maiuscole convenzione: minuscole Identificatori (nomi) iniziano per lettera oppure _ oppure : sequenza di lettere, cifre, _ Namespace attributi speciali degli elementi <collezioneQuesiti xmlns:pdd=“http://www.db.unibas.it”> <pdd:quesito>...</pdd:quesito> G. Mecca - Tecnologie di Sviluppo per il Web 5 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi Dettagli sulla Sintassi Contenuto di un documento XML Istruzioni di Elaborazione es: prologo <? xml version=“1.0 ?> es: foglio di stile <?xml-stylesheet type="text/xsl" href="PdD-stile.xsl"?> Dichiarazione di DTD (DOCTYPE) >> Descrizione dell’albero elementi, attributi, valori altri oggetti: commenti, entità G. Mecca - Tecnologie di Sviluppo per il Web 6 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi Dettagli sulla Sintassi Elementi tag di apertura (“start tag”) es: <quesito> tag di chiusura (“end tag”) es: </quesito> tag di elem. vuoto (“empty element tag”) es: <soluzione lettera="b" /> Elemento principale deve essere unico es: <collezioneQuesiti disciplina="Geografia"> ... </collezioneQuesiti> G. Mecca - Tecnologie di Sviluppo per il Web 7 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi Dettagli sulla Sintassi Attributi <soluzione lettera="b" /> Valori stringhe di caratteri Commenti <!-- testo del commento --> Entità definizioni di costanti o “macro” G. Mecca - Tecnologie di Sviluppo per il Web 8 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi Entità Due categorie general entity, parameter entity (nel DTD >>) General Entity definite nel DTD, utilizzate nel documento es: quesiti di analisi <!ENTITY pigreco “3.1412”> utilizzo della costante: &<nome>; es: &pigreco; possono essere definite all’esterno <!ENTITY capitolo1 SYSTEM “cap1.xml”> per includere il contenuto di cap1.xml in libro.xml G. Mecca - Tecnologie di Sviluppo per il Web 9 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi Entità Esistono varie entità predefinite di XML corrispondono ai caratteri riservati della sintassi esempi: < < > > & & ' ‘ " “ Più in generale esiste un’entità predefinita per ogni carattere del set di caratteri ISO/IEC 10646 &#<n>, dove <n> è il codice esadecimale del carattere ISO es: > equivale a > (>) G. Mecca - Tecnologie di Sviluppo per il Web 10 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Schema per il documento XML vincoli sulla struttura dell’albero Sintassi per i DTD non è basata su XML Esempio <!ELEMENT archivioDomande (elencoArgomenti, elencoQuesiti)> <!ATTLIST archivioDomande disciplina CDATA #REQUIRED> <!ELEMENT elencoArgomenti (argomento)* > ... G. Mecca - Tecnologie di Sviluppo per il Web 11 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Riferimento al DTD nodo DOCTYPE riporta il riferimento all’URI del DTD (relativo o assoluto) es: <!DOCTYPE archivioDomande SYSTEM "pdd_0_2.dtd"> Attenzione la presenza dello schema è opzionale documenti validi e documenti ben formati G. Mecca - Tecnologie di Sviluppo per il Web 12 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD DTD interno il DTD può essere contenuto nel file XML <!DOCTYPE archivioDomande [ <!ELEMENT archivioDomande (elencoArgomenti,elencoQuesiti)> <!ATTLIST archivioDomande disciplina CDATA #REQUIRED … ]> G. Mecca - Tecnologie di Sviluppo per il Web 13 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Identificatore del DTD normalmente: identificatore di “sistema” (SYSTEM) Identificatori pubblici alcuni DTD molto utilizzati hanno un “nome” pubblico (PUBLIC); es: il DTD di XHTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN“ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> G. Mecca - Tecnologie di Sviluppo per il Web 14 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Contenuto del DTD dichiarazione di elementi dichiarazioni di attributo dichiarazione di entità Parameter Entity pezzi di DTD da riutilizzare varie volte sono utilizzate nel DTD e non nel doc. xml (differenza con le entità generali) G. Mecca - Tecnologie di Sviluppo per il Web 15 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Utilizzo tipico definisco la struttura di un albero in un DTD riutilizzo la struttura in un altro DTD senza doverla ridefinire Esempio collezioneProve.dtd: collezione di questionari <!ENTITY % collezioneQuesiti SYSTEM “collezioneQuesiti_0_2.dtd”> nel DTD: %collezioneQuesiti; >> collezioneProve.dtd G. Mecca - Tecnologie di Sviluppo per il Web 16 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Definizione degli elementi <!ELEMENT nome (contenuto)> es: <!ELEMENT elencoQuesiti (quesito)* > Una sola dichiarazione per ogni nome Modello di contenuto (“content model”) ELEMENT ONLY elementi combinati con * + ? TEXT (#PCDATA) MIXED (#PCDATA | <el1> | <el2> | … )* EMPTY ANY G. Mecca - Tecnologie di Sviluppo per il Web 17 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Utilizzo di EMPTY per quegli elementi che hanno attributi ma non hanno contenuto nè sottoelementi è quasi sempre possibile evitarlo, tranne che a scopo di presentazione (es: HTML) Esempio <!ELEMENT soluzione <soluzione lettera="b" /> <!ELEMENT difficolta <difficolta valore="0" /> G. Mecca - Tecnologie di Sviluppo per il Web EMPTY> EMPTY> 18 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Utilizzo di ANY per quegli elementi di cui non si vuole vincolare il contenuto Esempio <!ELEMENT risposta ANY> nelle risposte proposte per una domanda è opportuno poter specificare elementi diversi; es: immagini, o testo formattato G. Mecca - Tecnologie di Sviluppo per il Web 19 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Definizione degli attributi <!ATTLIST nomeEl Definizione nomeAttr listaDefAttributi> dell’attributo tipo vincolo Esempio <!ATTLIST soluzione lettera CDATA #REQUIRED> G. Mecca - Tecnologie di Sviluppo per il Web 20 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Tipo dell’attributo CDATA: testo ID: identificatore; non ammette duplicati IDREF: riferimento ad un ID (integr. ref.) IDREFS: riferimenti ad una lista di ID (integrità referenziale) tipo enumerato: (val1 | val2 | … | valn) es: centesimi (“1” | “2” | “5” | “10” | “20” | “50””) NMTOKEN, NMTOKENS G. Mecca - Tecnologie di Sviluppo per il Web 21 XML >> Dettagli e Approfondimenti >> Dettagli sulla Sintassi DTD Vincoli sull’attributo #REQUIRED obbligatorio es: <!ATTLIST soluzione lettera CDATA #REQUIRED> #IMPLIED opzionale es: <!ATTLIST elencoQuesiti disciplina CDATA #IMPLIED> valore opzionale con v. standard es: <!ATTLIST difficolta valore CDATA "1"> #FIXED valore valore fissato es: <!ATTLIST difficolta valore "1“ #FIXED> G. Mecca - Tecnologie di Sviluppo per il Web 22 XML >> Dettagli e Approfondimenti >> Validatori Validatori Esistono vari validatori alcuni supportano solo DTD altri anche XMLSchema Browser tutti i principali browser effettuano la convalida dell’XML IE6, Mozilla, Netscape G. Mecca - Tecnologie di Sviluppo per il Web 23 XML >> Dettagli e Approfondimenti >> Validatori Validatori In questo corso xmlvalid, semplice da usare, efficace Altri esempi RXP – Univ. of Edimburgh http://www.ltg.ed.ac.uk/~richard/xml-check.html XSV – Univ. of Edimburgh, W3C http://www.w3.org/2001/03/webdata/xsv Altri validatori http://w3.org/XML, http://www.w3.org/XML/Schema G. Mecca - Tecnologie di Sviluppo per il Web 24 XML >> Sommario Riassumendo Un Ulteriore Esempio Il Sistema PdD Dettagli sulla Sintassi Entità DTD Validatori G. Mecca - Tecnologie di Sviluppo per il Web 25 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. G. Mecca - Tecnologie di Sviluppo per il Web 26