La struttura: XML Schema

Documenti analoghi
Definire linguaggi XML XSchema

DTD ed XML Schema - Esercizi

XML Schema Definition (XSD)

XML Schema WWW. Fabio Vitali

XML extensible Markup Language

ASSEGNAZIONE FABBISOGNO

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

Semantic Web. Semantic Web. Il Semantic Web: una semplice estensione. Il Web oggi. Il Semantic Web. Semantic Web

Tecnologie Web T XML Schema

Referti on-line e CRM ReView Service Monitor Specifiche tecniche

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

Capitolo 3. XML: extensible Markup Language. Introduzione Logical Structures Document Type Definition Namespace XML - Schema

XML: extensible Markup Language

Esercitazione XML. Tecniche di Programmazione avanzata Corso di Laurea Specialistica in Ingegneria Telematica Università Kore Enna A.A.

ScanDoc presentazione ed uso

extensible Markup Language

WebEDI Tracciato XML del messaggio FATTURA

Sistema di Tracciabilità del Farmaco

Uno strumento grafico per l evoluzione degli schemi XML e l adattamento dei documenti

Invio Attestati ai Datori di lavoro in formato XML Specifiche Tecniche

XML e Sistemi per la Gestione di Basi di Dati Relazionali

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

Il linguaggio XML. Capitolo Introduzione al linguaggio XML

Specifiche tecniche di trasmissione per i Comuni

Corso di Informatica (Basi di Dati)

Specifiche struttura del file dei rilievi Descrizione e XML Schema

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

Document Type Definition (DTD)

XML Schema. Dario Bottazzi Tel , SkypeID: dariobottazzi

AVVISO DI PAGAMENTO. Descrizione del documento e schema XML. WebEDI Scambio elettronico documenti. AVVISO DI PAGAMENTO.doc

Lezione 4. Modello EER

OSSERVATORIO RIFIUTI SOVRAREGIONALE ~ ~ ~ IMPORTAZIONE AUTOMATICA DELLE IMFORMAZIONI SUI RIFIUTI RITIRATI E PRODOTTI DAGLI IMPIANTI.

Modellazione e Gestione di Informazioni non Strutturate

4 - XML e basi di dati

Laboratorio di Basi di Dati e Web

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

AVVISO DI MERCE PRONTA

Il Direttore Generale Nori

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

Gestione delle tabelle

Volumi di riferimento

Corso sul linguaggio SQL

MiFID - TREM v2.0 per interfaccia locale. 1. Invio di transazioni su strumenti finanziari identificati dal codice alternativo di identificazione (AII)

Access. P a r t e p r i m a

Introduzione alla codifica XML per i testi umanistici

Il Modello Relazionale

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

19. LA PROGRAMMAZIONE LATO SERVER

Sgravi Contrattazione di Secondo Livello: dettaglio dei Controlli, dei Formati e dei messaggi di errore.

Capitolo 4 Pianificazione e Sviluppo di Web Part

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

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

I database relazionali (Access)

Dati relazionali e XML

LINGUAGGI DI PROGRAMMAZIONE

Basi di Dati Multimediali. Fabio Strocco

Sistema DE.PRO.EM. Istruzioni per il caricamento delle informazioni relative ai prodotti tramite file XML. Versione 1.0

Introduzione alla programmazione in C

Direzione Centrale Entrate Direzione Centrale Sistemi Informativi e Tecnologici. Roma, Messaggio n. 5880

IL DIRETTORE DELL AGENZIA. In base alle attribuzioni conferitegli dalle norme riportate nel seguito del presente provvedimento, Dispone:

1. Accordo di servizio Richiesta Indirizzi PEC CAD Art6 [concessionario del servizio di posta certificata al cittadino]

Groups vs Organizational Units. A cura di Roberto Morleo

Funzioni in C. Violetta Lonati

Elena Baralis 2013 Politecnico di Torino 1

SQL - Tipi di dato Il linguaggio SQL

IL DIRETTORE DELL AGENZIA. In base alle attribuzioni conferitegli dalle norme riportate nel seguito del presente provvedimento.

SPECIFICHE TECNICHE DEL PACCHETTO DI ARCHIVIAZIONE

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

RIEPILOGHI ACCESSI. Allegato B. Formato ASCII a campi fissi

Form Editor. Dove NomeProfilo è personalizzabile.

TECN.PROG.SIST.INF. XML. Roberta Gerboni

Organizzazione degli archivi

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

L'utilizzo delle strutture dati nella programmazione del PLC in ambiente IEC61131, rende la gestione di attuatori e sensori più intuitiva ed efficace.

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

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

CMS ERMES INFORMATICA

XML (extensible Markup Language)

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

Laboratorio di Basi di Dati

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

Il file seme o file modello del disegno

Transcript:

La struttura: XML Schema Laura Farinetti, Fulvio Corno Dip. Automatica e Informatica Politecnico di Torino L. Farinetti, F. Corno - Politecnico di Torino 1

XML Schema Inizialmente proposto da Microsoft, e poi adottato dal W3C Alternativo ai DTD per specificare la struttura di un documento (grammatica) Recommendation del 2 maggio 2001, in tre parti Primer (Part 0): descrizione generale Structure (Part 1): linguaggio di descrizione degli schema Datatypes (Part 2): definizione dei tipi di dato Sigla: XSD (Xml Schema Definition) L. Farinetti, F. Corno - Politecnico di Torino 2

Esempio di XML Schema <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/xmlschema"> <xsd:element name="biblioteca"> <xsd:complextype> <xsd:sequence> <xsd:element ref="libro" minoccurs="1" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> biblioteca </xsd:element> libro libro libro libro titolo autore data ISBN editore L. Farinetti, F. Corno - Politecnico di Torino 3

Esempio di XML Schema <xsd:element name="libro"> <xsd:complextype> <xsd:sequence> <xsd:element ref="titolo" minoccurs="1" maxoccurs="1"/> <xsd:element ref="autore" minoccurs="1" maxoccurs=" unbounded "/> <xsd:element ref="data" minoccurs="1" maxoccurs="1"/> <xsd:element ref="isbn" minoccurs="1" maxoccurs="1"/> <xsd:element ref="editore" minoccurs="1" maxoccurs="1"/> </xsd:sequence> </xsd:complextype> biblioteca </xsd:element> libro libro libro libro titolo autore data ISBN editore L. Farinetti, F. Corno - Politecnico di Torino 4

Esempio di XML Schema <xsd:element name="titolo" type="xsd:string"/> <xsd:element name="autore" type="xsd:string"/> <xsd:element name="data" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="editore" type="xsd:string"/> </xsd:schema> biblioteca libro libro libro libro titolo autore data ISBN editore L. Farinetti, F. Corno - Politecnico di Torino 5

XML Schema Maggiori potenzialità, e maggiore complessità Esempio: tipi di dato built-in datatype restrizioni nuovi tipi di dato <xsd:element name="titolo" type="xsd:string"/> L. Farinetti, F. Corno - Politecnico di Torino 6

Associare uno Schema ad un documento È necessaria una schema declaration (analoga alla DTD declaration), all interno del root element <tns:golfcountryclub xmlns:tns="http://www.example.org/golfcountryclub xmlns:xsi="http://www.w3.org/2001/xmlschema-instance xsi:schemalocation="http://www.example.org/golfcountryclub GolfCountryClub.xsd"> L. Farinetti, F. Corno - Politecnico di Torino 7

Tipi di elementi Simple Type Elements that contain numbers (and strings, and dates, etc.) but do not contain any subelements All attributes have simple types Complex Type Elements that contain subelements or carry attributes L. Farinetti, F. Corno - Politecnico di Torino 8

Built-in (simple) datatypes <xsd:element name="data" type="xsd:string"/> <xsd:element name="data" type="xsd:gyear"/> gyear: Gregorian calendar year Segue il formato: CCYY range di CC: 00-99 range di YY: 00-99 esempio: 1999 L. Farinetti, F. Corno - Politecnico di Torino 9

Restrizioni <xsd:element name="aircraft" default="boeing 747"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:enumeration value="boeing 747"/> <xsd:enumeration value="f-16"/> <xsd:enumeration value="a-10"/> </xsd:restriction> </xsd:simpletype> </xsd:element> <!-- Usa il valore di default --> <aircraft/> <!-- Non usa il valore di default <aircraft>f-16</aircraft> L. Farinetti, F. Corno - Politecnico di Torino 10

Nuovi tipi di dato <xsd:element name="isbn" type="xsd:string"/> <xsd:simpletype name="tipoisbn"> <xsd:restriction base="xsd:string"> <xsd:length value="13"/> <xsd:pattern value="\d{1}-\d{5}-\d{3}-\d{1}"/> <xsd:pattern value="\d{1}-\d{3}-\d{5}-\d{1}"/> <xsd:pattern value="\d{1}-\d{2}-\d{6}-\d{1}"/> </xsd:restriction> </xsd:simpletype>...... <xsd:element name="isbn" type="tipoisbn"/> L. Farinetti, F. Corno - Politecnico di Torino 11

Nuovi tipi di dato <xsd:element name="isbn" type="xsd:string"/> <xsd:simpletype name="tipoisbn"> <xsd:restriction base="xsd:string"> <xsd:length 3 pattern in alternativa value="13"/> <xsd:pattern value="\d{1}-\d{5}-\d{3}-\d{1}"/> <xsd:pattern value="\d{1}-\d{3}-\d{5}-\d{1}"/> <xsd:pattern value="\d{1}-\d{2}-\d{6}-\d{1}"/> </xsd:restriction> </xsd:simpletype>...... <xsd:element name="isbn" type="tipoisbn"/> uso delle espressioni regolari L. Farinetti, F. Corno - Politecnico di Torino 12

Livelli di correttezza Nel caso di XML schema: due tipi di validità content model validity: controlla che l'ordine ed il livello di annidamento dei tag sia corretto (Part 1 delle specifiche) datatype validity: controlla che le specifiche unità di informazione siano del tipo corretto, e che i valori ricadano nell'intervallo di validità L. Farinetti, F. Corno - Politecnico di Torino 13

Struttura dello schema XML Schema è un documento XML a tutti gli effetti Occorre dichiararlo con riferimento al corretto Schema <?xml version="1.0" encoding="utf-8"?> <schema xmlns="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.example.org/golfcountryclub" xmlns:tns="http://www.example.org/golfcountryclub"> L. Farinetti, F. Corno - Politecnico di Torino 14

Schema definition Root element: <xsd:schema> Associate the standard W3C schema definition, by using he xmlns attribute (namespace definition) prefix xsd used for all schema-related tags xmlns:xsd="http://www.w3.org/2001/xmlschema" no prefix (not recommended) xmlns="http://www.w3.org/2001/xmlschema" L. Farinetti, F. Corno - Politecnico di Torino 15

Tipi di direttive XSD Creazione di nuovi tipi Simple Complex Definizione di elementi e attributi Struttura dei file XML corrispondenti Ciascun elemento o attributo ha uno dei tipi precedentemente definiti L. Farinetti, F. Corno - Politecnico di Torino 16

Elementi ed attributi <xsd:element name="name" type="xsd:string"/> name type <xsd:attribute name="country" type="xsd:nmtoken" fixed="us"/> L. Farinetti, F. Corno - Politecnico di Torino 17

xsd:complextype Definire un nuovo tipo complesso <xsd:complextype name="nometipo"> Specifica del tipo </xsd:complextype> L. Farinetti, F. Corno - Politecnico di Torino 18

Definizione di complex type <xsd:sequence> Contiene altre definizioni di <xsd:element> <xsd:attribute> L. Farinetti, F. Corno - Politecnico di Torino 19

Esempio <xsd:complextype name="usaddress" > <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="country" type="xsd:nmtoken" fixed="us"/> </xsd:complextype> L. Farinetti, F. Corno - Politecnico di Torino 20

Esempio <xsd:complextype name="usaddress" > <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> </xsd:sequence> Da questo momento potremo definire nuovi elementi il cui tipo sia USAddress <xsd:attribute name="country" type="xsd:nmtoken" fixed="us"/> </xsd:complextype> L. Farinetti, F. Corno - Politecnico di Torino 21

Esempio di utilizzo <xsd:complextype name="purchaseordertype"> <xsd:sequence> <xsd:element name="shipto" type="usaddress"/> <xsd:element name="billto" type="usaddress"/> <xsd:element ref="comment" minoccurs="0"/> <xsd:element name="items" type="items"/> </xsd:sequence> <xsd:attribute name="orderdate" type="xsd:date"/> </xsd:complextype> L. Farinetti, F. Corno - Politecnico di Torino 22

Ri-uso di elementi È possibile ri-usare la definizione di un elemento con l'attributo ref= <xsd:element name="comment" type="xsd:string"/>... <xsd:complextype><xsd:sequence>... <xsd:element ref="comment" minoccurs="0"/> L. Farinetti, F. Corno - Politecnico di Torino 23

Molteplicità di elementi Gli elementi XSD possono essere caratterizzati da vincoli di molteplicità minoccurs="1" (default: obbligatorio) minoccurs="0" (opzionale) minoccurs="7" (raro, ma possibile) maxoccurs="1" (default: non ripetibile) maxoccurs="unbounded" (ripetibile a piacere) maxoccurs="12" (raro, ma possibile) L. Farinetti, F. Corno - Politecnico di Torino 24

Molteplicità di attributi Gli attributi non possono mai essere ripetuti All'interno di xsd:attribute si usa una sintassi diversa: use="required" use="optional" (default) use="prohibited" L. Farinetti, F. Corno - Politecnico di Torino 25

Dichiarazioni globali Si definiscono globali gli elementi e gli attributi definiti direttamente come figli di <schema> Le dichiarazioni globali: possono essere oggetto di un richiamo ref= possono essere il root element dei documenti XML collegati non possono a loro volta contenere ref= non possono contenere vincoli di cardinalità L. Farinetti, F. Corno - Politecnico di Torino 26

Definizione di Simple Type Simple Type predefiniti Creazione di nuovi tipi mediante Derivazione da altri simple type (predefiniti o no) Applicazione di restrizioni, ossia selezione di sotto-insiemi di valori <xsd:restriction base="xsd:integer">... L. Farinetti, F. Corno - Politecnico di Torino 27

Built-in Datatype Datatype primitivi string, boolean, decimal, float, double, duration, datetime, time, date, gyearmonth, gyear, gmonthday, gday, gmonth, hexbinary, base64binary, anyuri, Datatype derivati (sottotipi dei primitivi) normalizedstring, token, language, integer, nonpositiveinteger, negativeinteger, positiveinteger, nonnegativeinteger, long, int, short, byte, L. Farinetti, F. Corno - Politecnico di Torino 28

L. Farinetti, F. Corno - Politecnico di Torino 29

Meccanismo di restrizione <xsd:restriction base= simpletypedipartenza > criteri di restrizione <xsd: length, minlength, maxlength, pattern, enumeration, whitespace, maxinclusive, maxexclusive, mininclusive, minexclusive, totaldigits, fractiondigits > > L. Farinetti, F. Corno - Politecnico di Torino 30

Tipi di restrizioni Intervalli di valori <xsd:mininclusive value="10000"/> <xsd:maxinclusive value="99999"/> Pattern (regex) <xsd:pattern value="\d{3}-[a-z]{2}"/> Enumeration <xsd:enumeration value="ak"/> <xsd:enumeration value="al"/> <xsd:enumeration value="ar"/> L. Farinetti, F. Corno - Politecnico di Torino 31

Esempi <xsd:simpletype name="myinteger"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="10000"/> <xsd:maxinclusive value="99999"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="sku"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[a-z]{2}"/> </xsd:restriction> </xsd:simpletype> L. Farinetti, F. Corno - Politecnico di Torino 32

Regular expression nei Pattern (1) a b alternativa (a) parentesi per impostare precedenze a* 0 o più volte a? opzionale a+ 1 o più volte a{n,m} da n ad m volte a{n} esattamente n volte a{n,} almeno n volte L. Farinetti, F. Corno - Politecnico di Torino 33

Regular expression nei Pattern (2) [abc] lettera a, b oppure c [^abc] qualsiasi carattere tranne a, b, c [a-z] qualsiasi lettera minuscola I caratteri speciali vanno protetti con \ (esempio: \[) L. Farinetti, F. Corno - Politecnico di Torino 34

Gruppi speciali. [^\n\r] \s spaziatura \S non spaziatura \d cifre [0-9] \D non cifre \w caratteri letterali (anche internazionali), eccetto spazi e punteggiatura L. Farinetti, F. Corno - Politecnico di Torino 35

Esempio 1 Consideriamo: <internationalprice currency="eur"> 423.46</internationalPrice> Non può essere un Simple Type poiché ha un attributo Definiamo un complex type L. Farinetti, F. Corno - Politecnico di Torino 36

Esempio 1 <xsd:element name="internationalprice"> <xsd:complextype> <xsd:simplecontent> <xsd:extension base="xsd:decimal"> <xsd:attribute name="currency" type="xsd:string"/> </xsd:extension> </xsd:simplecontent> </xsd:complextype> </xsd:element> L. Farinetti, F. Corno - Politecnico di Torino 37

Esempio 1 <xsd:element name="internationalprice"> <xsd:complextype> <!-- definizione di tipo complesso anonimo --> <xsd:simplecontent> <!-- crea un tipo complesso da un tipo semplice--> <xsd:extension base="xsd:decimal"> <!-- contenitore di attributi <xsd:attribute name="currency" type="xsd:string"/> </xsd:extension> </xsd:simplecontent> </xsd:complextype> </xsd:element> L. Farinetti, F. Corno - Politecnico di Torino 38

Esempio 2 Consideriamo: <internationalprice currency="eur" value="423.46"/> L'elemento questa volta è vuoto, ma occorre comunque definire un complex type per specificare gli attributi L. Farinetti, F. Corno - Politecnico di Torino 39

Esempio 2 (versione completa) <xsd:element name="internationalprice"> <xsd:complextype> <xsd:complexcontent> <xsd:restriction base="xsd:anytype"> <!-- restrizione fittizia --> <xsd:attribute name="currency" type="xsd:string"/> <xsd:attribute name="value" type="xsd:decimal"/> </xsd:restriction> </xsd:complexcontent> <!--...ma nessun xsd:element annidato!!! --> </xsd:complextype> </xsd:element> L. Farinetti, F. Corno - Politecnico di Torino 40

Esempio 2 (versione compatta) <xsd:element name="internationalprice"> <xsd:complextype> <xsd:attribute name="currency" type="xsd:string"/> <xsd:attribute name="value" </xsd:complextype> </xsd:element> type="xsd:decimal"/> L. Farinetti, F. Corno - Politecnico di Torino 41

Confronto con DTD Finora vi sono due caratteristiche dei DTD che non siamo ancora in grado di rappresentare: l'alternativa (a b) di elementi la ripetizione a piacere in qualsiasi ordine (a b c)* A ciò servono le direttive xsd:group, xsd:choice, xsd:all L. Farinetti, F. Corno - Politecnico di Torino 42

Esempio <xsd:complextype name="purchaseordertype"> <xsd:sequence> <xsd:choice> <xsd:group ref="shipandbill"/> <xsd:element name="singleusaddress" type="usaddress"/> </xsd:choice> <xsd:element ref="comment" minoccurs="0"/> <xsd:element name="items" type="items"/> </xsd:sequence> <xsd:attribute name="orderdate" type="xsd:date"/> </xsd:complextype> <xsd:group id="shipandbill"> <xsd:sequence> <xsd:element name="shipto" type="usaddress"/> <xsd:element name="billto" type="usaddress"/> </xsd:sequence> </xsd:group> L. Farinetti, F. Corno - Politecnico di Torino 43

xsd:choice La direttiva xsd:choice permette la presenza di uno solo degli elementi dichiarati all'interno Uno, ed uno solo, deve essere presente Eventualmente, minoccurs=0 se si vuole rendere opzionale l'elemento L. Farinetti, F. Corno - Politecnico di Torino 44

xsd:group Definisce un gruppo di elementi, che non costituiscono di per sé un elemento, ma vengono riportati dove serve per mezzo di ref= Fornisce un livello di controllo nell'xsd, senza introdurre elementi superflui nell'xml L. Farinetti, F. Corno - Politecnico di Torino 45

xsd:all Definito come: All the elements in the group may appear once or not at all, and they may appear in any order È una sorta di sequence non ordinata, ed in cui gli elementi sono opzionali Spesso associata a maxoccurs="unbounded" L. Farinetti, F. Corno - Politecnico di Torino 46

Affermazione Named and un-named groups that appear in content models (represented by group and choice, sequence, all respectively) may carry minoccurs and maxoccurs attributes. By combining and nesting the various groups provided by XML Schema, and by setting the values of minoccurs and maxoccurs, it is possible to represent any content model expressible with an XML 1.0 DTD. Furthermore, the all group provides additional expressive power. L. Farinetti, F. Corno - Politecnico di Torino 47

References XML Schema Primer (non normative) http://www.w3.org/tr/xmlschema-0/ XML Schema Part 1: Structures http://www.w3.org/tr/xmlschema-1/ XML Schema Part 2: Datatypes http://www.w3.org/tr/xmlschema-2/ L. Farinetti, F. Corno - Politecnico di Torino 48