+ All Categories
Home > Documents > DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis...

DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis...

Date post: 01-May-2015
Category:
Upload: noelia-lopez
View: 216 times
Download: 1 times
Share this document with a friend
Popular Tags:
61
DTD & XML Schema Laurea Magistrale Laurea Magistrale in Informatica in Informatica Reti 2 (2005/06) Reti 2 (2005/06) dott. Francesco De Angelis [email protected]
Transcript
Page 1: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema

Laurea Magistrale Laurea Magistrale in Informaticain Informatica

Reti 2 (2005/06)Reti 2 (2005/06)

dott. Francesco De [email protected]

Page 2: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 2

Agenda

Document Type Definition XML Schema Namespace

Page 3: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

Document Type Definition

Page 4: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 4

XML ben formati ed XML validi

I due diversi livelli di “controllo” del documento generano due livelli di “correttezza”: XML ben formato: XML valido

Es: <title><book/><book> Titolo </book></title> è ben formato ma non è tipicamente valido

La buona formazione può essere valutata conoscendo solo XML

La validazione dipende dalla specifica applicazione XML e cioè dallo specifico linguaggio

Page 5: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 5

La forma di un documento XML

Ogni documento XML inizia con un prologo che contiene: una XML declaration eventualmente una Doctype Declaration (la

dichiarazione della DTD a cui il documento si riferisce)

eventualmente una serie di processing instruction

Le processing instruction sono utilizzate raramente, servono più che altro per l’aggiunta di fogli di stile

<?xml-stylesheet type=“text/css” href=“esempio.css”?>

Page 6: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 6

Dichiarazione XML

<?XML version=“1.0” encoding=“UTF-16” standalone=“yes” ?>

Un documento XML può includere una dichiarazione XML. Questa specifica le caratteristiche opzionali del documento in questione. Poiché esse sono ridotte al minimo, la dichiarazione XML è brevissima

La sintassi usata per la dichiarazione XML è quella delle processing instructions

La non obbligatorietà della dichiarazione XML è dovuta a motivi di convenienza, per poter usare la grande quantità di documenti HTML e SGML che sono ben formati senza richiedere modifiche anche stupide. In assenza di dichiarazione XML, si assume la forma:

<?XML version=“1.0” ?>

Page 7: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 7

Esistono esattamente tre valori che possono essere messi in una dichiarazione XML:

Il parametro “version” identifica quale versione di XML si sta usando. Per il momento, l’unico valore possibile è “1.0”. Necessario.

Il parametro “encoding” permette di specificare, se il dubbio può sorgere, quale codifica di caratteri viene usata per il documento. Facoltativo.

Il parametro “standalone” permette di specificare se tutto il contenuto del documento è interno alla risorsa o se ne esiste parte anche all'esterno (ad esempio in un'entità posta nel DTD esterno). Facoltativo. Se è assente è false.

Dichiarazione XML

Page 8: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 8

La Document Type Definition

Una DTD è costituita da un elenco di dichiarazioni (markup declaration) che descrivono la struttura del documento

Le dichiarazioni di una DTD definiscono: gli elementi strutturali (element) di un documento

mediante un identificatore generico il modello di contenuto di ogni elemento (content

model) ovvero gli elementi che contiene ed i loro rapporti (un elemento può essere vuoto)

la lista degli attributi associati a ciascun elemento e il loro tipo

Page 9: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 9

La Document Type Definition

XML non fornisce alcun modo per definire la semantica di una DTD

ogni elemento è definito esclusivamente interamente dal suo nome e dal suo contenuto

ogni altra specificazione semantica va fornita mediante documentazione in lingua naturale o in altre notazioni logiche

I DTD XML e SGML sono molto simili. A parte minime modifiche, ogni DTD XML è anche un DTD SGML.

Page 10: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 10

La dichiarazione di tipo

Il <!DOCTYPE … > è la dichiarazione del tipo di documento. Essa permette alle applicazioni XML di determinare le regole sintattiche da applicare alla verifica e validazione del documento.

La dichiarazione non è, ma contiene o fa riferimento alla Document Type Definition, dove vengono elencati gli elementi validi e i loro vincoli.

Il DTD può essere posto in un file esterno, internamente al documento, o in parte esternamente ed in parte internamente.

N.B.: In XML il nome del DOCTYPE deve essere il nome del tag radice.

Page 11: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 11

Dichiarazione del DTD: <!DOCTYPE … >

1. <!DOCTYPE mydoc SYSTEM “document.dtd“>La prima forma di dichiarazione indica che il DTD è contenuto in un

file esterno (external subset).

2. <!DOCTYPE mydoc [<!ELEMENT …

]>La seconda forma precisa il DTD internamente (internal subset).

3. <!DOCTYPE mydoc SYSTEM “document.dtd” [<!ELEMENT …

]>La terza forma precisa una parte del DTD come contenuta in un file

esterno ed una parte come propria del documento.

Page 12: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 12

Tipi di elementi

Il DTD definisce i tipi di elementi che possono occorrere nel file xml

Per ogni tipo di elemento viene indicato il tipo di contenuto, che può essere: Any content: indica che ogni contenuto è ammissibile.

Es: <!ELEMENT memo ANY> Empty content: un elemento vuoto non può contenere alcun testo tra

il tag di inizio e quello di chiusura e può quindi essere rappresentato da un tag vuoto. Es: <!ELEMENT br EMPTY>

Simple content: è un elemento il cui contenuto è composto da testo. In questo caso #PCDATA è acronimo di “Parsed Character Data”.Es: <!ELEMENT message (#PCDATA)>

Element content: è il caso tipico in cui il contenuto è composto da sottoelementi.Es: <!ELEMENT note (to, from, title, message)>

Mixed content: sono elementi che contendono testo misto ad altri elementi

Page 13: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 13

Element content - sequenza

Un elemento composto da una sequenza deve contenere una lista dei sottoelementi elencati, con un elemento per ogni tipo

I singoli sottoelementi sono divisi da virgole

DTD XML valido

<!ELEMENT note (to, from, title, message)>

<note><to/><from/><title/><message/></note>

Page 14: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 14

Element content - alternativa

Indica che il contenuto deve essere uno tra quelli elencati I singoli sottoelementi sono divisi da barre verticali (l’or del C)

DTD XML valido

<!ELEMENT a (b | c | d) > <a><b></b></a>

Page 15: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 15

Element content - ripetizione

E’ possibile definire in vari modi le cardinalità dei sottoelementi:

Nessuna specifica: l’argomento deve comparire esattamente una volta

<!ELEMENT a (b)> è permesso solo <a><b/></a>

?: opzione. Specifica che il sottoelemento è facoltativo<!ELEMENT a (b?)> sono leciti sia <a/> che <a><b/></a>

+: ripetizione. Il sottoelemento deve figurare una o più volte<!ELEMENT a (b+)> <a><b/></a>, <a><b/><b/></a>,

ecc...

*: ripetizione. Il sottoelemento può figurare un numero qualsiasi di volte, o anche non figurare affatto

<!ELEMENT a (b*)> <a/>, <a><b/></a>, <a><b/><b/></a>, ecc...

Page 16: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 16

Element content complessi

I costrutti possono combinarsi dando origine ad espressioni regolari <!ELEMENT sezione (titolo, abstract?, para+)>

ogni sezione ha un titolo, può avere un abstract opzionale, seguito da almeno un paragrafo

<!ELEMENT sezione (titolo, (abstract | para)+)>Dentro all’elemento sezione ci deve essere un titolo, seguito da almeno un abstract o un para, che poi possono ripetersi in qualunque ordine e numero

<!ELEMENT sezione (titolo, abstract*, para+)>Ogni elemento sezione è composto da un titolo, da una sequenza opzionale di abstract e da una sequenza si para composta da almeno un para

<!ELEMENT sezione (titolo, (sottotitolo | abstract)?, para+)>Ogni sezione è data da un titolo, da uno tra sottotitolo ed abstract, che possono però anche mancarem e da una serie di para

<!ELEMENT sezione (titolo, sottotitolo?, abstract?, para+>Come sopra, ma sottotitolo ed abstract possono coesistere

Page 17: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 17

Contenuto misto

In XML il contenuto di testo #PCDATA ed il contenuto di elementi possono combinarsi solo nella forma seguente:

<!ELEMENT para (#PCDATA | bold | italic)*>

Ogni paragrafo contiene un testo in cui si possono trovare, opzionalmente, degli elementi <bold> ed <italic>. Es:

<para><bold>Questo</bold> testo contiene delle sezioni in <bold>grassetto</bold> ed in <italic>corsivo</italic>, ma potrebbe anche non averne</para>

Page 18: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 18

Attributi

Il DTD permette anche di vincolare gli attributi dei singoli tag, cioè dei singoli elementi.

In generale gli attributi vengono specificati con ATTLIST:

<!ATTLIST elementoattributo1 tipo1 modificatore1attributo2 tipo2 modificatore2attributo-n tipo-n modificatore-n>

I tipi definiscono l’insieme o la tipologia dei valori assumibili dall’attributo

I modificatori identificano le condizioni di obbligatorietà o opzionalità dell’attributo ed, eventualmente, un valore di default per lo stesso

Page 19: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 19

Attributi stringa

<!ATTLIST message lang CDATA “Italiano”>

In questo caso l’attributo lang è una stringa Se l’attributo è presente nel file il suo valore è quello specificato Altrimenti viene assunto il valore di default “Italiano”

<note>…<message lang=“English”>Remember the meeting</message></note>

<note>…<message>Ricordati l’appuntamento</message></note>

Page 20: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 20

Attributi per enumerazione

<!ATTLIST person salutation (Mr | Mrs | Miss | Dr) “Mr”>

Il titolo di ogni persona assume valori nell’insieme indicato

In mancanza del parametro si assume per default “Mr”

<person salutation=“Dr”><name>Luke</name><surname>Brown</name>

</person>

Page 21: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 21

Tipi di attributi predefiniti

DTD definisce alcuni tipi speciali, che aiutano il progettista soprattutto per quanto riguarda le relazioni tra elementi ID: identificativo univoco all’interno del file

<!ATTLIST User login ID #REQUIRED> IDREF: riferimento ad un identificativo univoco definito nel

file<!ATTLIST User userClass IDREF #REQUIRED>

IDREFS: come IDREF, ma può esserci una lista di riferimenti

NMTOKEN o NMTOKENS: stringa (o lista di stringhe) di caratteri senza spazi o caratteri di interpunzione

ENTITY o ENTITIES: il valore deve essere un’entità

Page 22: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 22

Modificatori

Valore di default: espresso da una stringa indica il valore da assegnare all’attributo in mancanza di diverse indicazioni

Valore fisso: definito da #FIXED più il valore. L’attributo assume obbligatoriamente il valore assegnato e l’autore del documento XML non può modificarlo:<!ATTLIST persona numeroGambe CDATA #FIXED “2”>

Specifica di obbligatorietà: #REQUIRED. Indica che l’attributo deve essere sempre presente in ogni elemento<!ATTLIST misura val CDATA #REQUIRED>

Specifica di opzionalità: #IMPLIED. Indica che l’attributo è opzionale e può non essere specificato dall’autore del documento. Se combinato con ID indica che il sistema genererà un identificativo automaticamente

Page 23: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 23

Entità

Le entità del DTD sono frammenti ricorrenti di contenuti testuali a cui vengono associati degli identificatori che possono essere “espansi” come macro all’interno del documento prima di procedere al parsing vero e proprio

La definizione avviene secondo lo schema:<!ENTITY nomeEntità valore>

L’utilizzo avviene inserendo nel testo la sequenza:&nomeEntità;

Esempio:

<!ENTITY autore “Francesco De Angelis”><document>

<title>Introduzione ad XML</title><author>&autore;</author>

</document>

Page 24: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 24

Entità esterne

Le entità esterne vengono “recuperate” da un file esterno all’XML

<!ENTITY nomeEntità SYSTEM “url del file”>

Es: <!ENTITY text SYSTEM “book.txt”>

E’ possibile specificare entità da non parsare, tipicamente come entità di dati binari

<!ENTITY immagine SYSTEM “img.gif” NDATA gif>

<book><title>..</title><text>&text;</text></book>

Page 25: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 25

Entità predefinite

Sono predefinire tutte le entità associabili ai singoli caratteri sulla base del codice (unicode) degli stessi. Ad esempio l’entità &#10; corrisponde al carattere ASCII 10.

Alcuni caratteri, tra cui ‘<‘ ed ‘&’, creano problemi quando vengono mischiati al testo. Per questo sono predefinire alcune entità che possono sostituire questi caratteri:

Equivalente a : <![CDATA [<]]>

&lt; “&#60;”

&gt; “&#62;”

&amp; “&#38;”

&apos; “ ’ ”

&quot; “ ” ”

Page 26: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 26

Entità parametriche

Sono entità definite nel DTD ed utilizzate all’interno del DTD stesso

Vengono sostituite durante la lettura del DTD Contengono frammenti ricorrenti del modello di

contenuto Es: volendo definire in un unico punto il tipo di testo

che contiene sezioni in grassetto:

<!ENTITY % testo “#PCDATA”><!ENTITY % testoConBold “(%testo;|bold)*”><!ELEMENT testo %testoConBold;>

Page 27: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 27

Cosa c’è di sbagliato nelle DTD

Troppo “document oriented” DTD è stato sviluppato per interfacciarsi con tool per

il trattamento del testo Limitato nella rappresentazione di strutture

complesse Non c’è la nozione di ereditarietà/sub-typing Content-model ambiguo Troppi modi per rappresentare la stessa cosa I nomi sono globali, non locali

Page 28: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 28

Utilizzo delle DTD

Validazione Storage XML efficiente (persistenza, estensione, o

database storage) Documentazione Parsing efficiente Design di tool di supporto

Page 29: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

XML Schema

Page 30: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 30

XML Schema

“Schema” è un termine generale, dal vocabolario inglese: “a structured framework or plan”

Quando si parla di “XML Schema” si intende usualmente il W3C XML Schema Language … e il suo acronimo XSD

DTD, XML Schema, e RELAX NG sono tutti linguaggi di “schema” XML

Page 31: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 31

Perchè XML Schema?

DTD fornisce specifiche deboli Nessuna restrizione sul contenuto del testo Poco controllo sui contenuti misti (mixed content, text

+ elements) Poco controllo sull’ordinamento degli elementi

DTD è scritto in un formato non-XML Parser separati per DTD e XML

XML Schema Definition Language risolve questi problemi Più controllo su strutture e contenuti XSD è scritto in XML

Page 32: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 32

Riferirsi ad uno schema

Per la DTD il riferimento va prima del root element:<?xml version="1.0"?><!DOCTYPE rootElement SYSTEM "url"><rootElement> ... </rootElement>

Per l’XML Schema il riferimento va nel root element:<?xml version="1.0"?><rootElement

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" (riferimeno richiesto a XML Schema Instance) xsi:noNamespaceSchemaLocation="url.xsd"> (dove trovare lo Schema definition voluto) ...

</rootElement>

Page 33: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 33

Il documento XSD: “lo schema”

L’estensione è .xsd L’elemento root è <schema> Il documento XSD parte con:

<?xml version="1.0"?><xs:schema

xmlns:xs="http://www.w3.rg/2001/XMLSchema">

Attenzione: documento XSD stesso è scritto in XML

Page 34: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 34

<schema>

L’elemento <schema> può avere attributi: xmlns:xs="http://www.w3.org/2001/XMLSchema"

Specifica dove i tag dello schema sono specificati elementFormDefault="qualified"

Tutti gli elementi devono essere qualificati da un namespace

È altamente desiderabile qualificare ogni tag

Page 35: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 35

Elementi “semplici” e “complessi”

Un elemento semplice contiene solo testo Non ha attributi Non contiene altri elementi Non può essere vuoto Ci possono essere varie restrizioni applicate al

contenuto

Un elemento complesso Può avere attributi Può essere vuoto, contenere testo, altri elementi, o

sia testo che altri elementi.

Page 36: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 36

Definire un elemento semplice

Un elemento semplice è definito come:

<xs:element name="name” type="type” />

dove: name è il nome dell’elemento Valori comuni per type sono

xs:boolean xs:integer xs:date xs:string xs:decimal xs:time

Altri attributi di element sono: default="default value” se non ci sono altri valori specificati fixed="value" nessun altro valore specificato

Page 37: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 37

Definire un attributo

Gli attributi sono dichiarati sempre come tipi semplici Definito come

<xs:attribute name="name” type="type” />

dove: name e type sono gli stessi che per xs:element

Altri attributi che gli elementi semplici possono avere: default="default value" se nessun valore è specificato fixed="value” nessun altro valore può essere specificato use="optional" non richiesto (default) use="required" richiesto

Page 38: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 38

Restrizioni, o “facets”

La forma generale delle restrizioni è: <xs:element name="name"> (o

xs:attribute) <xs:restriction base="type"> ... the restrictions ... </xs:restriction></xs:element>

Ad esempio: <xs:element name="age">

<xs:restriction base="xs:integer"> <xs:minInclusive value="0"> <xs:maxInclusive value="140"> </xs:restriction></xs:element>

Page 39: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 39

Restrizioni su numeri

minInclusive -- numero deve essere ≥ di value

minExclusive -- numero deve essere > di value

maxInclusive -- numero deve essere ≤ di value

maxExclusive -- numero deve essere < di value

totalDigits -- numero deve avere value cifre

fractionDigits -- numero deve avere non più di value

cifre dopo il punto decimale

Page 40: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 40

Restrizioni su stringhe

length -- la stringa deve contenere value caratteri minLength -- la stringa deve contenere almeno

value caratteri maxLength -- la stringa deve contenere non più di

value caratteri pattern -- value è una espressione regolare da

soddisfare whiteSpace -- dice come trattare gli spazi bianchi

value="preserve" li mantiene value="replace" rinpiazza con “spazi” value="collapse" rimuove gli spazi iniziali, finali e

rimpiazza le sequenze con uno spazio singolo

Page 41: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 41

Enumerazioni

Restringe il range di possibili valori ad una loro enumerazione

Esempio: <xs:element name="season">

<xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Spring"/> <xs:enumeration value="Summer"/> <xs:enumeration value="Autumn"/> <xs:enumeration value="Fall"/> <xs:enumeration value="Winter"/> </xs:restriction> </xs:simpleType></xs:element>

Page 42: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 42

Elementi Complessi

Un elemento complesso è definito da: <xs:element name="name">

<xs:complexType> ... information about the complex type... </xs:complexType> </xs:element>

Esempio: <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstName" type="xs:string" /> <xs:element name="lastName" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>

Page 43: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 43

Definizioni locali e globali

Elementi di chiarati al “top level” dello <schema> sono disponibili per l’uso in tutto lo schema

Elementi dichiarati in un xs:complexType sono locali Così, in <xs:element name="person">

<xs:complexType> <xs:sequence> <xs:element name="firstName" type="xs:string" /> <xs:element name="lastName" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>

Gli elementi firstName e lastName sono dichiarati solo localmente

L’ordine delle dichiarazioni nel “top level” dello <schema> non specifica l’ordine di apparizione nel documento che usa tale schema

Page 44: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 44

Dichiarazione ed uso

Per sfruttare un tipo lo si usa in type="..." Esempi:

<xs:element name="student" type="person"/> <xs:element name="professor" type="person"/>

Lo scope (visibilità) è importante: non si può usare un tipo al di fuori del suo scope

Page 45: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 45

xs:sequence

Consente di specificare l’ordine di apparizione degli elementi

<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstName" type="xs:string" /> <xs:element name="lastName" type="xs:string" /> </xs:sequence> </xs:complexType>

</xs:element>

Page 46: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 46

xs:all

xs:all consente l’apparizione in qualsiasi ordine <xs:element name="person">

<xs:complexType> <xs:all> <xs:element name="firstName" type="xs:string" /> <xs:element name="lastName" type="xs:string" /> </xs:all> </xs:complexType>

</xs:element> A dispetto del nome i membri del gruppo xs:all possono

occorrere una sola volta o per niente Si può usare minOccurs="0" per specificare che un

elemento è opzionale (il valore di default è 1) In questo contesto, maxOccurs è sempre 1

Page 47: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 47

<xs:choice>

Definisce un insieme di elementi tra cui effettuare una scelta

<xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="firstName" type="xs:string" /> <xs:element name=“surName" type="xs:string" /> </xs:choice> </xs:complexType>

</xs:element>

Page 48: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 48

Riferimenti

Dopo avere definito elementi con name="...", si può far loro riferimento con ref="..."

Esempi: <xs:element name="person">

<xs:complexType> <xs:all> <xs:element name="firstName" type="xs:string" /> <xs:element name="lastName" type="xs:string" /> </xs:all> </xs:complexType> </xs:element>

<xs:element name="student" ref="person">

Oppure <xs:element ref="person">

Page 49: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 49

Elementi misti

Elementi misti possono contenere sia testo che altri elementi

Attributo mixed = "true” sull’elemento xs:complexType

Il testo stesso non è menzionato nell’elemento e può essere messo dove si vuole

<xs:complexType name= "paragraph” mixed="true"> <xs:sequence> <xs:element name= "someName” type= "xs:anyType"/> </xs:sequence></xs:complexType>

Page 50: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 50

Estensioni

Un tipo complesso può essere la base di un nuovo tipo

<xs:complexType name="newType"> <xs:complexContent> <xs:extension base="otherType"> ...new stuff... </xs:extension> </xs:complexContent></xs:complexType>

Page 51: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 51

Tipi di stringa predefiniti

Abbiamo detto che un tipo semplice è definito da: <xs:element name="name" type="type" />

Alcuni possibili tipi: xs:string -- una stringa xs:normalizedString -- una stringa che non

contiene tabs, newlines, or carriage returns xs:token -- una stringa che non contiene

whitespace oltre che gli spazi singoli Restrizioni sulle stringhe:

enumeration, length, maxLength, minLength, pattern, whiteSpace

Page 52: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 52

Date e tempo

xs:date -- Una data nel formato CCYY-MM-DD, for example, 2002-11-05

xs:time -- Una data nel formato hh:mm:ss (hours, minutes, seconds)

xs:dateTime -- Il formato è CCYY-MM-DDThh:mm:ss La “T” è parte della sintassi

Restrizioni consentite: enumeration, minInclusive, minExclusive, maxInclusive,

maxExclusive, pattern, whiteSpace

Page 53: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 53

Tipi numerici predefiniti

Tipi numerici predefiniti:

Allowable restrictions on numeric types: enumeration, minInclusive, minExclusive,

maxInclusive, maxExclusive, fractionDigits, totalDigits, pattern, whiteSpace

xs:decimal xs:positiveInteger

xs:byte xs:negativeInteger

xs:short xs:nonPositiveInteger

xs:int xs:nonNegativeInteger

xs:long

Page 54: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

Namespace

Page 55: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 55

Mischiare i tag

Sistema di elaborazione semplice: il documento viene elaborato da una sola applicazione (esempio il viewer)

Sistema complesso: parti diverse del documento vengono elaborate da applicazioni diverse

<html>…

</html>

ParserXML viewer

<html><book/></html>

ParserXML

viewer

Bookagent

Page 56: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 56

Mischiare i tag

Cosa accade se due applicazioni definiscono lo stesso elemento?

<?xml version=“1.0”?><table><tr> <td>nome</td> <td>cognome</td></tr><tr> <td>Mario</td> <td>Bianchi</td></tr><tr> <td>Luca</td> <td>Rossi</td></tr></table>

<?xml version=“1.0”?><table><name>Comodino001</name><price curr=“EU”>100</price><width u=“cm”>50</width><length u=”cm”>80</length></table>

<?xml version=“1.0”?><table><tr><td>ordine</td><td>prodotto</td></tr><tr><td>1</td><td> <table> <name>Comodino</name> <price>100</price> <width um=“cm”>50</width> <length um=”cm”>80</length> </table></td></tr></table>

<table> viene riconosciutodal viewer HTML o dalgestore dell’arredo?

Page 57: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 57

I namespace

Ogni nome di elemento (tag) XML è preceduto da un prefisso che lo rende univoco (tag qualificato)

La struttura del tag è: prefisso:nometag

<?xml version=“1.0”?><h:table>

<h:tr><h:td>ordine</h:td><h:td>prodotto</h:td></h:tr><h:tr><h:td>1</h:td><h:td>

<fur:table><fur:name>Comodino</fur:name><fur:price>100</fur:price><fur:width u=“cm”>50</fur:width><fur:length u=”cm”>80</fur:length>

</fur:table></h:td></h:tr>

</h:table>

Page 58: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 58

I namespace

Ma non basta: Il prefisso potrebbe ripetersi Documenti diversi potrebbero identificare lo stesso

namespace “logico” con identificativi differenti Imporre l’unicità porterebbe a ns lunghissimi ed a codici

illeggibili I prefissi usati vengono introdotti tramite l’attributo

predefinito xmlns Quello che conta è l’URI univoco associato al prefisso:

<h:table xmlns:h=“http://www.w3.org/HTML/1998/html4/”><pippo:table xmlns:pippo=“http://www.w3.org/HTML/1998/html4”>

<?xml version=“1.0”?><h:table xmlns:h=“http://www.w3.org/HTML/1998/html4/”

xmlns:fur=“http://www.elet.polimi.it/furniture/”></h:table>

<?xml version=“1.0”?><http://www.w3.org/HTML/1998/html4/table></http://www.w3.org/HTML/1998/html4/table>

Page 59: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 59

Namespace di default

Quando l’argomento di un XML è prevalentemente riferito ad un namespace è possibile definirlo come default e sottointendere la qualificazione

<?xml version=“1.0”?><table xmlns=“http://www.w3.org/HTML/1998/html4/” xmlns:fur=“http://www.elet.polimi.it/furniture/”>

<tr><td>ordine</td><td>prodotto</td></tr><tr><td>1</td><td>

<fur:table><fur:name>Comodino</fur:name><fur:price>100</fur:price><fur:width u=“cm”>50</fur:width><fur:length u=”cm”>80</fur:length>

</fur:table></td></tr>

</table>

Page 60: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 60

Scope dei prefissi

I prefissi possono essere definiti all’interno di ogni tag di inizio o vuoto.

L’associazione tra prefisso e NS dura per tutto l’elemento Se un prefisso viene ridefinito in un sottoelemento valgono

le solite regole di visibilità (il blocco interno nasconde quello esterno)

<?xml version=“1.0”?><table xmlns=“http://www.w3.org/HTML/1998/html4/”>

<tr><td>ordine</td><td>prodotto</td></tr><tr><td>1</td><td>

<table xmlns=“http://www.elet.polimi.it/furniture/”><name>Comodino</name><price>100</price><width u=“cm”>50</width><length u=”cm”>80</length>

</table></td></tr>

</table>

Page 61: DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis francesco.deangelis@unicam.it.

DTD & XML Schema 61

Attributi

Anche gli attributi, essendo legati alla particolare applicazione, possono essere qualificati con un prefisso

Il namespace contiene tre partizioni di nomi: Element Type Partition: contiene i nomi degli elementi

del namespace Global Attribute Partition: nomi degli attributi qualificati Per-Element Partition: nomi non qualificati degli attributi

locali ad un elemento

<fur:table fur:xmlns=“http://www.elet.polimi.it/furniture”><fur:name>Comodino</fur:name><fur:price>100</fur:price><fur:width fur:u=“cm”>50</fur:width><fur:length fur:u=”cm”>80</fur:length>

</fur:table>

<fur:width fur:u=“cm”>50</fur:width><fur:width u=“cm”>50</fur:width>


Recommended