La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 XML - Schema Mario Arrigoni Neri. 2 XML ben formati ed XML validi La buona forma di un documento XML è una proprietà puramente sintattica – Tutti i.

Presentazioni simili


Presentazione sul tema: "1 XML - Schema Mario Arrigoni Neri. 2 XML ben formati ed XML validi La buona forma di un documento XML è una proprietà puramente sintattica – Tutti i."— Transcript della presentazione:

1 1 XML - Schema Mario Arrigoni Neri

2 2 XML ben formati ed XML validi La buona forma di un documento XML è una proprietà puramente sintattica – Tutti i tag sono chiusi, propriamente innestati ed esiste ununica radice… La validazione è invece già semantica, nel senso che ha a che fare con il significato dei dati e lutilizzo del documento – Commitment sulla struttura del contenuto – Mi impegno ad inviare articoli composti da un titolo, la lista degli autori, un abstract ed una serie di capitoli, ciascuno con un titolo e vari paragrafi, ed ogni immagine con la sua didascalia.

3 3 XML per laccesso ai documenti E relativamente poco human-readable – Pensato per essere letto/scritto da sistemi artificiali Nasce per scrivere documenti – Metalinguaggio per costruire formati proprietari – Più semplice di SGML – Enfasi su: Facilità di elaborazione Layer standard (parser) Struttura ad albero dei documenti XMLDTD XML parser Applicazione

4 4 XML è anche un formato per il trasporto dellinformazione – Trasferimento di dati tra applicazioni Interoperabilità delle applicazioni – Servizi standard per validare la conformità agli specifici linguaggi – La struttura ad albero è sufficientemente generale da adattarsi a tutte le applicazioni, ma sufficientemente ben caratterizzata per la realizzazione di parser generici XML per la comunicazione XML DTD Appl. 1 Formato interno 1 Appl. 2 Formato interno 2

5 5 Perché XML-S ? DTD è poco pratico e poco espressivo per le esigenze di comunicazione Limiti dei DTD – Namespace: come già visto è difficile far coesistere DTD e namespace perché i primi sono nati con XML, mentre i namespace sono stati introdotti successivamente – Elementi di testo: non è possibile imporre vincoli al contenuto testuale e, soprattutto, agli attributi. Non esiste il concetto di testo tipizzato es: Marco – Content model misti: è possibile comporli solo come (#PCDATA|..|..)* – Documentazione: con i DTD posso solo inserire i commenti XML, che però possono essere ignorati dal parser – I DTD NON sono scritti in XML !!!

6 6 XSD XSD (XML Schema Definition) è una particolare applicazione XML (linguaggio) che serve a descrivere le regole di validità di un altro linguaggio Risposta allinadeguatezza di DTD (probabile sostituzione di fatto) – Supporto estensivo per la qualificazione tramite namespace – Un sistema di tipi gerarchico Tipizzazione del testo Tipizzazione dei contenuti – Definizione di frammenti di specifica riutilizzabili – Permette di specificare vincoli per elementi strutturati ed offre grande flessibilità per Content Model misti – Documentazione esplicita – Ovviamente è scritto in XML Non ci sono pasti gratis: è più complesso e prolisso del DTD (fattore 1:4)

7 7 Struttura di un XML Schema XSD fa riferimento al namespace Un documento XSD è racchiuso in un elemento Il documento si articola in una serie di definizioni di tipi ed elementi XML Schema usa i tipi per specificare i vincoli sul contenuto degli elementi e degli attributi – I tipi possono essere: – Semplici: un tipo semplice non può contenere markup o attributi. Si tratta di restrizioni di #PCDATA e CDATA – Complessi: un tipo complesso è lanalogo dei tipi strutturati (element content) e misti (mixed content) del DTD

8 8 Tipi semplici In maniera analoga ai comuni linguaggi di programmazione i tipi semplici possono essere built-in o user-defined I tipi sono tutti qualificati. Es: xsd:string Tipi built-in: – string, boolean, decimal, float, – Date (es: ), time (es: 13:00:00+01:00) – ID ed IDREF: con lo stesso significato del DTD – Ecc… Tipi semplici user-defined (o derivati) – … In generale un tipo può essere anonimo quando la sua attribuzione è desunta dalla collocazione fisica dellelemento XML che lo definisce

9 9 Derivazione per restrizione - 1 Il metodo classico per derivare tipi user-defined è quello di partire da un tipo già noto e restringere i valori assumibili Ogni tipo semplice ha delle caratteristiche (facets) che possono essere usate nella restrizione Facets – length, minLength, maxLength : numero di elementi (es: caratteri) – minExclusive, minInclusive, maxExclusive, maxInclusive – enumeration – ecc…

10 10 Derivazione per restrizione - 2 …

11 11 Restrizione tramite pattern Particolare metodo di restrizione Utilizza una sintassi apposita per descrivere i valori ammissibili tramite espressioni regolari (simili al Perl) – a?, a – a+:a, aa, aaaaa, … – a* :, a, aa, aaaa, … – [abcd]/(a|b|c|d)a, b, c, d – [a-z]a, b, c, …, z – a{2,4}aa, aaa, aaaa – [^0-9]+sequenza di non cifre

12 12 Derivazione per unione I valori assumibili sono lunione dei valori assumibili da due tipi semplici

13 13 Derivazione per lista - 1 Fino ad ora abbiamo visto solo tipi scalari E possibile definire come tipo semplice la lista, divisa da spazi, di altri tipi semplici. Tipo strutturato omogeneo.. Analogo agli array dei linguaggi di programmazione

14 14 Derivazione per lista - 2 Con i tipi lista il facet length si riferisce ai componenti

15 15 Tipi anonimi - 1 In ogni occasione in cui devo fare riferimento ad un tipo posso di fatto definirlo in un elemento interno …

16 16 Tipi anonimi - 2 Questo vale anche e soprattutto nel caso in cui un tipo venga utilizzato una sola volta. Nel DTD non cè distinzione tra elementi (o attributi) e tipi, corrispondenza 1:1 …

17 17 Tipi complessi I tipi complessi sono – I content vuoti e generici (EMPTY ed ANY del DTD) – Element content – Mixed content – Qualunque elemento con attributi Il concetto centrale è quello di aggregazione (tipi strutturati) Tipo non scalare disomogeneo per aggregazione. Analogo alle strutture dei linguaggi di programmazione

18 18 Content model ANY ed EMPTY Si costruiscono sulla base dei tipi predefiniti xsd:anyType ed xsd:complexType ANY content è definito come xsd:anyType EMPTY content è un complexType per cui non si specifica nessun componente

19 19 Element content - 1 XSD utilizza degli elementi appositi per esprimere la struttura dei sottoelementi di un element content (DTD usava le espressioni regolari) Dato che XSD gestisce separatamente tipi ed istanze occorre assegnare ad ogni sottoelemento sia il nome (tag) che il tipo (struttura del contenuto e degli attributi) Sequenza (A, B, …) … Esempio:

20 20 Element content - 2 alternativa (A | B | …) Insieme (A & B & …) – tutti gli elementi (come sequence), ma senza vincoli sullordinamento – presente in SGML ma eliminato dal DTD …

21 21 Element content - 3 A? / A+ / A* – XSD fornisce un costrutto più generale, che permette di indicare cardinalità minima e massima di ogni sottoelemento e di ogni costrutto di tipo (sequence, ecc..) in maniera simile a xsd:pattern – xsd:minOccurs: numero di occorrenze minime – xsd:maxOccurs: numero massimo di occorrenze. Può essere unbounded – Entrambi hanno per default il valore 1 A? A+ A*

22 22 Element content complessi Come avviene con i DTD i costrutti possono combinarsi per formare espressioni regolari

23 23 Mixed content - 1 Sintatticamente, la definizione di un tipo complesso con contenuto misto richiede semplicemente di specificare lattributo mixed=true.

24 24 Mixed content - 2 La maggiore generalità dellXSD permette di esprimere vincoli più precisi. Ad esempio è semplice forzare lordine degli elementi. Oppure si obbliga lXML ad avere tutti i sottoelementi, anche se inframezzati da testo

25 25 Derivazione di tipi complessi I tipi complessi possono essere derivati sia per restrizione che per estensione Derivazione per restrizione: si limitano i valori assumibili dallelemento allinterno del documento XML. – Rafforzamento dei vincoli minOccurs e maxOccurs – Tipizzazione più precisa di un sottoelemento o di un attributo – Assegnamento di un valore preciso a sottoelementi o attributi Derivazione per estensione : – Si aggiungono sottoelementi e/o attributi Le due tecniche corrispondono alle due tipologie di eredità dei linguaggi di programmazione

26 26 Derivazione per restrizione Il TestoConEffetti è un testo con almeno un elemento bold o italic Può essere usato ogni volta che ci si aspetterebbe TipoTesto Altre restrizioni sono: – Impostare un default per gli elementi – Assegnare un valore fisso o specificare il tipo – Restringere i minOccurs-maxOccurs

27 27 Derivazione per estensione Si aggiungono elementi e/o attributi

28 28 Tipi e content model Formalmente la definizione dei sottoelementi costituisce il ContentModel, mentre il Tipo è dato dal ContentModel e dagli eventuali attributi Diventa possibile distinguere tra tipi complessi con contenuto semplice o complesso

29 29 Definizioni globali Una definizione è globale se è direttamente allinterno dellelemento Invece che assegnare un nome locale ad un elemento è possibile riferirsi ad un elemento globale, riutilizzandone la definizione attraverso lattributo ref

30 30 XSD e namespace - 1 Uno schema è una collezione di tipi ed elementi appartenenti ad uno specifico namespace, detto targetnamespace Quando vogliamo verificare la validità del documento lo facciamo in relazione ad uno o più schemi. Ci serve sapere quali tag considerare per ogni schema Lautore dello schema può specificare se gli elementi e gli attributi devono essere qualificati tramite prefissi o tramite il namespace di default

31 31 XSD e namespace - 2 Lattributo targetNamespace dellelemento specifica il nameSpace associato alle componenti dello schema Gli attributi elementFormDefault ed attributeFormDefault specificano se gli elementi e gli attributi non globali devono essere qualificati <>…

32 32 XSD e namespace - 3 Solo gli elementi globali possono essere radici di un elemento Con i valori di default (unqualified) solo gli elementi e gli attributi globali sono qualificati Marco Luca Nota di prova errore

33 33 XSD e namespace - 4 E possibile dare indicazioni al parser per controllare la coesistenza con elementi di altri namespace Lista generica di elementi appartenenti al namespace … Lista generica di elementi NON appartenenti al namespace

34 34 Modularità - 1 E possibile creare gruppi di elementi ed attributi riusabili E possibile includere uno schema esterno su cui costruire la propria descrizione

35 35 Modularità - 2 Substitution Groups: è un meccanismo che permette di sostituire elementi con altri elementi Ogni gruppo associa ad un elemento globale una serie di elementi che gli possono essere sostituiti Gli elementi shipComment e customerComment possono sostituire comment nel particolare documento XML

36 36 Annotazione XSD fornisce un supporto proprietario per la documentazione dello schema Documentation contiene del testo destinato al lettore umano Appinfo contiene (meta)informazioni utilizzabili dellapplicazione questo elemento contiene del testo libero… …

37 37 Utilizzo degli XSD – 1 Il file XML può dichiarare lo schema a cui si riferisce sfruttando il namespace Se lo schema non definisce un targetNamespace lo si può utilizzare per gli elementi non qualificati Se lo schema definisce un target occorre utilizzare il namespace corretto … …

38 38 Utilizzo degli XSD – 2 Se si utilizzano tipi derivati dove lo schema prevederebbe il tipo originale è necessario specificare il tipo (binding dinamico) tramite lattributo xsi:type … estratto in lingua italiana

39 39 Altre caratteristiche OO – 1 Elementi astratti: sono elementi che non verranno mai inclusi nellXML, ma servono come base per gruppi di sostituzione Tipi astratti: richiedono luso di un sottotipo concreto (utilizzando xsi:type per segnalare il polimorfismo) SI NO

40 40 Altre caratteristiche OO – 2 Tipi e facet final: bloccano la ridefinizione nei sottotipi permette di modificare una parte della definizione di uno schema. E sostanzialmente molto simile ad, ma modifica lo schema importato


Scaricare ppt "1 XML - Schema Mario Arrigoni Neri. 2 XML ben formati ed XML validi La buona forma di un documento XML è una proprietà puramente sintattica – Tutti i."

Presentazioni simili


Annunci Google