1 XML - Schema Mario Arrigoni Neri. 2 XML ben formati ed XML validi La buona forma di un documento...

Click here to load reader

  • date post

    01-May-2015
  • Category

    Documents

  • view

    222
  • download

    3

Embed Size (px)

Transcript of 1 XML - Schema Mario Arrigoni Neri. 2 XML ben formati ed XML validi La buona forma di un documento...

  • Slide 1
  • 1 XML - Schema Mario Arrigoni Neri
  • Slide 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.
  • Slide 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
  • Slide 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
  • Slide 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 !!!
  • Slide 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)
  • Slide 7
  • 7 Struttura di un XML Schema XSD fa riferimento al namespace http://www.w3.org/2001/XMLSchema Un documento XSD racchiuso in un elemento http://www.w3.org/2001/XMLSchema 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
  • Slide 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: 2004-01-10), 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
  • Slide 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
  • Slide 10
  • 10 Derivazione per restrizione - 2
  • Slide 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
  • Slide 12
  • 12 Derivazione per unione I valori assumibili sono lunione dei valori assumibili da due tipi semplici
  • Slide 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 1 2 34 88
  • Slide 14
  • 14 Derivazione per lista - 2 Con i tipi lista il facet length si riferisce ai componenti
  • Slide 15
  • 15 Tipi anonimi - 1 In ogni occasione in cui devo fare riferimento ad un tipo posso di fatto definirlo in un elemento interno
  • Slide 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
  • Slide 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
  • Slide 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
  • Slide 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:
  • Slide 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
  • Slide 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*
  • Slide 22
  • 22 Element content complessi Come avviene con i DTD i costrutti possono combinarsi per formare espressioni regolari
  • Slide 23
  • 23 Mixed content - 1 Sintatticamente, la definizione di un tipo complesso con contenuto misto richiede semplicemente di specificare lattributo mixed=true.
  • Slide 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
  • Slide 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
  • Slide 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
  • Slide 27
  • 27 Derivazione per estensione Si aggiungono elementi e/o attributi
  • Slide 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
  • Slide 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
  • Slide 30
  • 30 XSD e namespace - 1 Uno schema una collezione d