540 likes | 679 Views
Tecnologie di Sviluppo per il Web. XML: Concetti Fondamentali. versione 2.0. Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina). XML >> Sommario. Concetti Fondamentali. Introduzione Modello Logico Alberi XML (“InfoSet”) Sintassi XML
E N D
Tecnologie di Sviluppo per il Web XML: Concetti Fondamentali versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – mecca@unibas.it – Università della Basilicata
XML >> Sommario Concetti Fondamentali • Introduzione • Modello Logico • Alberi XML (“InfoSet”) • Sintassi XML • Il Successo di XML • Spazi di Nomi (“Namespace”) • Schemi • DTD • XMLSchema – cenni • DOM (Document Object Model) • Utilizzo di XML nelle Applicazioni Web G. Mecca - Tecnologie di Sviluppo per il Web
XML è la tecnologia che risolverà tutti i problemi dello sviluppo Web Il Webmaster “smanettone” XML >> Concetti Fondamentali >> Introduzione Introduzione • Che cos’è XML ? G. Mecca - Tecnologie di Sviluppo per il Web
XML è la tecnologia che risolverà tutti i problemi della gestione di documenti elettronici L’esperto di documenti Il Webmaster “smanettone” XML >> Concetti Fondamentali >> Introduzione Introduzione • Che cos’è XML ? G. Mecca - Tecnologie di Sviluppo per il Web
XML è la tecnologia che risolverà tutti i problemi dello scambio di dati tra applicazioni L’integratore di sistemi informativi L’esperto di documenti Il Webmaster “smanettone” XML >> Concetti Fondamentali >> Introduzione Introduzione • Che cos’è XML ? G. Mecca - Tecnologie di Sviluppo per il Web
XML è la tecnologia che risolverà tutti i problemi dei sistemi di basi di dati L’integratore di sistemi informativi Il venditore di DBMS L’esperto di documenti Il Webmaster “smanettone” XML >> Concetti Fondamentali >> Introduzione Introduzione • Che cos’è XML ? G. Mecca - Tecnologie di Sviluppo per il Web
XML è una sintassi per descrivere alberi XML >> Concetti Fondamentali >> Introduzione Introduzione • Che cos’è XML ? G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali Introduzione • Un po’ di storia • una raccomandazione del W3C del 1998(World Wide Web Consortium, www.w3.org) • tradizione dei documenti strutturati(discende da uno standard precedente: SGML) • pensato originariamente come sostituto di HTML per il Web (“Web Semantico”) • Successivamente, altre applicazioni • adottato come formato di scambio tra applicazioni • recentemente, DBMS basati su XML G. Mecca - Tecnologie di Sviluppo per il Web
XML e DTD InfoSet DOM Namespace XMLSchema XLink XPointer SAX CSS XSL, XSLT, XSL-FO XPath XQuery XForm XInclude XBase … XML >> Concetti Fondamentali >> Introduzione La Galassia di XML (w3.org) G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali Insegnare XML • Caratteristiche di XML • un modello per la descrizione dei dati • una sintassi concreta • molte altre tecnologie collegate • Due problemi • evitare un impostazione eccessivamente “sintattica” • evitare di disperdersi nella presentazione delle tecnologie collegate G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Modello Logico Modello Logico • Una sintassi per costruire documenti • basata su marcatori (“tag”) • Modello logico sottostante • alberi con nodi di vari tipi (“nodi tipizzati”) • identificatori di nodo • riferimenti incrociati tra i nodi G. Mecca - Tecnologie di Sviluppo per il Web
univ studenti corsi corso studente studente corso nome docente dataN titolo esame esame esami voto matricola XML >> Concetti Fondamentali >> Modello Logico nodo radice (documento) Alberi XML elemento principale elementi … … … id=“a01” Analisi Pinco Palla 6554 Rossi Mario 5/12/1978 … InfoSet idref=“a01” valore InfoItems attributo riferimento 27 scala=“30” lode=“no” G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Modello Logico Alberi XML • Radice (Documento) • Elemento principale • Nodi intermedi: elementi • con sottoalberi di elementi, attributi e valori • Nodi foglia: attributi e valori • attributi: coppie (nome, valore) • valori: stringhe, numeri, date, ecc. G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Modello Logico Alberi XML • Funzione degli attributi • simili ad una coppia elemento+valore • Utilizzo degli attributi • gli attributi servono per valori speciali es: identificatori e riferimenti • gli attributi servono per i metadati (“dati che descrivono i dati”); es: scala dei voti • gli attributi servono a specificare valori che devono essere meno “visibili” (es: stampa) G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Modello Logico Alberi XML • Differenze con il modello relazionale • anche per XML esiste il concetto di schema (>>) • un albero può essere visto come analogo ad una base di dati (es: studenti e corsi) • è possibile organizzare le relazioni tra i dati in modo più flessibile • è possibile utilizzare identificatori e riferimenties: riferimenti dagli esami ai corsi • ma è possibile utilizzare la nidificazionees: esami “nidificati” all’interno degli studenti • altre differenze: attributi, contenuto misto (>>) G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Modello Logico Alberi XML • Differenza con i modelli a oggetti • gli elementi dell’albero sono assimilabili ad oggetti, classificabili rispetto al loro nome • ma vengono utilizzati meccanismi molto diversi di organizzazione degli oggetti • contenimento, vincolato alla struttura di albero (un elemento non può essere figlio di due padri) • riferimenti espliciti con identificatori gestiti dal programmatore e non dal sistema (OID) >> correttezza dei riferimenti • non esiste esplicitamente la nozione di ereditarietà G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Sintassi XML Sintassi XML • Rappresentazione degli alberi • attraverso file di testo o “documenti” • sintassi concreta definita nello standard basata su marcatori (“tag”) • Algoritmo ricorsivo di codifica • visita in preordine dell’albero • per ogni albero: tag di apertura; es: <corso> • codifica ricorsiva del sottoalbero • tag di chiusura; es: </corso> • codifica opportuna per le foglie (valori e attr.) G. Mecca - Tecnologie di Sviluppo per il Web
<?xml version=“1.0” encoding=“UTF-8”?> <univ> <studenti> <studente> <matricola> 6554 </matricola> <nome>Rossi Mario</nome> ... <esami> <esame> <voto scala=“30” lode=“no”> 27 </voto> ... </esame> </esami> </studente> ... </studenti> <corsi> <corso id=“a01”> ... </corso> </corsi> </univ> univ studenti corsi corso studente nome esame esami voto matricola XML >> Concetti Fondamentali >> Sintassi XML Sintassi XML … … … … id=“a01” 6554 Rossi Mario … file di testo es: univ.xml scala=“30” lode=“no” 27 G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Sintassi XML Sintassi XML • In sostanza • alla nidificazione dei nodi nell’Infoset corrisponde la nidificazione dei tag nel doc. • tutti i valori sono codificati come caratteri • Difetto della sintassi • verbosità: i tag di chiusura sono espliciti(a 3+4 * (b 2+1 )b + 4 )a >> (a 3+4*(b 2+1) + 4) • Pregio della sintassi • semplice da interpretare per il programmat. G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Sintassi XML Analisi Sintattica • E’ facile costruire analizzatori sintattici per • leggere un documento XML • analizzare la sintassi dei marcatori • ricostruire l’InfoSet • “parsing” del documento XML • Il documento è auto-descrittivo • il significato dei valori è codificato nel nome degli elementi e degli attributi G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Il Successo di XML Il Successo di XML • Motivi di successo • gli alberi sono strutture flessibili • la sintassi è standard e relativam. semplice • E’ applicato in moltissimi settori • basi di dati • gestione di documenti elettronici • siti Web • scambio di dati tra applicazioni G. Mecca - Tecnologie di Sviluppo per il Web
libro autore titolo indice voce voce paragrafo paragrafo capitolo capitolo codice citazione titolo titolo testo XML >> Concetti Fondamentali >> Il Successo di XML Documenti … Goedel, EscherBach: Un’EternaGhirlandaBrillante Douglas R.Hofstadter … rifti=“par01 par04 par07 …” Bach … Un’offerta musico-logica Contenuto: • solo elementi • solo testo QuandoBach… Federico il Grande … Bach pid=“par01” • misto • vuoto Una sera, proprio… G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Il Successo di XML Contenuto di Un Elemento • Solo elementi • “element only” • es: <capitolo> <titolo> ... </titolo> <paragrafo> ... </paragrafo> </capitolo> • Solo valori • “text” • es: <autore>D. Hofstadter</autore> G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Il Successo di XML Contenuto di Un Elemento • Misto (elementi e valori) • “mixed” • es: <testo> Federico il Grande … <citazione>Una sera …</citazione> Quando Bach... </testo> • Vuoto (solo attributi) • “empty” • es: <codice id=“par01” /> oppure <img ... />, <br /> G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Il Successo di XML Integrazione di Applicazioni • Applicazioni “business to business” (B2B) • es: il sistema informativo di un supermercato COOP ordina gelati al sistema informativo dell’Algida • Sistema Informativo della COOP • DBMS relazionale, applicazioni in C, TCP/IP • Sistema Informativo dell’Algida • DBMS a oggetti, applicazioni in Java, TCP/IP • Come si scambiano i dati ? G. Mecca - Tecnologie di Sviluppo per il Web
<?xml version=“1.0” ?> <ordine> <prod>Cornetto</prod> <qta>300</qta> <dataCons> <giorno>15</giorno> <mese>giugno</giugno> <anno>2002</anno> </dataCons> <indirizzo> <via>dei Frassini</via> <citta>Potenza</citta> <CAP>85100</CAP> </indirizzo> ... </ordine> ordine data cons prod qta indirizzo CAP citta giorno mese anno via XML >> Concetti Fondamentali >> Il Successo di XML B2B … Cornetto 300 giugno 2002 15 deiFrassini Potenza 85100 G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> NameSpace Namespace • Ambiguità • es: prezzo (con IVA o senza IVA ?) • es: protocollo (tecnologia o burocrazia ?) • Spazio di Nomi (“Namespace”) • tecnica standard (W3C) per qualificare i nomi • per risolvere l’ambiguità, è possibile “annotare” un nome di elemento con un URI • es: http://www.ietf.org, oppure http://www.funzionepubblica.it G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> NameSpace Namespace • Attenzione • in questo caso, l’URI è solo un URN • ovvero non rappresenta una risorsa fisicamente disponibile sulla rete • ma solo un nome che rispetta la sintassi degli URI • Quindi • un namespace non è un dizionario né una collezione di stringhe corrispondenti a nomi • un namespace non corrisponde necessariamente ad un’autorità che ha controllo sui nomi descritti dal namespace G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> NameSpace Il Namespace di XHTML http://www.w3.org/1999/xhtml G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> NameSpace Namespace • Sintatticamente • attributo speciale “xmlns” • prefisso distinto per ciascun namespacedefinito nella radice di un sottoalberoes: <ordine xmlns:w3c=“http://www.w3.org” xmlns:fp=“http://www.funzionepubblica.it”> • visibilità nel sottoalbero • nomi composti con il prefissoes: <w3c:protocollo>, <fp:protocollo> G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi Schemi • Regole della sintassi • i documenti devono essere “ben formati” >> conseg. dell’algoritmo di codifica dell’InfoSet • Documento Ben Formato (“well formed”) • prologo • corretta nidificazione dei tag; es: <a><b>...</b></a> e non <a><b>...</a></b> • corretta codifica degli attributi (virgolette) • corretta codifica dei valori G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi Schemi • Schema per un Documento XML • “albero prototipo” • descrive quali strutture sono ammissibili per i sottoalberi e quali non lo sono • descrive alcuni vincoli di integrità sui dati • Documento valido rispetto a uno schema • l’albero è conforme allo schema (ovvero: è un’istanza dello schema) G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi Schemi • Esistono due categorie di schemi • DTD (“Document Type Declaration”) • orientato ai documenti elettronici • parte dello standard XML 1.0 • XML Schema • standard successivo • orientato alla descrizione dei dati G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi DTD • Albero sintattico di una “grammatica” • basato su “espressioni regolari” • Un solo tipo di valori: la stringa • #PCDATA • Rispetto agli schemi di basi di dati • l’enfasi non è sulla natura dei valori (tipi) • ma sulla posizione reciproca e sulle occorrenze degli elementi G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi Struttura del DTD • Nodi ordinari • documento ed elementi • Nodi per attributi (nome e tipo) • vincoli sugli attributi (chiavi e riferimenti) • Nodi per i valori (#PCDATA) • Nodi speciali • nodi che descrivono l’ordine degli elementi • nodo sequenza – seq oppure , • nodo alternativa – U oppure I G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi DTD • Indicatori di cardinalità • etichette degli archi dell’albero • indicano la numerosità degli elementi presenti in un sottoalbero • minimo e massimo numero di occorrenze del sottoalbero • una o più volte – 1..* oppure + • zero o una volta – 0..1 oppure ? • zero o più volte – 0..* oppure * G. Mecca - Tecnologie di Sviluppo per il Web
libro autore titolo indice voce paragrafo capitolo codice citazione titolo titolo testo XML >> Concetti Fondamentali >> Schemi DTD seq + * #PCDATA #PCDATA seq + rifti IDREFS#REQUIRED #PCDATA seq #PCDATA * U #PCDATA pid ID#REQUIRED #PCDATA #PCDATA G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi DTD: Sintassi <!ELEMENT libro (titolo, autore, capitolo+, indice)> <!ELEMENT titolo (#PCDATA)> <!ELEMENT autore (#PCDATA)> <!ELEMENT capitolo (titolo, paragrafo+)> <!ELEMENT paragrafo (codice, titolo, testo)> <!ELEMENT testo (#PCDATA | citazione)*> <!ELEMENT citazione (#PCDATA)> <!ELEMENT codice EMPTY> <!ATTLIST codice pid ID #REQUIRED> <!ELEMENT indice (voce*)> <!ELEMENT voce (#PCDATA)> <!ATTLIST voce rifti IDREFS #REQUIRED> vincolo: una sola definizione per ogni elemento riferimento al DTD: <!DOCTYPE libro SYSTEM “libro.dtd”> >> libro.xml, libro.dtd G. Mecca - Tecnologie di Sviluppo per il Web
libro libro libro libro autore autore autore autore titolo titolo titolo titolo capitolo capitolo capitolo capitolo capitolo XML >> Concetti Fondamentali >> Schemi documento Validità (A) Goedel, EscherBach … Douglas R.Hofstadter DTD + seq (B) Goedel, EscherBach … Douglas R.Hofstadter #PCDATA #PCDATA (C) Goedel, EscherBach … Douglas R.Hofstadter G. Mecca - Tecnologie di Sviluppo per il Web
citazione citazione citazione testo testo testo testo testo XML >> Concetti Fondamentali >> Schemi documento Validità (A) Una sera, proprio… DTD (B) * U Una sera, proprio… #PCDATA (C) #PCDATA struttura tipica per gli elementi di contenuto misto (D) Federico il Grande … QuandoBach… Una sera, proprio… G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi DTD per la Base di Dati Universitaria <!ELEMENT univ (studenti, corsi)> <!ELEMENT studenti (studente)*> <!ELEMENT studente (matricola, nome, dataN, (claurea | claureaSp), esami)> <!ELEMENT matricola (#PCDATA)> <!ELEMENT nome (#PCDATA)> <!ELEMENT dataN (#PCDATA)> <!ELEMENT claurea (#PCDATA)> <!ELEMENT claureaSp (#PCDATA)> <!ELEMENT esami (esame)*> <!ELEMENT esame (voto)> <!ATTLIST esame idref IDREF #REQUIRED> <!ELEMENT voto (#PCDATA)> <!ATTLIST voto scala CDATA #IMPLIED lode CDATA #IMPLIED> <!ELEMENT corsi (corso)*> <!ELEMENT corso (titolo, docente)> <!ATTLIST corso id ID #REQUIRED> <!ELEMENT titolo (#PCDATA)> <!ELEMENT docente (#PCDATA)> G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi DTD • In sintesi • il DTD è il prototipo per una classe di documenti XML validi rispetto al DTD • Un esempio interessante • il linguaggio XHTML • collezione di documenti XML • validi rispetto al DTD definito dal consorzio (xhtml1-strict.dtd) • problema di correttezza del codice XHTML G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi Validatori • Validatore • applicazione che verifica la validità di un documento XML rispetto al suo schema • Un esempio • xmlvalid (http://www.elcel.com/products/xmlvalid.html) • Sintassi • xmlvalid <file.xml> >> univ.xml, univ.dtd >> xmlvalid univ.xml G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi DTD: Limiti • Esiste un unico tipo di dati • #PCDATA • Un DTD non è un documento XML • sintassi diversa, problemi di parsing • Definizione imprecisa di contenuto misto • es: al massimo due citazioni • Scarsa modularità • non è possibile riutilizzare o estendere le strutture definite G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi XML Schema • Standard recente del consorzio • raccomandazione del Maggio 2001 • Livello base: • “DTD con tipi di dato” • Livello avanzato: • meccanismi per il riuso di schemi • vincoli di integrità avanzati G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi XML Schema • Sintassi XML • Più di 40 tipi di base per i valori • stringhe, numeri, date, ore, … • Sistema di costrutti più ricco • sequenza (“sequence”) • alternativa (“union”) • cardinalità (“minOccurs”, “maxOccurs”) • insieme (“all”) • raffinamento del concetto di contenuto misto G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> Schemi XML Schema: Esempio <?xml version=“1.0” ?> <xsd:schema xmlns:xsd=“http://www.w3.org/1999/XMLSchema”> <xsd:complexType name=“tipoStudente”> <xsd:sequence><xsd:element name=“matricola“ type="xsd:integer"/> <xsd:element name=“nome" type="xsd:string"/> <xsd:element name=“dataN“ type="xsd:date"/> <xsd:union><xsd:element name=“claurea" type="xsd:string"/> <xsd:element name=“claureaSp" type="xsd:string"/> </xsd:union> <xsd:element name=“esame” maxOccurs=“30” type=“tipoEsame”></xsd:sequence><xsd:attribute name=“sesso” type=“xsd:string”/> </xsd:complexType> <xsd:element name=“studente“ type=“tipoStudente”/> ... </xsd:schema> G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> DOM DOM (Document Object Model) • Standard W3C • API per programmare su un InfoSet • collezione di interfacce • Oggetti del DOM • l’InfoSet è rappresentato da oggetti del linguaggio che costituiscono l’albero • Document, DocumentType, Element, Attr, Comment, Text, NameSpace ecc. • su ognuno sono definiti metodi per la manip. G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> DOM DOM (Document Object Model) >> Mozilla DOM Inspector • Implementazione in Java • classi e metodi per costruire la rappresentaz. Java dell’InfoSet da un documento XML • classi e metodi per navigare l’albero • JAXP (Java 2 SE 1.4) • Terminologicamente • molti confondono InfoSet e DOM • ovvero chiamano DOM l’albero invece che la sua rappresentazione nel linguaggio G. Mecca - Tecnologie di Sviluppo per il Web
XML >> Concetti Fondamentali >> DOM DOM (Document Object Model) • Alternativa • SAX – “Simple API for XML Processing” • http://www.saxproject.org/ • standard di fatto • Differenze tra DOM e SAX • struttura di dati vs. eventi • parsing completo vs. parsing incrementale G. Mecca - Tecnologie di Sviluppo per il Web