Date post: | 01-May-2015 |
Category: |
Documents |
Upload: | edoardo-lentini |
View: | 418 times |
Download: | 22 times |
DTD e XML SchemaDTD e XML Schema
UNIVERSITA’ DI CAMERINOCorso di laurea in Informatica
Barbara [email protected]
Anno Accademico 2006-07
Laboratorio Informatico in Database Turistici
Barbara Re 2
Agenda
DTD XML Schema
Laboratorio Informatico in Database Turistici
Barbara Re 3
Per esercitarsi
Microsoft XML validator Da scaricare dall’area down_load e caricare sul
proprio computer
Laboratorio Informatico in Database Turistici
Barbara Re 4
XML ben formati ed XML validi
I due diversi livelli di “controllo” del documento generano due livelli di “correttezza”
XML ben formatoXML 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
Laboratorio Informatico in Database Turistici
Barbara Re 5
La forma di un documento XML
Ogni documento XML inizia con un prologo che contiene
una XML declarationeventualmente 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”?>
Laboratorio Informatico in Database Turistici
Barbara Re 6
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 definisconogli 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
Laboratorio Informatico in Database Turistici
Barbara Re 7
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
Laboratorio Informatico in Database Turistici
Barbara Re 8
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.
Laboratorio Informatico in Database Turistici
Barbara Re 9
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
Laboratorio Informatico in Database Turistici
Barbara Re 10
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>
Laboratorio Informatico in Database Turistici
Barbara Re 11
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>
Laboratorio Informatico in Database Turistici
Barbara Re 12
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...
Laboratorio Informatico in Database Turistici
Barbara Re 13
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
Laboratorio Informatico in Database Turistici
Barbara Re 14
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>
Laboratorio Informatico in Database Turistici
Barbara Re 15
Esercizio 1
Definire il documento xml relativo a questo schema
<!DOCTYPE books [<!ELEMENT books (book+)><!ELEMENT book (title,author,year,publisher,isbn,price)><!ELEMENT title (#PCDATA)><!ELEMENT author (#PCDATA)><!ELEMENT year (#PCDATA)><!ELEMENT publisher (#PCDATA)><!ELEMENT isbn (#PCDATA)><!ELEMENT price (#PCDATA)>]>
Laboratorio Informatico in Database Turistici
Barbara Re 16
Soluzione Esercizio 1
<books><book><title>Megatrends 2000</title><author>J. Naisbitt</author><year>1991</year><publisher>Avon Book</publisher><isbn>0-380-70437</isbn><price>6.99</price></book></books>
<!DOCTYPE books [<!ELEMENT books (book+)><!ELEMENT book (title,author,year,publisher,isbn,price)><!ELEMENT title (#PCDATA)><!ELEMENT author (#PCDATA)><!ELEMENT year (#PCDATA)><!ELEMENT publisher (#PCDATA)><!ELEMENT isbn (#PCDATA)><!ELEMENT price (#PCDATA)>]>
Laboratorio Informatico in Database Turistici
Barbara Re 17
Esercizio 2
Definire lo schema relativo a questo documento xml
<movie><title> Aleksandar Nevski</title><director>S. Eisenstein</director><actor>N. Cherkasov</actor></movie>
Laboratorio Informatico in Database Turistici
Barbara Re 18
Soluzione Esercizio 2
<!DOCTYPE movie [<!ELEMENT movie (title,director,actor)><!ELEMENT title (#PCDATA)><!ELEMENT director (#PCDATA)><!ELEMENT actor (#PCDATA)>]>
<movie><title> Aleksandar Nevski</title><director>S. Eisenstein</director><actor>N. Cherkasov</actor></movie>
Laboratorio Informatico in Database Turistici
Barbara Re 19
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
Laboratorio Informatico in Database Turistici
Barbara Re 20
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>
Laboratorio Informatico in Database Turistici
Barbara Re 21
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>
Laboratorio Informatico in Database Turistici
Barbara Re 22
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 riferimentiNMTOKEN o NMTOKENS: stringa (o lista di stringhe) di caratteri senza spazi o caratteri di interpunzioneENTITY o ENTITIES: il valore deve essere un’entità
Laboratorio Informatico in Database Turistici
Barbara Re 23
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
Laboratorio Informatico in Database Turistici
Barbara Re 24
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>
Laboratorio Informatico in Database Turistici
Barbara Re 25
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>
Laboratorio Informatico in Database Turistici
Barbara Re 26
Entità predefinite
Sono predefinire tutte le entità associabili ai singoli caratteri sulla base del codice (unicode) degli stessi. Ad esempio l’entità 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 [<]]>
< “<”
> “>”
& “&”
' “ ’ ”
" “ ” ”
Laboratorio Informatico in Database Turistici
Barbara Re 27
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;>
Laboratorio Informatico in Database Turistici
Barbara Re 28
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
Laboratorio Informatico in Database Turistici
Barbara Re 29
Utilizzo delle DTD
Validazione Storage XML efficiente (persistenza, estensione, o
database storage) Documentazione Parsing efficiente Design di tool di supporto
Laboratorio Informatico in Database Turistici
Barbara Re 30
Esercizio 3
Dato l’XML in figura creare una corrispondente DTD ed effettuare la validazione
Laboratorio Informatico in Database Turistici
Barbara Re 31
Esercizio 3
Dato il seguenteschema dare ildocumento xml edeffettuare lavalidazione
Laboratorio Informatico in Database Turistici
Barbara Re 32
Ci sono domande?
Laboratorio Informatico in Database Turistici
Barbara Re 33
XML Schema
Laboratorio Informatico in Database Turistici
Barbara Re 34
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
Laboratorio Informatico in Database Turistici
Barbara Re 35
Perchè XML Schema?
DTD fornisce specifiche deboliNessuna 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-XMLParser separati per DTD e XML
XML Schema Definition Language risolve questi problemi
Più controllo su strutture e contenutiXSD è scritto in XML
Laboratorio Informatico in Database Turistici
Barbara Re 36
DTD e XML Schema a confronto
<quantity>5</quantity> indica che l’elemento quantity contiene dati di caratteri
Questo elemento può essere validato per confermare che ha effettivamente un contenuto (PCDATA)<quantity>ciao</quantity> è conforme
Se l’applicazione che elabora il documento XML ha bisogno di verificare se il contenuto dell’elemento quantity è numerico non ci sono soluzioni con la DTD
Laboratorio Informatico in Database Turistici
Barbara Re 37
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>
Laboratorio Informatico in Database Turistici
Barbara Re 38
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
Laboratorio Informatico in Database Turistici
Barbara Re 39
<schema>
L’elemento <schema> può avere attributixmlns: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
Laboratorio Informatico in Database Turistici
Barbara Re 40
Elementi “semplici” e “complessi”
Un elemento semplice contiene solo testoNon ha attributiNon contiene altri elementiNon può essere vuotoCi possono essere varie restrizioni applicate al contenuto
Un elemento complessoPuò avere attributiPuò essere vuoto, contenere testo, altri elementi, o sia testo che altri elementi.
Laboratorio Informatico in Database Turistici
Barbara Re 41
Definire un elemento semplice
Un elemento semplice è definito come
<xs:element name="name” type="type” />
dove:name è il nome dell’elementoValori comuni per type sono xs:boolean xs:integer xs:date xs:string xs:decimal xs:time
Altri attributi di element sonodefault="default value” se non ci sono altri valori specificatifixed="value" nessun altro valore specificato
Laboratorio Informatico in Database Turistici
Barbara Re 42
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 è specificatofixed="value” nessun altro valore può essere specificatouse="optional" non richiesto (default)use="required" richiesto
Laboratorio Informatico in Database Turistici
Barbara Re 43
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>
Laboratorio Informatico in Database Turistici
Barbara Re 44
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
Laboratorio Informatico in Database Turistici
Barbara Re 45
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 mantienevalue="replace" rinpiazza con “spazi”value="collapse" rimuove gli spazi iniziali, finali e rimpiazza le sequenze con uno spazio singolo
Laboratorio Informatico in Database Turistici
Barbara Re 46
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>
Laboratorio Informatico in Database Turistici
Barbara Re 47
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>
Laboratorio Informatico in Database Turistici
Barbara Re 48
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
Laboratorio Informatico in Database Turistici
Barbara Re 49
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
Laboratorio Informatico in Database Turistici
Barbara Re 50
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>
Laboratorio Informatico in Database Turistici
Barbara Re 51
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
Laboratorio Informatico in Database Turistici
Barbara Re 52
<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>
Laboratorio Informatico in Database Turistici
Barbara Re 53
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">
Laboratorio Informatico in Database Turistici
Barbara Re 54
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>
Laboratorio Informatico in Database Turistici
Barbara Re 55
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>
Laboratorio Informatico in Database Turistici
Barbara Re 56
Tipi di stringa predefiniti
Abbiamo detto che un tipo semplice è definito da: <xs:element name="name" type="type" />
Alcuni possibili tipi:xs:string -- una stringaxs:normalizedString -- una stringa che non contiene tabs, newlines, or carriage returnsxs:token -- una stringa che non contiene whitespace oltre che gli spazi singoli
Restrizioni sulle stringhe:enumeration, length, maxLength, minLength, pattern, whiteSpace
Laboratorio Informatico in Database Turistici
Barbara Re 57
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
Laboratorio Informatico in Database Turistici
Barbara Re 58
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
Laboratorio Informatico in Database Turistici
Barbara Re 59
Esercizio
Scrivere uno schema per il seguente documento
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="property.xsl"?><adNewHomes><adDetail><property>University Square</property><area>San Mateo County</area><developer>Summer Hill Homes</developer><location>Exit University, off 101. Right on Donahoe </location><price>from the high $500's</price><adText>Ponderosa Series. 3 and 4 BR homes with Craftsman details from 1,761 to 2,024 sq ft.</adText><hours>11-5 Thurs-Sun</hours><phone>650/466-8700M</phone></adDetail><adDetail><property>Sonsara</property><area>Contra Costa County</area><developer>Taylor Woodrow Homes</developer><location>Moraga. Camino Ricardo and Morago Way </location><price>from the high $800's</price><adText>3 to 5 BR homes with great views. Luxury Homes in a great location.</adText><hours>10-5 Daily</hours><phone>925/431-2800</phone></adDetail><adDetail><property>Vintners Green</property><area>Alameda County</area><developer>Greystone Homes</developer><location>I-680 to 84. Rt on 84, go several mi. 84 turns into Holmes. Left on Alden Lane.</location><price>from the mid $600's</price><adText>3, 4 & 5 bedroom single-family homes. </adText><hours>11-5 Daily</hours><phone>925/442-3200</phone></adDetail><adDetail><property>Dublin Ranch</property><area>Alameda County</area><developer>Shore Homes</developer><location>680 at Dublin Canyon</location><price>from the $400-700's</price><adText>Master planned community, 3-6 BR Shore Home.</adText><hours>11-7 Tues-Sun</hours><phone>925/779-9000</phone></adDetail></adNewHomes>
Laboratorio Informatico in Database Turistici
Barbara Re 60
Soluzione
<?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"><xsd:element name="adNewHomes" type="adType" maxOccurs="4"/><xsd:complexType name="adType"><xsd:sequence><xsd:element name="property" type="xsd:string"/><xsd:element name="area" type="xsd:string"/><xsd:element name="developer" type="xsd:string"/><xsd:element name="location" type="xsd:string"/><xsd:element name="price" type="xsd:string"/><xsd:element name="adText" type="xsd:string"/> <xsd:element name="hours" type="xsd:string"/><xsd:element name="phone" type="xsd:string"/></xsd:sequence></xsd:complexType></xsd:schema>
Laboratorio Informatico in Database Turistici
Barbara Re 61
Ci sono domande?