XML Schema Definition (XSD)



Documenti analoghi
XML Schema WWW. Fabio Vitali

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

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

extensible Markup Language

Tecnologie Web T XML Schema

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

Organizzazione degli archivi

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

Funzioni in C. Violetta Lonati

Modellazione e Gestione di Informazioni non Strutturate

Database. Si ringrazia Marco Bertini per le slides

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

Il Modello Relazionale

Concetti di base di ingegneria del software

Definire linguaggi XML XSchema

EXPLOit Content Management Data Base per documenti SGML/XML

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

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

Progettaz. e sviluppo Data Base

Sistemi di Numerazione Binaria NB.1

Capitolo 4 Pianificazione e Sviluppo di Web Part

Corso sul linguaggio SQL

XML: extensible Markup Language

XML. XML è contemporaneamente: XML non è:

Informatica (Basi di Dati)

Corso di Amministrazione di Reti A.A. 2002/2003

Basi di dati 9 febbraio 2010 Compito A

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Rappresentazione grafica di entità e attributi

COMUNE DI SAGRADO. ALLEGATO AL MANUALE DI CONSERVAZIONE Affidatario Regione Friuli Venezia Giulia ATTRIBUTI COMUNI A TUTTE LE CLASSI DOCUMENTALI

Rappresentazione dei numeri in un calcolatore

BASE DI DATI: sicurezza. Informatica febbraio ASA

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

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Esercitazione di Basi di Dati

(anno accademico )

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

4 3 4 = 4 x x x 10 0 aaa

Document Type Definition (DTD)

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

ALLEGATO AL MANUALE DI CONSERVAZIONE Affidatario Regione Friuli Venezia Giulia ATTRIBUTI COMUNI A TUTTE LE CLASSI DOCUMENTALI

SPECIFICHE TECNICHE DEL PACCHETTO DI ARCHIVIAZIONE

Corso di Informatica (Basi di Dati)

Lezione 2. Il modello entità relazione

Laboratorio Matematico Informatico 2

Introduzione alla programmazione in C

Guida Compilazione Piani di Studio on-line

PROCESSO DI INDICIZZAZIONE SEMANTICA

Corrispondenze e funzioni

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

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

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

Gestione del workflow

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Modellazione dei dati in UML

Gestione Risorse Umane Web

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Class Discovery E.

MODELLO RELAZIONALE. Introduzione

Strutturazione logica dei dati: i file

Progettazione di Basi di Dati

Lezioni di Matematica 1 - I modulo

La Progettazione Concettuale

Informatica. Rappresentazione dei numeri Numerazione binaria

LE FUNZIONI A DUE VARIABILI

7. Layer e proprietà degli oggetti

2. Codifica dell informazione

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Dalla progettazione concettuale alla modellazione di dominio

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

LINGUAGGI DI PROGRAMMAZIONE

La struttura: XML Schema

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Creare un sito Multilingua con Joomla 1.6

Linguaggi per il web oltre HTML: XML

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

Fasi di creazione di un programma

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Gestione Turni. Introduzione

Soluzione dell esercizio del 2 Febbraio 2004

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

Architetture software

Vincoli di integrità

Le funzioni continue. A. Pisani Liceo Classico Dante Alighieri A.S A. Pisani, appunti di Matematica 1

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Transcript:

Corso di Laurea Specialistica in Ingegneria Informatica Corso di Linguaggi e Tecnologie Web A. A. 2011-2012 XML Schema Definition (XSD) Eufemia TINELLI

Contenuti XML Schema e DTD Formato XML Schema Tipi semplici Tipi complessi Dichiarazione di elementi Dichiarazione di attributi Namespace XSD per RecipeML 2012 2

Introduzione Ben presto ci si accorse che XML non era solo limitato al contesto web, ma era qualcosa di più: uno strumento che permetteva di essere utilizzato nei più diversi contesti, dalla definizione della struttura di documenti, allo scambio delle informazioni tra sistemi diversi, dalla rappresentazione di immagini alla definizione di formati di dati La buona forma di un documento XML è una proprietà puramente sintattica ma la validazione? Linguaggi di schema Per esprimere documenti di testo, i DTD probabilmente bastano, ma per esprimere blocchi di dati strutturati, è necessario un meccanismo di verifica più raffinato XML Schema è stato pensato per fornire quel supporto di validazione che i DTD permettono solo parzialmente, in particolare sul contenuto degli elementi e degli attributi del documenti XML 2012 3

XML Schema o XML Schema Definition (XSD) E una delle attività del working group su XML. Ha prodotto 7 generazioni di working draft, per poi divenire recommendation nel maggio del 2001. 1999 XML Schema Requirements Principi di progettazione: Più espressivo di XML DTD Auto-descrittivo Semplice da implementare E diviso in due parti: XML Schema Part 1: Structures (struttura del documento XML Schema) XML Schema Part 2: Datatypes (modello dei dati e meccanismi di estensione dei tipi) 2012 4

XSD e DTD (1) Modularità I DTD offrono le entità parametriche per tutto: content model ripetuti, frammenti di DTD riusabili, modularizzazione delle specifiche. XML Schema offre: Un meccanismo di inclusione di file Un sistema di tipi gerarchico e complesso Un sistema di specifica di frammenti riutilizzabili di content model e attributi. Gestione dei namespace I DTD ignorano i namespace. E' molto complesso far convivere DTD e qualifica degli elementi. XML Schema permette esplicitamente di qualificare gli elementi e gli attributi, e fornisce molte funzionalità di estensione o limitazione dei vincoli sugli elementi a seconda del loro namespace. 2012 5

XSD e DTD (2) Vincoli su elementi e attributi I DTD permettono un ragionevole controllo degli elementi strutturati, ma poca flessibilità sui content model misti. Inoltre non permettono vincoli sugli elementi di testo (#PCDATA e CDATA) a parte le liste di valori negli attributi XML Schema amplia il set di vincoli per gli elementi strutturati, ed è molto più flessibile negli elementi con content model misto. Inoltre permette di definire tipi semplici, ovvero di esprimere vincoli su dati di tipo stringa, in maniera completa e sofisticata. Documentazione esplicita Allegare documentazione per esseri umani in un DTD significa inserire commenti XML dentro al DTD. Questo è limitante e fragile (i parser eliminano i commenti) XML Schema permette di inserire annotazioni in maniera esplicita e controllata, in maniera che sopravviva al parser 2012 6

XSD e DTD (3) Sintassi XML I DTD usano una sintassi propria e particolare, che richiede parser appositi e strumenti di generazione e verifica appositi. XML Schema usa XML come sintassi. Tutti gli strumenti che si usano per XML sono immediatamente utili: parser, visualizzatori, verificatori, ecc. Per contro, XML Schema è estremamente più verboso, tre o quattro volte più lungo del corrispondente DTD, e molto spesso meno chiaro da leggere 2012 7

I 4 costrutti di XSD Definizione di tipi semplici definisce una famiglia di stringhe di caratteri Unicode con una precisa semantica per interpretare le stringhe Definizione di tipi complessi definisce un insieme di requisiti per attributi, elementi e CDATA negli elementi che sono assegnati a quel tipo Dichiarazione di elementi associa un nome di elemento ad un tipo (semplice o complesso). Un documento XML è valido se ogni elemento in esso contenuto soddisfa tutti i requisiti del tipo associato nella relativa XSD Dichiarazione di attributi associa un nome di attributo ad un tipo semplice (attributi possono contenere solo testo non strutturato!) 2012 8

Formato di un XSD Un documento di XML Schema è racchiuso in un elemento <schema> (il root element), e può contenere, in varia forma ed ordine, i seguenti elementi: <import> ed <include> per inserire, in varia forma, altri frammenti di schema da altri documenti <simpletype> e <complextype> per la definizione di tipi denominati usabili in seguito <element> ed <attribute> per la definizione di elementi ed attributi <attributegroup> e <group> per definire serie di attributi e gruppi di content model complessi e denominati. <notation> per definire notazioni non XML all interno di un documento XML <annotation> per esprimere commenti per esseri umani o per applicazioni diverse dal parser di XML Schema 2012 9

I tipi in XSD Gli elementi e gli attributi sono istanze di un tipo: Un tipo semplice (simple type o datatype) è un tipo di dati che non può contenere markup e non può avere attributi. In pratica è una sequenza di caratteri. E' una specificazione (e restrizione) di CDATA o #PCDATA. Un tipo complesso è un tipo di dati che può contenere markup e avere attributi. E' l'equivalente di un tipo strutturato o misto. XML predefinisce un grande numero di tipi semplici primitivi: string, decimal, float, boolean, urireference, date, time, ecc. Ogni tipo semplice è caratterizzato da alcune proprietà, dette facets, che ne descrivono vincoli e formati (permessi ed obblighi). E data possibilità di derivare nuovi tipi, sia per restrizione che per estensione di permessi ed obblighi. E' possibile derivare i tipi semplici per restrizione, unione o lista Il nome di un tipo semplice appartiene allo stesso namespace di XML Schema 2012 10

Tipi semplici primitivi: Una lista parziale string: una stringa di caratteri. boolean: i valori 'true ' e 'false' decimal: una stringa di numeri (con segno e punto): '-34.15 ' float: un reale in notazione scientifica: '12.78E-12 '. duration: una stringa per una durata temporale nel formato PnYnMnDTnHnMnS. Ad esempio 'P1Y2M3DT10H30M ' è la durata di 1 anno, 2 mesi, 3 giorni, 10 ore, e 30 minuti date: una data nel formato CCYY-MM-DD: '2001-04-25 ' time: una stringa rappresentante una ora nel formato hh:mm:ss hexbinary: dati binari arbitrari in formato esadecimale: '0FB7' anyuri: la stringa di un URI, come "http://www.w3.org/". Accetta sia URI relativi che assoluti 2012 11

Tipi semplici primitivi e derivati: Vista completa 2012 12

Definire Elementi e Attributi Si usano gli elementi <element> e <attribute>. Se sono posti all interno del tag schema sono elementi ed attributi globali. Altrimenti sono usabili solo all interno di elementi che li prevedono come tipo. Questi hanno vari attributi importanti: Name: il nome del tag o dell attributo (definizione locale) Ref: il nome di un elemento o attributo definito altrove (definizione globale) Type: il nome del tipo, se non esplicitato come content maxoccurs, minoccurs: il numero minimo e massimo di occorrenze mixed: se uguale a true implica un content model misto altrimenti il content può contenere solo whitespace 2012 13

Elementi ed attributi - esempio 2012 14

Facets di tipi semplici Per ogni tipo si possono precisare dei facets, delle caratteristiche indipendenti tra di loro che specificano aspetti del tipo: Length: lunghezza di una stringa o del numero di elementi di una lista minlength, maxlength: lunghezza minima e massima minexclusive, mininclusive, maxexclusive, maxinclusive: valore massimo e minimo, inclusivo ed esclusivo pattern: espressione regolare che il valore deve soddisfare enumeration: lista all interno della quale scegliere il valore whitespace: determina il modo in cui vengono gestiti i whitespace (valori: replace, collapse, preserve) totaldigits: massimo numero di cifre consentite (per i tipi numerici) 2012 15

Derivazione per restrizione esempi Si parte da un tipo già definito (base type) e ne si restringe il set di valori leciti attraverso l'uso di facet: 2012 16

Derivazione per unione L'insieme dei valori leciti è data dall'unione dei valori leciti di due tipi semplici 2012 17

Derivazione per lista Sono valori leciti una lista separata da virgole di valori del tipo semplice specificato Schema Istanza 2012 18

Tipi complessi Definire i tipi complessi: Tipi complessi con attributi ed elementi Tipi complessi derivati per restrizione o estensione da tipi semplici o complessi (simplecontent) Tipi complessi derivati per restrizione o estensione da tipi complessi (complexcontent) Collezione di elementi (group) ed attributi (attributegroup) Non esistono tipi complessi predefiniti o primitivi La derivazione può avvenire per restrizione o estensione: Per restrizione: si limitano ulteriormente i vincoli espressi modificando minoccurs e maxoccurs, fissando dei valori per certi elementi o attributi, o imponendo ad un elemento un sottotipo del tipo originario Per estensione: aggiungendo al content model nuovi elementi o nuovi attributi. N.B.: i nuovi elementi sono posti necessariamente alla fine degli altri 2012 19

Tipi complessi con attributi ed elementi (1) Come nei DTD si usano virgole e caret per specificare obblighi e scelte tra gli elementi di un content model complesso, così in XML schema si usano <choice>, <sequence> e <all>. Questi sostituiscono anche le parentesi. La sequenza (A, B, C) diventa La scelta (A B C) diventa 2012 20

Tipi complessi con attributi ed elementi (2) Il raggruppamento non ha bisogno di parentesi: (A, ( B C)) diventa Possono contenere opzionalmente riferimenti ad elementi o attributi nelle forme: empty che corrisponde semplicemente ad una sequenza vuota di elementi 2012 21

Tipi complessi con attributi ed elementi (3) XML Schema riprende l'operatore & di SGML: tutti gli elementi debbono essere presenti, ma in qualunque ordine. (A & B & C) diventa Any: costrutto che offre dei meta-caratteri per poter corrispondere (matches) a qualunque elemento (anyattribute a qualunque attributo). Se viene specificato l attributo namespace il suo valore è una lista di URIs separati da whitespace o uno dei seguenti valori speciali: ##targetnamespace. Solo elementi dal targetnamespace ##local. Namespace di default ##any. Qualsiasi namespace (valore di default) ##other. Qualsiasi namespace tranne il targetnamespace 2012 22

Come definire schemi aperti - Any <complextype name= card_type"> <sequence> <element ref= b:name /> <element ref= b:title /> <element ref= b:email /> <element ref= b:phone minoccurs= 0 /> <element ref= b:logo minoccurs= 0 /> <any namespace= ##other minoccurs= 0 maxoccurs= unbounded processcontents= skip /> </ sequence> </complextype > Attributo processcontents fornisce istruzioni per il processore dello schema: skip per saltare la verifica dell elemento in oggetto e dei suoi discendenti, strict richiede la validazione (valore di default), lax verifica nel caso sia definito e disponibile uno schema Stessa struttura per definire un qualunque attributo 2012 23

Cardinalità degli elementi Per specificare ripetibilità e facoltatività, si usano gli attributi minoccurs e maxoccurs: XML Schema permette non solo i valori 0, 1 e infinito, ma qualunque numero intero. Infinito è "unbounded", e può essere usato solo per maxoccurs. Per default entrambi valgono 1. Inoltre, minoccurs maxoccurs 2012 24

Content model misti Il content model misto aggiunge semplicemente l attributo mixed con valore true. Qualunque espressione di elementi viene rispettata, ma il PCDATA può comparire ovunque, prima o dopo questi elementi 2012 25

Restrizione o estensione di tipi Qualunque elemento preveda attributi è necessariamente di un tipo complesso. XML Schema differenzia infatti tra tipi complessi con contenuto semplice (simplecontent) e tipi complessi con contenuto complesso (complexcontent). Questa è la definizione per estensione di un tipo il cui contenuto è semplice (base type) ma che prevede un attributo. 2012 26

simplecontent - Derivazione per restrizione 2012 27

complexcontent - Derivazione per estensione 2012 28

group e attributegroup E possibile raccogliere gli elementi e gli attributi in gruppi, assegnandoli un nome in modo da poter essere riusati 2012 29

Descrizioni locali e globali Una definizione si dice globale se è posta all'interno del tag <schema>. In questo caso l'elemento o l'attributo è definito in maniera assoluta. Una definizione si dice locale se è inserita all'interno di un tag <complextype>. In questo caso l'elemento o l'attributo esiste solo se esiste un'istanza di quel tipo, e l'elemento non può essere un elemento radice del documento. E' possibile all'interno di un tipo complesso fare riferimento ad un elemento globale, usando l'attributo ref invece che name Globale Locale 2012 30

Namespace (1) La dichiarazione di targetnamespace definisce il namespace del documento da validare. Gli attributi elementformdefault e attributeformdefault permettono di controllare se l uso del prefisso è necessario per i tipi non globali. 2012 31

Namespace (2) Gli attributi elementformdefault e attributeformdefault controllano se gli elementi e gli attributi locali siano per default qualificati o non qualificati. N.B. Per default sono NON qualificati!! Per l esempio sotto bisogna porre elementformdefault a qualificato, altrimenti non funziona niente 2012 32

Collegare documenti XML e schemi schemalocation è costituito da due parti: URI che deve corrispondere al target namespace e URI che localizza lo schema XML E possibile avere coppie multiple di URIs XSD supporta documenti XML senza namespace omettendo l attributo targetnamespace e a tale schema ci si deve riferire con l attributo nonamespaceschemalocation al posto di schemalocation 2012 33

Modularizzazione In XML Schema, esistono meccanismi per dividere lo schema in più file, o per importare definizioni appartenenti ad altri namespace Include: Le nuove definizioni appartengono allo stesso namespace, ed è come se venissero inserite direttamente nel documento. <include schemalocation= URI /> Redefine: come include, le definizioni appartengono allo stesso namespace, ma possono venire ridefiniti tipi, elementi, gruppi, ecc. <redefine schemalocation= URI > </redefine> Import: le nuove definizioni appartengono ad un altro namespace, ed è l'unico modo per fare schemi che riguardino namespace multipli <import namespace= NS schemalocation= URI /> 2012 34

Uniqueness,, Keys, References In XML Schema, è possibile richiedere che certi valori siano unici, o che certi valori siano chiavi di riferimenti, analoghi alla coppia ID/IDREF in XML classico. Tuttavia, è possibile specificare pattern molto complessi come elementi chiave 2012 35

XSD per RecipeML (1) 2012 36

XSD per RecipeML (2) 2012 37

XSD per RecipeML (3) 2012 38

RecipeML problemi problemi risolti e NON Le calorie sono numeri non negativi Le proteine dovrebbero essere espresse nella forma N% con N compreso tra 0 e 100 I commenti dovrebbero poter essere inseriti ovunque nel contenuto della recipe Unità di misura dovrebbe essere consentita quando è espressa la quantità Gli elementi ingredient annidati dovrebbero essere permessi quando non è specificata la quantità 2012 39

Limiti di XSD e Best practices Un po complicato Non è possibile scrivere una descrizione XML schema di XML schema Con mixed= true non è possibile vincolare il contenuto di tipo testo Il meccanismo di ridefinizione dei tipi è complicato Usare: namespace, definizioni globali, definizioni esistenti quando possibile Non usare: redefine, list, derivazione di tipi complessi per restrizione, elementi locali non qualificati 2012 40

Riferimenti Specifiche http://www.w3.org/tr/xmlschema-1/ http://www.w3.org/tr/xmlschema-2/ Testo consigliato A. Moller and M. Schwartzbach, An Introduction to XML and Web Technologies, Addison Wesley, 2006 [cap. 4] 2012 41