Laboratorio di Ingegneria Informatica



Documenti analoghi
Creare documenti XML. La natura epistemologica della codifica. Perché comprare XML? La struttura gerarchica ordinata. Riassumendo le componenti

XML. Parte VI - Introduzione e nozioni fondamentali di sintassi. XML: Extensible Markup Language:

La sintassi di un DTD si basa principalmente sulla presenza di quattro dichiarazioni:

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I

APPENDICE C extensible Markup Language

extensible Markup Language

XML: sintassi. Prof. Carlo Blundo Tecnologie di Sviluppo per il Web 1

Introduzione alla codifica XML per i testi umanistici

Tecnologie Web T Introduzione a XML

La struttura: DTD. Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino. laura.farinetti@polito.it

Introduzione a XML. Language

Il database management system Access

XML: extensible Markup Language

Document Type Definition (DTD)

XML e PHP. Gestire XML con PHP. Appendice

XML: La nascita del linguaggio

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

XML. Concetti principali. Risultato possibile. Differenze tra XML e HTML

XML. XML è contemporaneamente: XML non è:

a cura di Maria Finazzi

Capitolo 4 Pianificazione e Sviluppo di Web Part

Direzione Centrale Accertamento. Indagini finanziarie. Le modalità di trasmissione telematica delle richieste di dati e delle relative risposte

Working Draft 0.5 (Telefonia)

Laboratorio Matematico Informatico 2

Organizzazione degli archivi

Modellazione dei dati in UML

EXPLOit Content Management Data Base per documenti SGML/XML

HTML+XML= XHTML. Che cos è l XHTML

Lezione V. Aula Multimediale - sabato 29/03/2008

Settimana I...1. Giorno 1 - Introduzione all XSLT...3

Corso di Informatica

Architetture Applicative

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Le Basi di Dati. Le Basi di Dati

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

PIATTAFORMA DOCUMENTALE CRG

Informatica. Prof. M. Colajanni Università di Modena Reggio Emilia

Progettazione di Basi di Dati

Introduzione alla codifica XML per i testi umanistici

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

XML (extensible Markup Language)

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Applicazioni e Architetture Internet. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Guida all uso di Java Diagrammi ER

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I Sistemi Informativi

Laboratorio di Programmazione Distribuita. Introduzione a XML. Dott. Marco Bianchi Università degli Studi di L'Aquila

1. BASI DI DATI: GENERALITÀ

Siti web centrati sui dati (Data-centric web applications)

I file di dati. Unità didattica D1 1

Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1

Concetti di base di ingegneria del software

Introduzione a Dev-C++

Simple & Efficient.

Rappresentazione grafica di entità e attributi

Compilatore risorse display grafico LCD serie IEC-line

Tecniche Multimediali

Applicazioni web centrati sui dati (Data-centric web applications)

Linguaggi per il web oltre HTML: XML

Esercitazione di Basi di Dati

Progettaz. e sviluppo Data Base

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A Language) Stylesheet.

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

/XML ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 XML

Corso di PHP. Prerequisiti. 1 - Introduzione

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

Al giorno d oggi, i sistemi per la gestione di database

Indice. Introduzione. Capitolo 1

Cosa è un foglio elettronico

Corso di Informatica

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Creare un Ipertesto. 1

BASI DI DATI - : I modelli di database

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

Introduzione alla programmazione in C

Progettaz. e sviluppo Data Base

Piano di gestione della qualità

UNIVERSITA DEGLI STUDI DI BRESCIA Facoltà di Ingegneria

HTML e Linguaggi. Politecnico di Milano Facoltà del Design Bovisa. Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione

Strumenti di modellazione. Gabriella Trucco

Progettazione di un Database

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Dispensa YACC: generalità

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Il Web Server e il protocollo HTTP

Reti di Telecomunicazione Lezione 6

Siti interattivi e dinamici. in poche pagine

Manuale per i redattori del sito web OttoInforma

Come archiviare i dati per le scienze sociali

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Corso di HTML. Prerequisiti. Modulo L3. 1-Concetti generali. Browser Rete Internet Client e server. M. Malatesta 1-Concetti generali-12 28/07/2013

Corso di Informatica

Sistemi Informativi e Basi di Dati

Presidenza del Consiglio dei Ministri

XML Master di II livello "Sistemi informativi geografici per il monitoraggio e la gestione del territorio"

Transcript:

extensible Markup Language (XML) Laboratorio di Ingegneria Informatica XML Parser per XML Corso di laurea specialistica in Ingegneria Informatica XML: cosa è XML: Extensible Markup Language: è un linguaggio che consente la rappresentazione di documenti e dati strutturati su supporto digitale è uno dei più potenti e versatili sistemi per la creazione, archiviazione, preservazione e disseminazione di documenti digitali ma la sua sintassi rigorosa e al contempo flessibile ne rende possibile l applicazione anche nella rappresentazione di dati strutturati, fornendo una soluzione alternativa ai tradizionali sistemi DBMS relazionali XML: le origini XML è stato sviluppato dal World Wide Web Consortium (http://www.w3.org) Le specifiche sono state rilasciate come W3C Recommendation nel 1998 e aggiornate nel 2004 XML deriva da SGML, un linguaggio di mark-up dichiarativo sviluppato dalla International Standardization Organization (ISO), e pubblicato ufficialmente nel 1986 con la sigla ISO 8879 XML nasce come un sottoinsieme semplificato di SGML orientato alla utilizzazione su World Wide Web ma ha assunto ormai un ruolo autonomo e una diffusione ben maggiore del suo progenitore La Famiglia di XML XML: principi fondamentali HTML XHTML WML SGML XML MathML SOAP XML adotta un paradigma di codifica dichiarativo e descrittivo XML descrive un documento come una struttura ad albero XML introduce il concetto di tipo di documento e di sintassi del documento

XML: caratteristiche XML: caratteristiche XML è un metalinguaggio, che permette di definire sintatticamente linguaggi di markup (nuovi linguaggi) Un linguaggio XML permette di esplicitare la (le) struttura(e) di un documento in modo formale mediante marcatori (markup) che vanno inclusi all interno del testo (character data) XML adotta un formato di file di tipo testuale: sia il mark-up sia il testo sono stringhe di caratteri XML si basa sul sistema di codifica dei caratteri ISO 10646/UNICODE Un documento XML è leggibile da un utente umano senza la mediazione di software specifico XML: caratteristiche XML: caratteristiche XML è indipendente dal tipo di piattaforma hardware e software su cui viene utilizzato XML permette la rappresentazione di qualsiasi tipo di documento (e di struttura testuale) indipendentemente dalle finalità applicative XML è indipendente dai dispositivi di archiviazione e visualizzazione un documento XML può essere archiviato su qualsiasi tipo di supporto digitale (attuale e futuro!) un documento XML può essere visualizzato su qualsiasi dispositivo di output File XML <Title> Titolo </title> <p>paragarafo.. <p>paragrafo On-line WWW Carta CD-ROM DBMS NATIVI O RELAZIONALI DOCUMENT MANAGEMENT SYSTEMS XML: caratteristiche XML può essere usato per la rappresentazione di dati strutturati (archivi, tabelle, matrici) in alternativa ai formati di database tradizionali XML può essere usato come formato di scambio dati in applicazioni middleware XML: caratteristiche XML è uno standard di pubblico dominio ogni software conforme XML è in grado di gestire dati in formato XML sono disponibili numerose applicazioni e librerie open source per la manipolazione di dati in formato XML basate su diversi linguaggi di programmazione (Java, C, Python, Perl ) una applicazione in grado di elaborare dati in formato XML viene definita elaboratore XML

XML: Vantaggi XML permette agli sviluppatori di creare facilmente strutture ad-hoc per contenere informazione strutturata. I parser XML sono diffusi su tutte le piattaforme e free. Gli sviluppatori possono appoggiarsi a questi per decodificare e validare le strutture XML, limitandosi poi a gestire solo l'informazione contenuta usando API specifiche (DOM, SAX). XML è completamente text-based, quindi leggibile anche dagli esseri umani e facilmente editabile anche a mano. Supporta UNICODE, quindi è adatto a ogni tipo di scrittura. Essendo dati testuali strutturati esattamente come HTML, i dati XML possono essere trasportati usando il protocollo HTTP anche attraverso firewall (SOAP). XML: Svantaggi I documenti XML, a causa delle struttura testuale e dei tag, tendono ad essere molto più ingombranti di quelli in formato binario, quindi la loro trasmissione sulla rete non è ottimale. I parser XML non sono veloci come quelli scritti ad-hoc per formati specifici, soprattutto se binari. Il concetto di metalinguaggio XML è un metalinguaggio XML definisce un insieme regole (meta)sintattiche, attraverso le quali è possibile descrivere formalmente un linguaggio di markup, detto applicazione XML ogni applicazione XML eredita un insieme di caratteristiche sintattiche comuni ogni applicazione XML a sua volta definisce una sintassi formale particolare ogni applicazione XML è dotata di una semantica specificata in modo non formale Il concetto di metalinguaggio metasintassi XML metalinguaggio linguaggi TEI XHTML DocBook sintassi documenti Il concetto di tipo di documento Il concetto di tipo di documento La definizione di una applicazione XML si basa su un determinato tipo di documento Un tipo di documento descrive le caratteristiche di una classe di documenti strutturalmente omogenei Il tipo di documento è il fondamento della sintassi e della semantica di una applicazione XML Un tipo di documento descrive la struttura della classe di documenti cui si riferisce come un albero ordinato di componenti testuali o elementi Un tipo di documento è caratterizzato da un insieme di elementi strutturali le relazioni di dipendenza tra gli elementi le relazioni di ricorrenza degli elementi

La struttura gerarchica ordinata testo corpo??? frontespizio introduzione + capitolo appendice + titolo +? + titolo + paragrafo titolo paragrafo paragrafo titolo autore * * PCDATA enfasi citazione PCDATA enfasi citazione Il concetto di tipo di documento La struttura ad albero del tipo di documento determina la sintassi del linguaggio di markup XML La sintassi di un tipo di documento deve essere espressa implicitamente (mediante il mark-up) in ogni documento XML La definizione formale della sintassi di un tipo di documento XML può essere espressa esplicitamente in una Document Type Definition (DTD) o un XML Schema La Document Type Definition Una DTD è costituita da un elenco di dichiarazioni (markup declaration) che descrivono la struttura del documento Le dichiarazioni di una DTD definiscono: gli elementi strutturali (element) di un documento mediante un identificatore generico il modello di contenuto di ogni elemento (content model) ovvero gli elementi che contiene ed i loro rapporti (un elemento può essere vuoto) la lista degli attributi associati a ciascun elemento e il loro tipo La Document Type Definition XML non fornisce alcun modo per definire la semantica di una DTD ogni elemento è definito esclusivamente interamente dal suo nome e dal suo contenuto ogni altra specificazione semantica va fornita mediante documentazione in lingua naturale o in altre notazioni logiche Strutture XML: gli elementi I componenti strutturali di un documento sono denominati elementi (element) Ogni nodo dell albero del tipo di documento è un (tipo di) elemento Ogni (tipo di) elemento è dotato di un nome (detto identificatore generico) che lo identifica Strutture XML: gli elementi Esiste uno e uno solo elemento, detto elemento radice (corrispondente al nodo radice dell albero), che non è contenuto da nessun altro e che contiene direttamente o indirettamente tutti gli altri Ogni elemento, escluso l elemento radice, deve essere contenuto da un solo elemento (elemento padre) e può contenere altri sotto-elementi (elementi figli) e/o stringhe di caratteri Esiste un sottoinsieme di elementi che non contengono altri elementi e che possono essere vuoti contenere esclusivamente stringhe di caratteri

Strutture XML: gli attributi Strutture XML: gli attributi A ogni elemento possono essere associati uno o più attributi (attribute) che ne specificano ulteriori caratteristiche o proprietà non strutturali. Ad esempio: il tipo rispetto a una data tassonomia la lingua del suo contenuto testuale un identificatore univoco un numero di ordine etc. Gli attributi XML hanno sono caratterizzati da un nome che li identifica un valore Il valore di un attributo può avere un tipo esplicitato nella DTD Se un documento XML è solo ben formato, tutti i valori degli attributi sono di tipo CDATA Strutture XML: le entità Un documento XML (in quanto oggetto digitale) ha una struttura fisica Dal punto di vista fisico un documento è composto da unità di archiviazione che sono denominate entità (entity) Esiste almeno una entità in ogni documento XML: la document entity, che contiene il documento stesso Strutture XML: le entità In generale una entità è qualsiasi sequenza di byte considerata indipendentemente dalla sua funzione strutturale un singolo carattere UNICODE una stringa di testo XML (caratteri e mark-up) un intero file XML esterno un intero file non XML (es. immagini digitali, etc.) È possibile ad esempio rappresentare nel contenuto di un documento caratteri non presenti sulla tastiera mediante entità Strutture XML: le entità Un Documento XML <?xml version="1.0" encoding="utf-8"?> Le entità vanno definite con apposite dichiarazioni nella DTD Una entità ha un nome e un contenuto In un documento l inserimento di una entità avviene mediante un riferimento a entità che ne specifica il nome Un processore XML sostituirà automaticamente il contenuto dell entità al posto del riferimento <?xml-stylesheet type="text/xsl" href="c:\documenti\collection.xsl"?> <!DOCTYPE collection SYSTEM "C:\DocumentiCollection.dtd"> <collection xmlns="www.univaq.it/~gdellape/esempio/"> <CD number="1"> <song album="santana1" track ="11"> <title>african Bamba</title> <length>4:42</length > </song> <song album="santana1" track ="9"> <artist>santana & Mana</artist> <title>corazon Espinado</title> <comment> <!CDATA[First Hit from the Album]]> </comment> <length>4:36</length > </song> <album ID="santana1"> <artist>santana</artist> <title>supernatural</title> <year>1999</year> </album> </CD></collection>

Elementi Gli elementi sono alla base della strutturazione dei documenti XML. Un elemento è un frammento di dati, limitato ed indentificato (tramite un nome) da un tag. Tag di apertura Elemento artist Elemento title Tag di chiusura <album> <artist> Santana </artist> <title> </album > Supernatural </title > Elemento album Elementi: Regole I nomi degli elementi sono case-sensitive. Ogni elemento aperto deve essere chiuso entro la fine del documento. Gli elementi possono essere nidificati, e in tal caso vanno chiusi esattamente nell ordine inverso a quello di apertura. Un documento XML deve avere un unico elemento radice, in cui tutti gli altri sono nidificati Elementi: Sintassi Il tag di apertura di un elemento ha la forma seguente: <nome attributi> nome è il nome dell elemento. attributi è una lista opzionale di attributi per l elemento. Il tag di chiusura corrispondente ha la forma seguente: </nome> nome è lo stesso identificatore usato nell apertura. Alcuni elementi possono essere privi di contenuto; in questo caso è possibile omettere il tag di chiusura scrivendo quello di apertura come segue (empty tag): <nome attributi /> Elementi: Gerarchia Gli elementi, nidificandosi, creano la struttura ad albero tipica dei documenti XML. All interno di questa struttura si definiscono alcuni rapporti di parentela utili per individuare gli elementi: <a> <b> Testo </b> <c> <d/> </c> </a> a è il nodo radice b e c sono figli di a, il testo è figlio di b, d è figlio di c c è il padre di d, b è il padre del testo, a è il padre di b e c b e c sono fratelli b, c, d e il testosono discendenti di a, d è un discendente di c, il testo è un discendente di b a è un predecessore di b, c, d e del testo, b è un predecessore del testo, c è un predecessore di d. Attributi Gli attributi permettono di specificare proprietà degli elementi come coppie nome-valore. Sono usati per definire proprietà che non possono o non si vogliono inserire nel contenuto dell elemento. Vengono specificati all interno dei tag di apertura degli elementi. Al contrario degli elementi, per gli attributi l ordine di presentazione non è significativo. Namespaces I namespaces servono a dichiarare l appartenenza degli elementi a particolari linguaggi XML. Sono particolarmente utili se più linguaggi vengono mescolati nello stesso documento, con possibili di collisioni tra nomi. Ogni elemento può contenere dichiarazioni di namespaces, la cui validità è estesa a tutto il contenuto dell elemento stesso. La dichiarazione del namespace viene inserita nei tag di apertura, in modo simile a un attributo.

Entità I documenti XML sono costituiti da una serie di entità. Il documento stesso è una entità. Tutte le entità, tranne il documento e il DTD esterno, hanno un nome. Le entità parsed sono quelle più comuni, e il parser XML le sostituisce sempre col loro testo di definizione. Le entità unparsed possono contenere qualsiasi tipo di dato, anche non testuale. Il parser XML non le analizza, e sono accessibili solo usando le notazioni. XML: documenti ben formati e validi Ogni documento XML deve essere ben formato Un documento è ben formato se la sua struttura è implicita nel markup e se rispetta i vincoli di buona formazione indicati nelle specifiche Un documento XML ben formato non richiede la presenza di una DTD XML: documenti ben formati e validi Un documento XML può essere valido Un documento è valido se si riferisce a una DTD esplicita mediante una Doctype declaration ne soddisfa i vincoli sintattici (nome, sequenza occorrenze ed attributi degli elementi) Il controllo di validità viene effettuato da un apposito programma detto parser Esistono parser validanti e non validanti. Questi ultimi possono ignorare tutto l eventuale DTD, tranne le dichiarazioni di entità generali. La parte del documento XML all interno del nodo radice viene definita document instance Le Document Type Definition (DTD) Sono utilizzate per validare i documenti XML. E possibile infatti definire una speciale grammatica che dichiara: tutti gli elementi utilizzabili; quali elementi possono essere nidificati in altri, in che ordine e con quante occorrenze; quali attributi sono applicabili a ciascun elemento, se sono obbligatori e quali sono i loro valori predefiniti. Si possono inoltre definire entità e notazioni poi utilizzabili all interno del documento XML o del DTD stesso. Un DTD Un DTD <?xml version= "1.0" encoding="utf-8"?> <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml-lat1.ent"> %HTMLlat1; <!ELEMENT artist (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT year (#PCDATA)> <!ELEMENT comment (#PCDATA)> <!ELEMENT length (#PCDATA)> <!ELEMENT album (artist, title, year?, copyright?)> <!ATTLIST album ID ID #REQUIRED media CDATA #IMPLIED "CompactDisc > <!ELEMENT song (artist?, title, year?, comment?, length)> <!ATTLIST song genre (Rock Pop Classical Jazz Dance Tecno) #IMPLIED ID ID #IMPLIED album IDREF #IMPLIED track CDATA #IMPLIED > <!ELEMENT CD (album song)+> <!ATTLIST CD number CDATA #REQUIRED owner CDATA #FIXED Giuseppe Della Penna" > <!ELEMENT collection (CD+)> Continua... Continua...

Come si crea un documento XML Un documento XML contiene il mark-up (sottoforma di coppie di tag) che rappresenta linearmente la struttura gerarchica degli elementi, i loro eventuali attributi, e i caratteri del testo L inserimento di mark-up e caratteri deve rispettare i vincoli di buona formazione indicati nelle specifiche XML Un documento valido deve rispettare anche i vincoli sintattici definiti nella DTD Aspetti di sintassi generale Un documento XML è una stringa di caratteri UNICODE in codifica UTF -8 o UTF-16 I nomi di elementi, attributi e entità sono sensibili alla differenza tra maiuscolo e minuscolo Il mark-up è separato dal contenuto testuale mediante caratteri speciali: < > & I caratteri speciali non possono comparire come contenuto testuale e devono essere eventualmente sostituiti mediante i riferimenti a entità < > & Vincoli di buona formazione La forma di un documento XML Esiste un solo elemento radice Tutti gli elementi non vuoti devono presentare sia il tag iniziale sia il tag finale Tutti gli elementi devono essere correttamente annidati Tutti i valori di attributo devono essere racchiusi tra apici doppi o singoli Ogni documento XML inizia con un prologo che contiene: una XML declaration eventualmente una Doctype declaration (la dichiarazione della DTD a cui il documento si riferisce) eventualmente una serie di processing instruction XML declaration Doctype declaration Forme di XML declaration: <?xml version="1.0"?> <?xml version="1.0 encoding= UTF-8?> Se se le dichiarazioni della DTD sono inserite all interno della entità documento è obbligatoria una dichiarazione di documento autonomo: <?xml version="1.0" standalone="yes"?> Se la definizione della DTD si trova in una entità esterna <!DOCTYPE nome_dtd SYSTEM sys-id > <!DOCTYPE Antologia SYSTEM c:\sgml\dtd\antologia.dtd > Se la DTD è dotata di un identificatore pubblico <!DOCTYPE nome_dtd PUBLIC pub-id sys-id > <!DOCTYPE TEI.2 PUBLIC -//TEI P4//DTD Main Document Type//EN tei2.dtd > n. b. il nome della DTD corrisponde al nome del suo elemento radice

Doctype declaration Se la definizione della DTD si trova nella stessa entità del document instance essa va direttamente della Doctype declaration in una sezione denominata internal DTD subset <!DOCTYPE nome_dtd [ dichiarazione 1 dichiarazione 2 dichiarazione 3...] > Internal DTD subset La codifica degli elementi Nel documento ogni elemento non vuoto (contenente cioè altri elementi o caratteri) deve essere marcato da un tag iniziale e da un tag finale Ogni tag è costituito da caratteri delimitatori e dal nome dell'elemento La codifica degli elementi La codifica degli elementi Sintassi di un elemento Del. Finale Start tag Del. Iniziale End tag <nome>contenuto dell elemento</nome> Del. Iniziale Start tag Del. Finale End tag <text> <div1> <p>subito, con le prime parole che le rivolse, volle avvisarla che non intendeva compromettersi in una relazione troppo seria </p> <p>la sua famiglia? Una sola sorella non ingombrante né fisicamente né moralmente, piccola e pallida, di qualche anno più giovane di lui </p> </div1> </text> La codifica degli elementi La codifica degli elementi La relazione lineare tra i tag rappresenta la relazione gerarchica tra gli elementi Per ogni elemento, se il suo tag iniziale è nel contenuto di un elemento P allora il suo tag finale deve essere nel contenuto del medesimo elemento P Detto altrimenti le coppie di tag devono annidarsi correttamene e mai sovrapporsi SBAGLIATO!!! <p>subito, con le prime parole che le rivolse, volle avvisarla che non intendeva compromettersi in <emph>una relazione troppo seria </p> <p>la sua famiglia?</emph>una sola sorella non ingombrante né fisicamente né moralmente, piccola e pallida, di qualche anno più giovane di lui </p>

La codifica degli elementi La codifica degli elementi CORRETTO!!! <p>subito, con le prime parole che le rivolse, volle avvisarla che non intendeva compromettersi in <emph>una relazione troppo seria </emph> </p> <p> <emph>la sua famiglia?</emph> Una sola sorella non ingombrante né fisicamente né moralmente, piccola e pallida, di qualche anno più giovane di lui </p> Gli elementi vuoti o sono rappresentati da entrambi i tag <nome_elemento> </nome_elemento> o assumono la seguente forma <nome_elemento/> Esempio: <img src= foo.gif /> La codifica degli attributi La codifica degli attributi Ogni elemento XML può avere uno o più attributi Un attributo ha un nome e un valore, che può assumere diverse tipologie Gli attributi devono essere associati agli elementi all'interno del tag iniziale dopo l identificatore <nome_elemento nome_attributo = "valore"> contenuto </nome_elemento> Altri eventuali attributi vanno collocati dopo il primo separati da uno o più spazi Non possono esservi più istanze dello stesso attributo per un elemento La codifica degli attributi <text resp= Italo Svevo n= Senilità > <div n= 1 > <p id= C1P1 >Subito, con le prime parole che le rivolse, volle avvisarla che non intendeva compromettersi in una relazione troppo seria </p> <p id= C1P2 >La sua famiglia? Una sola sorella non ingombrante né fisicamente né moralmente, piccola e pallida, di qualche anno più giovane di lui </p> <pb n= 5 /> Il riferimento alle entità L inclusione di una entità all interno di un documento SGML si effettua mediante un riferimento a entità (entity reference) La sintassi di un riferimento, valida sia per entità esterne sia interne, è la seguente: Delimitatore di apertura &nome_entità; Delimitatore di chiusura

Il riferimento alle entità Validazione In questo esempio i caratteri accentati sono stati sostituiti da riferimenti a entità carattere <p>la sua famiglia? Una sola sorella non ingombrante né fisicamente né moralmente, piccola e pallida, di qualche anno più giovane di lui </p> Quando un documento XML viene controllato sintatticamente da un parser. Questo processo viene chiamato validazione. Documento XML Valido Schemi e DTD Un documento XML si dice valido se conforme alle specifiche del DTD associato o dello schema. Un documento non valido non cessa di essere un documento XML. Gli Schemi XML sono nati con lo stesso scopo dei DTD: Specificare la struttura dei documenti. Modelli di contenuto, elementi radice, Specificare il tipo dei dati utilizzabili all interno di elementi e attributi. Nei DTD, il tipo di dato per gli elementi poteva essere solo testo e/o un particolare modello di contenuto. Perché gli Schemi? I DTD usano una sintassi non XML. Perché costringere gli sviluppatori ad imparare le regole di un nuovo linguaggio? Perché scrivere parser XML che debbano leggere anche formati non XML per la validazione? I DTD hanno pochi tipi di dato. Il controllo sui domini dei dati è parte integrante del controllo di un documento ben formato. Esistono tipi di dato molto noti che si vorrebbero poter sfruttare (interi, reali, data/ora, ecc.). Novità negli Schemi Sono supportati più tipi di dato (44 contro 10) e la possibilità di definirne di nuovi o derivarne altri da tipi già esistenti applicando regole e restrizioni. Sono presenti nuovi modelli di contenuto, tra cui l insieme ( tutti questi elementi, in qualsiasi ordine ). Si possono definire più campi chiave diversi. Si possono dichiarare classi di equivalenza tra elementi.

Vantaggi degli Schemi Generalmente, le applicazioni che devono basarsi su documenti o dati provenienti dall esterno sprecano una grossa quantità di codice per controllarne la validità. Più complessi sono i dati, più il codice sarà laborioso da scrivere. Se i dati sono strutturati secondo un preciso Schema XML, l applicazione potrà avvalersi delle funzionalità di un qualsiasi validatore di schemi in commercio! Cosa Forniscono gli Schemi Un modello per i dati. Descrivono cioè l organizzazione e i tipi dell informazione. Un contratto. Cioè un protocollo molto specifico per lo scambio di informazioni. Un insieme di Metadati. Lo schema contiene molte informazioni valide per l interpretazione dei dati strutturati sulla sua base. Cosa Forniscono gli Schemi Oltre che per validare i documenti istanza, si possono immaginare molti altri impieghi per gli schemi: Creazione automatica di interfacce per la compilazione dei documenti XML associati. Creazione di interfacce grafiche per la rappresentazione dei dati. Uso degli schemi per definire strutture dati e protocolli per la loro manipolazione e trasmissione. Un DTD di esempio <!ELEMENT artist (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT year (#PCDATA)> <!ELEMENT comment (#PCDATA)> <!ELEMENT length(#pcdata)> <!ELEMENT song (artist?, title, year?, comment?, length)> <!ELEMENT CDsong+> Gli elementi blu fanno parte della sintassi DTD. Gli elementi neri fanno parte della nuova sintassi che stiamo definendo. Poiché i DTD sono stati creati prima dei namespaces, non esiste questo concetto nei DTD e gli elementi delle due sintassi sono mescolati. e lo Schema Corrispondente <xs:element name="artist" type="xs:string"/> <xs:element name="comment" type="xs:string"/> <xs:element name="length" type="xs:string "/> <xs:element name="title" type="xs:string"/> <xs:element name="year" type="xs:string"/> <xs:element name="song"> <xs:complextype> <xs:sequence> <xs:element ref="artist" minoccurs ="0"/> <xs:element ref="title"/> <xs:element ref="year" minoccurs ="0"/> <xs:element ref="comment" minoccurs ="0"/> <xs:element ref="length "/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="cd"> <xs:complextype> <xs:sequence> <xs:element ref="song" maxoccurs ="unbounded "/> </xs:sequence> </xs:complextype> </xs:element> <!ELEMENT artist (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT year (#PCDATA)> <!ELEMENT comment (#PCDATA)> <!ELEMENT length(#pcdata)> <!ELEMENT song (artist?, title, year?, comment?, length) > <!ELEMENT CDsong+> Questo Schema definisce lo stesso linguaggio del DTD visto in precedenza. I frammenti del DTD sono affiancati alla parte di schema che li sostituisce. Validare un documento XML: La validazione è un processo, il controllo sintattico è un altro (ben formato e NON ben formato) Un documento XML può essere non valido, ma rimanere ugualmente well-formatted. N.B.:tutti i documenti XML (in quanto documenti XML) sono per forza ben formati ma niente ci dice se sono conformi al proprio DTD (se lo possiedono).

Well-formatted Riprendendo l esempio: Un file XML è anche normalmente well-formatted, cioè ben formattato e quindi rispetta le regole di XML Tutti i tag di apertura e di chiusura corrispondono. I tag vuoti utilizzano una sintassi XML speciale. Tutti i valori degli attributi sono racchiusi tra virgolette. Tutte le entità sono dichiarate. FILE DTD libro.dtd: <?xml encoding="utf-8"?> <!ELEMENT libro (prefazione?,indice,capitolo+)> <!ATTLIST libro titolo CDATA #REQUIRED> <!ATTLIST libro autore CDATA #REQUIRED> <!ATTLIST libro editore CDATA #REQUIRED> <!ELEMENT prefazione (#PCDATA)> <!ATTLIST prefazione autore CDATA #IMPLIED> <!ELEMENT indice (titolo+ )> <!ELEMENT capitolo (#PCDATA)> <!ELEMENT titolo (#PCDATA)> FILE XML libro.xml: <?xml version="1.0" encoding= "UTF- 8"?> <!DOCTYPE libro SYSTEM "libro.dtd"> <libro titolo="1984" autore="g.orwell" editore= "Mondadori"> <prefazione autore="bill Gates">Questo libro non dice il vero. Orwell ha sbagliato...</prefazione> <indice> <titolo>parte prima</titolo> <titolo>parte seconda</titolo> </indice> <capitolo>1. Era una notte buia e tempestosa...</capitolo> <capitolo>2. Testo del secondo capitolo...</capitolo> <capitolo>3. Testo del terzo capitolo...</capitolo> </libro> XML non è sempre corretto Gli errori dei parser: Le specifiche del W3C indicano che i parser di XML possono fermarsi al primo errore di analisi del documento(non tollerano errori); Motivi: Rendere i parser più facili da scrivere; I documenti XML sono compatibili e indipendenti dal tipo di parser. Fatal Error: grave violazione di una regola della specifica; il processore notifica all applicazione l errore rilevato e può o meno continuare l analisi del documento per cercare altri errori; Non deve però continuare a fornire il contenuto del documento dell applicazione. Esempio di FATAL ERROR: Impossibile visualizzare la pagina XML Impossibile visualizzare l'input XML tramite il foglio di stile XSL. Correggere l'errore, quindi fare clic su Aggiorna, oppure riprovare in un momento successivo. Il tag finale "item2" non corrisponde al tag iniziale "item1". Errore durante l'elaborazione della risorsa <indice> <capitolo>1. Era una notte buia e tempestosa... </indice> </capitolo> Error: violazione di una regola della specifica; Il processore notifica all applicazione l errore rilevato e continua sia ad analizzare il documento, sia a fornire il contenuto all applicazione, che deciderà il comportamento rispetto all errore( ignorarlo, cercare di correggerlo, etc..)

Esempio di ERROR: <capitolo>1. Era una notte buia e tempestosa...</capitolo> <bibliografia> libro1 </bibliografia> I parser L errore è dato da <bibliografia> perché non è definito come elemento di libro nel DTD; Ma se ci saranno altre righe di comando con altri errori, verranno riportati di seguito, senza fermarsi. Che cosa vuol dire parsing e cosa sono i parser? Per poter usare un file XML occorre farne il "parsing", ovvero prendere un documento Xml e scandirlo, estraendone tutte le parti che lo compongono. Un parser XML è un modulo software che si colloca tra l'applicazione e il documento XML. Esso permette all'applicazione di accedere al contenuto e alla struttura del documento XML. Esistono due tipi di parser: validanti e non validanti. Parsing XML Goal: tradurre un file XML nelle strutture dati utilizzabili nei linguaggi di programmazione Strategie possibili Fare il parsing a mano con alcune librerie riutilizzabili Fare il parsing mettendo I dati in una struttura generica ad albero Fare il parsing come una sequenza di eventi Fare il parsing a mano Rimangono Vantaggi Controllo completo Buono per semplici cose non ha bisogno di pacchetti software ausiliari Svantaggi Deve essere scritto tutto sempre Noioso e facile all errore Diventa difficile quando si usa uno schema o una DTD per validare I parser XML si dividono in due categorie per quel che riguarda i modelli di elaborazione Parser DOM (Documento Object Model): è un modello gerarchico, che fornisce accesso all'intero documento DOPO il completamento del parsing. DOM è una serie di raccomandazioni W3C implementate in varia maniera su tutte le architetture Parser SAX (Simple API for XML): è un modello ad eventi, attraverso il quale è possibile associare funzioni callback ai vari elementi significativi del documento XML. SAX 2.0 non è uno standard, ma una proposta originariamente per JAVA poi adottata su molte architetture (http://www.saxproject.org/).

Fare il parsing in una generica struttura ad albero (parser DOM) Vantaggi Esiste un linguaggio standard neutro: DOM (Document Object Model) Imparare a fare il DOM per un linguaggio rende facile impararlo per un altro Si deve scrivere meno codice per avere XML in qualcosa che si vuole utilizzare nei programmi Svantaggi Non-intuitive API Non e a costo di lavoro /tempo o Fare il parsing come una sequenza di eventi (parser SAX) Vantaggi SAX richiede pochissima memoria d'uso: il documento non è mai tutto in memoria contemporaneamente. E' ideale per documenti MOLTO grandi. SAX è velocissimo: non ha praticamente overhead di parsing. SAX è ideale per cercare velocemente un'informazione specifica all'interno di un documento XML, poiché lo si può fermare appena l'ha trovata. Svantaggi SAX non può essere usato per cercare e ricercare informazioni su un documento XML (navigare sulla struttura del documento) SAX non può essere usato per modificare o aggiornare la struttura del documento XML (aggiungere o togliere nodi). SAX non è implementato dai browser, ma solo come libreria di linguaggi server-side (o in Java anche come applet) Elaborazione DOM Il Document Object Model è un interfaccia di programmazione (API) per documenti sia HTML sia XML. Definisce la struttura logica dei documenti ed il modo in cui si accede e si manipola un documento. Utilizzando DOM i programmatori possono costruire documenti, navigare attraverso la loro struttura, e aggiungere, modificare o cancellare elementi. Ogni componente di un documento HTML o XML può essere letto, modificato, cancellato o aggiunto utilizzando il Document Object Model. Definizione di DOM Document Object Model (DOM) Il DOM è un Application Programming Interface (API) per documenti XML (e HTML). Il DOM definisce una modalità di rappresentazione dei documenti XML sotto forma di strutture dati accessibili da un linguaggio di programmazione, e le operazioni per la loro manipolazione. Standard W3C Strumenti del DOM Usando le API del DOM un programmatore può creare documenti XML, navigarne la struttura, aggiungere, eliminare o modificare tutte le componenti (elementi, commenti, testo ) Ovviamente il DOM fornisce un interfaccia generica implementabile in vari linguaggi di programmazione. Tuttavia, la specifica è esposta usando l IDL definito nella Corba 2.2 specification. La vista del DOM su XML <song track="9"> <artist> <name>santana</name> </artist> <title>corazon Espinado</title> <comment>first Hit from the Album</comment> <length> <minutes>4</minutes> <seconds>36</seconds> </length> </song> <song> <artist> <title> <comment> <length> <name> Santana Corazon Espinado First Hit from the Album track=9 <minutes> <seconds> 4 36

La vista del DOM su XML Il DOM vede i documenti come una struttura ad albero. In realtà, la struttura è una foresta perché può anche contenere più alberi distinti. Il DOM definisce solo la sua vista logica sui dati: non specifica come debbano essere effettivamente strutturati in memoria. Tuttavia, l utente che accede al documento tramite l interfaccia DOM, lo vedrà effettivamente come un albero. I Modelli a Oggetti Il DOM, come modello ad oggetti, definisce: Gli oggetti usati per rappresentare e manipolare un documento XML. Le interfacce usate per interagire con gli oggetti definiti. La semantica richiesta dagli oggetti e dalle interfacce definite. Le relazioni e interazioni tra le interfacce e gli oggetti definiti. Oggetti del DOM L oggetto principale di DOM è DOMNode, che però è una interfaccia (cioè viene solo usata per crearne classi) Il core del DOM definisce alcune classi fondamentali per i documenti HTML e XML, e ne specifica proprietà e metodi. Glli oggetti principali definiti nel DOM sono: DOMDocument : il documento di cui si sta parlando DOMElement: ogni singolo elemento del documento DOMAttr: ogni singolo attributo del documento DOMText: ogni singolo nodo di testo del documento DOMComment, DOMProcessingInstruction, DOMCDATASection, DOMDocumentType, ecc. Gli oggetti Node: la base del DOM Il DOM presenta i documenti come una struttura gerarchica di oggetti di tipo Node. Ciascun oggetto nel documento in realtà implementa una interfaccia più specifica per il suo tipo, che è sempre derivata da Node. I Node possono avere zero o più nodi figli. L interfaccia di Node include le operazioni di base eseguibili su ogni tipo di oggetto (indipendentemente dal suo tipo specifico) in un documento XML. Tipi di Nodi Ci sono molti tipi di nodi e sottoclassi di nodi Attr, CDATASection, Comment, Document, DocumentFragment, DocumentType, Element, Entity, EntityReference, Notation, ProcessingInstruction, Text EntityReference Name entitry referenced Ognuna di queste ha associato uno tipo, valore o Notation Notation name 1 nome. ProcessingInstruction target Entire string 7 Nella slide seguente vediamo gli standard Text #text Actual text 3 Attr Comment Document Element Entity Node CDATASection DocumentFragment DocumentType nodename () nodevalue Attributes nodetype Attr name () Value of attribute () 2 #cdata-section #comment #document #document - fragment Doc type name Tag name Entity name CDATA cotnent Comment content Null NamedNodeMap 4 8 9 11 10 1 6 5

Fare il parsing come una sequenza di eventi: SAX Nasce nel Dicembre 1997 Peter Murray-Rust. (XML browser JUMBO) Tim Bray (Lark XML parser) David Megginson (Microstar's Ælfred XML parser) XML-DEV mailing list SAX 1.0 rilasciato nel 1998 (attuale SAX 2.0) Lo sviluppo continua ospitato da SourceForge Licenza GPL Introduzione a SAX Simple API for XML SAX, o Simple API for XML, in origine è stata sviluppata come API alternativa per accedere ad XML in Java. A partire dalla versione 2, esistono versioni di SAX utilizzabili anche in altri ambienti di programmazione (ad esempio nella libreria msxml di Microsoft). La homepage del progetto SAX (SourceForge) è http://www.saxproject.org/ Eventi SAX SAX basa il suo sistema di parsing sugli eventi. Mentre il parser SAX legge (e valida) il documento XML, il codice viene avvisato di una serie di eventi fondamentali, quali L inizio e la fine del documento; L apertura e la chiusura di un elemento; L apertura e la chiusura di una sezione CDATA; L inizio e la fine dello scope di ogni namespace; La lettura di caratteri, Processing Instructions, spazi non significativi. Utilità e Limiti di SAX Il parser Sax non costruisce documenti XML, né conserva alcuna struttura in memoria alla fine del parsing. Se il programmatore vuole operare sul documento letto, dovrà scrivere manualmente tutto il codice, basandosi sui dati passati con gli eventi SAX. In generale SAX necessita di molto più codice di DOM, ma è molto più leggero. Il programmatore può implementare solo quello che è strettamente utile, e non è necessario allocare il documento in memoria. SAX e DOM Anche se si ritenesse il DOM come la scelta migliore per la propria applicazione Java, capire SAX è importante per vari motivi: Il sistema di gestione degli errori del DOM è ereditato da SAX. Essendo SAX la prima API XML per Java, resta alla base anche dell implementazione DOM. Le librerie Java usano SAX per leggere un file XML e creare il DOM corrispondente! Events (SAX) Vengono notificati dal parser al client i singoli eventi che contraddistinguono il documento XML Events vs. Trees Concetti base Tree (DOM) Carica in memoria la struttura ad albero del documento XML. Tale struttura è accessibile da parte del client.

Tree-based API Event-based API Favorevoli Navigazione del documento XML Visione d insieme del documento Facilità di gestione della struttura dei documenti: aggiunta, eliminazione, spostamento dei nodi Sfavorevoli Notevole occupazione di memoria Prestazioni dipendenti dalla dimensione del documento Prima di iniziare ad utilizzare le informazione del documento il parser deve completare il caricamento in memoria Favorevoli Poche risorse utilizzate Uniformità di prestazioni Veloce ricerca di un elemento in un ampio documento Sfavorevoli Più difficile gestione della struttura del documento; l eventuale creazione di un albero è a carico del client. Rappresentazione grafica delle due tipologie DOM e SAX: differenze DOM & di SAX approccio DOM Approccio del Modello Struttura ad albero API per navigare l albero SAX Approccio ad Eventi Scansione dell intero file Ogni elemento informa l applicazione con un Callback PRO fornisce all applicazione un modello ricco del documento mantiene una rappresentazione completa e durevole in memoria Molto leggero Implementazione delle sole funzionalità necessarie CONTRO Richiede un occupazione di memoria per tutto il documento Interfaccia troppo semplice quindi più codice Nessun supporto per operare sul documento Esempio eventi Gestione dei NameSpace Documento XML <?xml version="1.0"?> <doc> <para>hello, world!</para> </doc> Eventi Notificati start document start element: doc start element: para characters: Hello, world! end element: para end element: doc end document Il nome di elementi e attributi e composto da due parti : URI e LocalName Puo essere gestito un Namespace, un Namespaceprefixes oppure entrambi

Vediamo un esempio (Caso Default per SAX2) <?xml version="1.0"?> <h:hello xmlns:h="http://www.greeting.com/ns/" id="a1" h:person="david"/> Se namespaces è vero e namespace-prefixes è falso (the default), allora a SAX2 XML reader interpreterà come segue un elemento con Namespace URI "http://www.greeting.com/ns/" e il localname "hello"; un attributo senza Namespace URI (empty string) and the qname (and usually localname) "id"; and Un attributo con il Namespace URI "http://www.greeting.com/ns/" and e il localname "person". Riferimenti Specifica di XML dal W3C http://www.w3c.org/tr/xml/ Apache XML Project (xalan, xerces) http://xml.apache.org Java JAXP Tutorial http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/ index.html SAX http://www.saxproject.org/ Specifica DOM level 1 dal W3C http://www.w3.org/tr/rec-dom-level-1/ Esempi di parser implementati in Java IL PARSER XERCES XML4J: La tecnologia alla base del parser XML di IBM è stata donata all'apache Group per lo sviluppo del parser Xerces. L'ultima versione di XML4J attualmente disponibile, la 3.0.1, è derivata dalla release 1.0.3 di Xerces. (www.alphaworks.ibm.com/tech/xml4j) Xerces: è un parser sviluppato dal team di Apache all'interno dell'apache XML Project. E' basato sui sorgenti di XML4J, implementa DOM (livello 1 e 2) e SAX (versione 2) e ha un supporto preliminare per gli schema XML. E' disponibile inoltre una versione in C++ con i wrapper Perl e COM. XP: XP è un parser non validante sviluppato da James Clark (http://www.jclark.com)conforme alle specifiche 1.0 di XML. Oltre a una normale API ad alto livello fornisce anche una API a basso livello per sviluppare nuovi parser. XP è sviluppato principalmente per ottenere alte prestazioni. Java Standard Extension for XML: Poiché XML e Java di Sun Microsystem sono un binomio molto collaudato, Sun ha prodotto un proprio package Java per XML (java.sun.com/products/xml/) Si tratta di un prodotto free sofware (GPL) scritto in Java E prodotto dal team di Apache all'interno dell'apache XML Project. E un parser validande tra i più robusti ed affidabili. Come funziona XERCES Modalità DOM (Document Object Model) Modalità SAX (Simple API for XML)

Installazione Scaricate il file xerces-j-bin.x.y.z.zip (dove X_Y_Z rappresenta l'ultima versione disponibile) a partire dalla pagina di download http://xml.apache.org/dist/xerces-j/ e decomprimetelo. La struttura delle directory creata contiene tutte le classi necessarie e la documentazione. Impostate la variabile CLASSPATH del vostro sistema in modo da includere i files xercesimpl.jar, xercessamples.jar,xmlais.jar,xmlparserapis.jar,resolver.jar posti nella directory di xerces.