2. Agenda
Introduzione e richiami formali
Più in dettaglio
Esempi
PAUSA
Esercitazione con l’aiuto di xmllint
Esercitazione con l’aiuto di carta e penna
Controllo del'esercitazione con xmllint
3. XSL-Schema
Raccomandazione del W3C (1.0 del maggio
2001, 1.1 è candidate racommendation)
È uno linguaggio XML like (primo a
raggiungere la W3C recommendation) per
validare un documento XML
Validare un documento XML significa
verificare che è conforme ai requisiti richiesti
dallo schema (presenza/assenza di nodi e
restrizioni sui tipi di dati presenti)
Viene usato anche per documentazione
4. Nomenclatura
Esistono diversi XML schema con cui
validare:
W3C XML Schema o semplicemente XML
Schema (o anche WXS o XSD, notale la “S” in
grande di schema) usato in questa sede
Relax NG (REgular LAnguage for XML Next Generation)
Schematron
XML-Data Reduced (XDR) di Microsoft
altri minori
6. Annotations
Documentazione
Istruzioni al sistema
<xs:annotation>
<xs:documentation xml:lang="it-IT">
Nodo Radice
</xs:documentation>
<xs:appinfo>root-node</xs:appinfo>
</xs:annotation>
7. Dichiarazione di un elemento
È la tipica dichiarazione di un elemento che
contiene testo (o un tipo specificato in type)
<xs:element name="fullName" type="xs:string">
8. Tipi di dati (alcuni) 1/2
boolean
byte
dateTime
integer
string
language
9. Tipi di dati 2/2
E’ possibile aumentare i tipi di dato unendo o
restringendo i tipi base:
<xs:restriction base="xs:string">
<xs:enumeration value="casa"/>
<xs:enumeration value="ufficio"/>
</xs:restriction>
10. Definizioni di tipo
la definizione di un elemento o di un attributo
avviene definendo un ComplexType o un
SimpleType
la definizione può avvenire globalmente
(inserendo il tipo sotto la radice dello
schema) e dandogli un nome con cui riferirlo,
o dichiararlo inline senza nome (viene
utilizzato solo una volta)
Vedi il SimpleType scontoType
nell’Esempio.xsd
11. SimpleType e ComplexType
Un elemento che non contiene sotto elementi
né attributi può essere definito attraverso un
SimpleType, altrimenti occorre usare un
ComplexType.
Gli attributi sono sempre SimpleType
Vedi Indirizzo nel file di esempio.
12. Occorrenze
La dichiarazione di un element prevede un
limite al numero di occorrenze di un elemento:
minOccurs da 0 a x
maxOccurs da 1 a unbounded
default per entrambi è 1
<xs:element name="record"
maxOccurs="unbounded">
13. Il contenuto degli elementi
Un elemento può contenere:
altri elementi
essere vuoto
contenere semplicemente testo
essere a contenuto misto (mixed content, vi
ricordare il seminario XML…???)
non definito
14. Elementi vuoti (Empty)
A cosa servono?
marcatori di posizione
presenza/assenza
contenitori di attributi
Esempio di elemento vuoto e opzionale:
<xs:element name="preferito" minOccurs="0">
<xs:complexType/>
</xs:element>
15. Elementi con solo testo
Hanno un contenuto di tipo semplice
(simpleContent) e adottano come tipi base
quelli definiti dallo schema con la possibilità
di ridefinirli con un meccanisco chiamato
Facets.
Controlli possibili: length, minLength,
maxLength, pattern, enumeration,
whiteSpace, maxInclusive, maxExclusive,
minInclusive, minExclusive …
19. Elemento contenente altri elementi
E’ di tipo complesso e definisce altri elementi
che possono apparire come figli attraverso:
xs:sequence i figli devono apparire
nell’ordine specificato
xs:choice deve essere presente uno e solo
uno dei figli descritti
xs:any i figli possono apparire una e una
solo volta in qualunque ordine
20. Qualunque contenuto
E’ necessario a volte poter far includere
qualunque cosa dentro un elemento (es:
rendering di XHTML):
xs:any
xs:anyAttribute
23. Numeri
Arricurarsi che il codice cliente sia un numero
da 1 a 9999.
…<codice_cliente>5</codice_cliente>…
Suggerimento: xs:restriction,
xs:minInclusive, xs:maxInclusive
31. Univocita del codice_cliente
Inserire nel file XSD il controllo dell’univocità
del campo codice_cliente dell’elemento
record.
Suggerimento: xs:unique