XML extensible Markup Language



Documenti analoghi
2 Reti di Calcolatori XML

Tecnologie di Sviluppo per il Web

Definire linguaggi XML XSchema

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

La struttura: XML Schema

DTD ed XML Schema - Esercizi

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

Programmazione Orientata agli Oggetti in Linguaggio Java

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Basi di Dati Esercitazione per la II prova intermedia 2013

Programmazione Orientata agli Oggetti in Linguaggio Java

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

ASSEGNAZIONE FABBISOGNO

ScanDoc presentazione ed uso

Laboratorio di Sistemi Distribuiti

Programmazione Orientata agli Oggetti in Linguaggio Java

Specifiche struttura del file dei rilievi Descrizione e XML Schema

Tecnologie Web T XML Schema

Tecnologie di Sviluppo per il Web

Programmazione Orientata agli Oggetti in Linguaggio Java

Specifiche tecniche di trasmissione per i Comuni

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

Gestione ex Inpdap SISTEMA INFORMATIVO DOMANDE DI PRESTAZIONI PENSIONISTICHE E NON PENSIONISTICHE

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

Referti on-line e CRM ReView Service Monitor Specifiche tecniche

Laboratorio XMLSchema

Programmazione Procedurale in Linguaggio C++

Tecnologie di Sviluppo per il Web

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

XML Schema WWW. Fabio Vitali

Linguaggi ed Applicazioni mul1mediali

Manuale di progettazione schemi XML

Allegato 2 XML-Schema per l alimentazione del ReGIndE TipiBaseReGIndE.xsd

utente: collezione di contenuti e servizi sviluppatore: pagine e applicazioni

XML e Sistemi per la Gestione di Basi di Dati Relazionali

XML e XSD. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com

Programmazione Orientata agli Oggetti in Linguaggio Java

Interoperabilità SISTRI Descrizione servizi per upload consuntivo percorsi da sistemi ferroviari

XML Schema Definition (XSD)

Il linguaggio XML. Capitolo Introduzione al linguaggio XML

extensible Markup Language

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

Tecnologie di Sviluppo per il Web

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

Programmazione Orientata agli Oggetti in Linguaggio Java

/XML ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 XML

DOCUMENTO ARCHITETTURALE ARPA-BRIDGE

Uno XML Schema è un documento XML che descrive la grammatica di un linguaggio XML utilizzando un linguaggio di markup specifico.

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

Programmazione Procedurale in Linguaggio C++

Tecnologie di Sviluppo per il Web

Programmazione Procedurale in Linguaggio C++

Basi territoriali e numeri civici come infrastrutture informative per il censimento e oltre

4 - XML e basi di dati

Inetd e TCP Wrappers

APPENDICE C extensible Markup Language

EDIZIONE FEBBRAIO 2012

Modellazione e Gestione di Informazioni non Strutturate

Struttura. Contenuto. Rappresentazione

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

Introduzione alla rete Internet

Programmazione Orientata agli Oggetti in Linguaggio Java

FATTURA ELETTRONICA {

Classification of Financial Instrument(CFI)] quotazione si /no indicatore eventuale della quotazione

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

Sistema di Tracciabilità del Farmaco

Tecnologie di Sviluppo per il Web

Linguaggi per il web oltre HTML: XML

Indagini sul personale dipendente Applicazione web per la raccolta dei dati Guida tecnica

Programmazione Procedurale in Linguaggio C++

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

WEB SERVICES SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

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

Mappatura dei canali logici sui canali fisici

Università del Piemonte Orientale. Corso di laurea in biotecnologia. Corso di Statistica Medica. Intervalli di confidenza

Programmazione Procedurale in Linguaggio C++

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Programmazione Procedurale in Linguaggio C++

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

Università degli studi Roma Tre Dipartimento di informatica ed automazione. Tesi di laurea

Programmazione Orientata agli Oggetti in Linguaggio Java

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

6. XML E RAPPRESENTAZIONE DEL FORMATO DI RISPOSTA

Programmazione Orientata agli Oggetti in Linguaggio Java

Esercizi Capitolo 6 - Alberi binari di ricerca

XML. (extensible Markup Language) Seconda parte

Corso ForTIC C2 LEZIONE n. 3

Web Content Management and E- Learning

RILEVAZIONE PRESENZE SPECIFICHE TECNICHE COLLOQUIO

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

AVVISO DI MERCE PRONTA

Formati di interscambio

Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli

Tecnologie di Sviluppo per il Web

Programmazione Procedurale in Linguaggio C++

Programmazione a Oggetti Modulo B

Transcript:

XML extensible Markup Language Schemi parte b XMLSchema versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca Università della Basilicata mecca@unibas.it XML: Schemi >> Sommario Sommario 2

XML: Schemi >> Standard più recente del consorzio raccomandazione del Maggio 2001 Livello base: DTD con tipi di dato in sostanza, un sistema ricchissimo di tipi Livello avanzato: meccanismi per il riuso di schemi vincoli di integrità avanzati 3 XML: Schemi >> Attenzione si tratta di uno standard molto complesso Due parti Part 1: Structures (normativo) Part 2: Datatypes (normativo) Lo standard è intricato molto verboso e sintattico Part 0: Primer (non normativo) 4

XML: Schemi >> L opinione diffusa è che la complessità dello standard sia sfuggita di mano al comitato che lo ha definito Infatti, nella rete circola una certa ironia sulla complessità dello standard 5 XML: Schemi >> In occasione della Second Edition revisione correttiva del 2004 Rick Jelliffe scrive su www.oreillynet.com Should you go rushing out to read it all? Well, if you enjoyed reading it the first time around, all your favourite passages will still be there! I have heard that the film rights have being negotiated for an epic trilogy, but the producers are not sure whether to make it in the style of the Matrix (programmer wakes up in a nightmare world, utterly impenetrable, sponsored by Oracle), Lord of The Ring (enormous scale, but only the innocent can handle something so powerful without being corrupted) or Harry Potter (problems solving with a magic wand, but full of goblins). Fonte: http://www.oreillynet.com/pub/wlg/4624 6

XML: Schemi >> La sintassi è basata su XML <?xml version= 1.0?> <xsd:schema xmlns:xsd=...w3.org/2001/xmlschema > <! - documentation --> <xsd:annotation> Sample scheme </xsd:annotation> commenti e annotazioni <! - declarations and definitions -->... </xsd:schema> dichiarazioni e definizioni 7 XML: Schemi >> Il documento normalmente ha estensione.xsd L elemento principale schema definisce anche il namespace standard di XMLSchema xmlns:xsd=http://www.w3.org/2001/xmlschema tutti gli elementi sono annotati con namespace standard 8

XML: Schemi >> Definizioni e dichiarazioni per capire la sintassi e la semantica è utile un parallelo con i linguaggi di programmazione Nei linguaggi si possono definire tipi e poi dichiarare variabili dei tipi definiti In XMLSchema i tipi servono a descrivere gli elementi 9 XML: Schemi >> Alcuni esempi in C++ struct punto {float x, y, z}; // definizione di tipo punto p1, p2; // dichiarazione typedef int arraydiinteri[10]; // definizione arraydiinteri vettore; // dichiarazione Nota posso anche definire e dichiarare assieme es: int vettore[10]; 10

XML: Schemi >> In XMLSchema lo schema è essenzialmente una collezione di dichiarazioni di elemento e di attributo per ciascuna dichiarazione è necessario specificare un tipo il tipo può essere definito separatamente oppure contestualmente 11 XML: Schemi >> Esempio <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="domanda" type="xs:string"/> dichiarazione di elemento di tipo semplice definizione di tipo complesso dichiarazione di elemento di tipo complesso dichiarazione di elemento con definizione contestuale del tipo <xs:complextype name="argomentotype"> <xs:attribute name="id" type="xs:id" use="required"/> <xs:attribute name="nome" type="xs:string" use="required"/> </xs:complextype> <xs:complextype name="listaargomentitype"> <xs:sequence maxoccurs="unbounded"> <xs:element name="argomento" type="argomentotype"/> </xs:sequence> </xs:complextype> <xs:element name="questionario"> <xs:complextype> <xs:sequence> <xs:element name="listaargomenti" type="listaargomentitype"/> <xs:element name="listadifficolta" type="listadifficoltatype"/> <xs:element name="listaquesiti" type="listaquesititype"/> </xs:sequence>... 12

XML: Schemi >> Più di 40 tipi di base Tipi per elementi ed attributi xsd:string xsd:integer, xsd:float xsd:date, xsd:time xsd:urireference Tipi per attributi xsd:id, xsd:idref xsd:nmtoken 13 XML: Schemi >> Oltre ai tipi di base esistenti è possibile definire altri tipi semplici In particolare tipi intervallo tipi enumerati tipi pattern 14

XML: Schemi >> Tipo intervallo: <xsd:simpletype name= tipoeta base= xsd:integer > <xsd:mininclusive value= 0 /> <xsd:maxinclusive value= 120 /> </xsd:simpletype> Tipo enumerato: <xsd:simpletype name= tiposesso base= xsd:string > <xsd:enumeration value= maschio /> <xsd:enumeration value= femmina /> </xsd:simpletype> Tipo pattern: <xsd:simpletype name= tipocodicefiscale base="xsd:string"> <xsd:pattern value="[a-z]{6}\d\d[a-z]\d\d[a-z]\d{3}[a-z]"/> </xsd:simpletype> 15 XML: Schemi >> Tipi complessi ( complextype ) costruiti a partire dai tipi di base utilizzando vari costrutti Sistema di costrutti più ricco del DTD sequenza ( sequence ) alternativa ( choice ) cardinalità ( minoccurs, maxoccurs ) insieme ( all ) 16

XML: Schemi >> Esempio il costruttore sequence; può essere omesso <xsd:complextype name= tipopersona > <xsd:sequence> <xsd:element name= nome" type="xsd:string"/> <xsd:element name= cognome type="xsd:string"/> <xsd:element name= eta" type="xsd:integer"/> </xsd:sequence> <xsd: attribute name= sesso type= xsd:string /> 17 XML: Schemi >> elenca i sottoalberi ed esprime un vincolo Sequence sull ordine; sequence è stato omesso <xsd:complextype name= tipopersona > <xsd:element name= nome" type="xsd:string"/> <xsd:element name= cognome type="xsd:string"/> <xsd:element name= eta" type="xsd:integer"/> <xsd: attribute name= sesso type= xsd:string /> <xsd:element name= persona type= tipopersona /> <?xml version= 1.0?> <persona sesso= M > <nome>paolo</nome> <cognome>rossi</cognome> <eta>40</eta> </persona> <?xml version= 1.0?> <persona sesso= M > <cognome>rossi</cognome> <nome>paolo</nome> <eta>40</eta> </persona> 18

XML: Schemi >> Sequence Schema persona nodo documento d ora in poi lo ometteremo seq sesso : string nome cognome eta string string integer persona persona sesso= M sesso= M nome cognome eta cognome nome eta Paolo Rossi 40 Rossi Paolo 40 19 XML: Schemi >> elenca i sottoalberi ma All NON esprime un vincolo sull ordine <xsd:complextype name= tipopersona > <xsd:all> <xsd:element name= nome" type="xsd:string"/> <xsd:element name= cognome type="xsd:string"/> <xsd:element name= eta" type="xsd:integer"/> </xsd:all> <xsd: attribute name= sesso type= xsd:string /> <xsd:element name= persona type= tipopersona /> <?xml version= 1.0?> <persona sesso= M > <nome>paolo</nome> <cognome>rossi</cognome> <eta>40</eta> </persona> <?xml version= 1.0?> <persona sesso= M > <cognome>rossi</cognome> <nome>paolo</nome> <eta>40</eta> </persona> 20

XML: Schemi >> All Schema persona all sesso : string nome cognome eta string string integer persona persona sesso= M sesso= M nome cognome eta cognome nome eta Paolo Rossi 40 Rossi Paolo 40 21 XML: Schemi >> elenca i possibili Choice sottoalberi in alternativa tra di loro <xsd:complextype name= tipocodice > <xsd:choice> <xsd:element name= CF" type= tipocodicefiscale"/> <xsd:element name= PIVA type= tipopartitaiva"/> </xsd:choice> <xsd:element name= codice type= tipocodice /> <codice> <CF> PLLPNC69S30H501L </CF> </codice> <codice> <PIVA> 96003410766 </PIVA> </codice> 22

XML: Schemi >> Choice Schema codice U CF PIVA tipocf tipopiva codice codice CF PIVA PLLPNC69S30H501L 96003410766 23 XML: Schemi >> Nidificazione i costruttori di tipo possono essere liberamente nidificati sequenza dentro sequenza, choice dentro sequenza ecc. Limiti il costrutto all non può essere nidificato in altri costrutti 24

XML: Schemi >> Nidificazione esempio di definizione anonima di tipo <xsd:element name="persona > <xsd:complextype> <xsd:element name= nome" type="xsd:string"/> <xsd:element name= cognome type="xsd:string"/> <xsd:element name= eta" type="xsd:integer"/> <xsd:element name= indirizzo > <xsd:complextype> <xsd:element name= via type="xsd:string"/> <xsd:element name= citta type="xsd:string"/> </xsd:element> </xsd:element> 25 XML: Schemi >> Nidificazione <xsd:complextype name= tipoindirizzo > <xsd:element name= via type="xsd:string"/> <xsd:element name= citta type="xsd:string"/> <xsd:complextype name= tipopersona > <xsd:element name= nome" type="xsd:string"/> <xsd:element name= cognome type="xsd:string"/> <xsd:element name= eta" type="xsd:integer"/> <xsd:element name= indirizzo type= tipoindirizzo /> <xsd:element name= persona type= tipopersona /> 26

XML: Schemi >> Cardinalità degli elementi sono dichiarate attraverso gli attributi minoccurs e maxoccurs Valori possibili maxoccurs= 1 (default) maxoccurs= unbounded maxoccurs= 5 minoccurs= 1 (default per gli elementi) minoccurs= 0 (default per gli attributi) minoccurs= 5 27 XML: Schemi >> Cardinalità <xsd:complextype name= tipopersona > <xsd:element name= nome" type="xsd:string"/> <xsd:element name= cognome type="xsd:string"/> <xsd:element name= cittadinanza type= xsd:string maxoccurs= unbounded /> <xsd:element name= persona type= tipopersona /> consente di definire sottoalberi ripetuti <persona> <nome>paolo</nome> <cognome>rossi</cognome> <cittad>italiana</cittad> </persona> <persona> <nome>paolo</nome> <cognome>rossi</cognome> <cittad>italiana</cittad> <cittad>francese</cittad> <cittad>american</cittad> </persona> 28

XML: Schemi >> Cardinalità nome string Schema persona all cognome string * cittad integer persona persona nome cognome cittad cognome nome cittad cittad cittad Paolo Rossi italiana Rossi Paolo italiana francese americana 29 XML: Schemi >> Cardinalità consente di definire sottoalberi opzionali <xsd:complextype name= tipopersona > <xsd:element name= nome" type="xsd:string"/> <xsd:element name= cognome type="xsd:string"/> <xsd:element name= moglie type= tipopersona minoccurs= 0 maxoccurs= unbounded /> <xsd:element name= persona type= tipopersona /> <persona> <nome>paolo</nome> <cognome>rossi</cognome> <moglie>...</moglie> <moglie>...</moglie> </person> <persona> <name>paolo</name> <cognome>rossi</cognome> </persona> 30

XML: Schemi >> Modelli di contenuto ammessi elementonly (che è quello standard) mixed (con una sintassi ed una semantica molto più precisa) empty anytype (qualsiasi contenuto) 31 XML: Schemi >> <formulamatrimoniale> Oggi, <data>19/07/2000</data>, <sposo>clark Kent</sposo> e <sposa>lois Lane</sposa> si sono uniti in matrimonio... </weddingformula> DTD: <!ELEMENT formulamatrimoniale (#PCDATA data sposo sposa )+ > <xsd:element name= formulamatrimoniale > <xsd:complextype mixed= true > <xsd:element name= data" type="xsd:date minoccurs= 1 /> <xsd:element name= sposo type="xsd:string minoccurs= 1 /> <xsd:element name= sposa type= xsd:string minoccurs= 1 /> </xsd:element> 32

XML: Schemi >> Quello che abbiamo visto sono solo le funzionalità di base di XMLSchema Funzionalità avanzate meccanismi di estensione/riuso di schemi >> limitate funzionalità orientate agli oggetti vincoli di integrità (di chiave e di riferimento) >> basati su XPath 33 XML: Schemi >> Differenze principali rispetto ai DTD è molto più orientato alle applicazioni centrate sui dati e meno ai documenti consente di descrivere con dettaglio molto maggiore la struttura dei documenti (vincoli maggiori sui documenti validi meno errori) consente di gestire più efficacemente la composizione ed il riuso degli schemi 34

XML: Schemi >> Come associare lo schema al documento non si utilizza l elemento DOCTYPE ma una sintassi alternativa <?xml version="1.0"?> <questionario id="geo" disciplina="geografia xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="e:\varie\questionario.xsd"> <listaargomenti>... </questionario> 35 XML: Schemi >> Esempi di schemi XML questionario.xsd libro.xsd (>> contenuto misto) univ.xsd (>> tipi di dato) Albero prototipo associato molto simile al DTD le foglie non sono solo #PCDATA i nodi speciali sono diversi 36

XML : Schemi >> Sommario Riassumendo 37 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. 38