140 likes | 279 Views
Gli schema W3C. Tipi semplici, tipi complessi, tipi anonimi. Tipi semplici e tipi complessi. tipo complesso : elemento che contiene sottoelementi o attributi tipo semplice : elemento che non contiene alcun sottoelemento o attributi; valore di attributi.
E N D
Gli schema W3C Tipi semplici, tipi complessi, tipi anonimi
Tipi semplici e tipi complessi • tipo complesso: elemento che contiene sottoelementi o attributi • tipo semplice: elemento che non contiene alcun sottoelemento o attributi; valore di attributi
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- qui schema --> </xsd:schema> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- qui schema --> </xs:schema> Un elemento root, due prefissi namespace
Definizione di elementi • Elementi complessi <xsd:element name=“nome elemento” type=“nome tipo complesso”/> • Elementi semplici <xsd:element name=“nome elemento” type=“xs:string”/>
Tipi complessi L’ordine è obbligatorio <xsd:complexType name="NTypo"> <xsd:sequence> <xsd:element name="luogoEd" type="xsd:string"/> <xsd:element name="editore" type="xsd:string"/> <xsd:element name="annoEd" type="xsd:gYear"/> </xsd:sequence> </xsd:complexType>
Occorrenze degli elementi • Due attributi per l’elemento <xsd:element> • minOccurs • maxOccurs Valori di default per entrambi: 1 Valori numerici Per maxOccurs anche una keyword: unbounded (illimitato)
Esempio <antologia> <poesia><titolo>I</titolo> <stanza> <verso>Voi ch'ascoltate in rime sparse il suono</verso> <verso>di quei sospiri ond'io nudriva 'l core</verso> <verso>in sul mio primo giovenile errore</verso> <verso>quand'era in parte altr'uom da quel ch'i' sono,</verso> </stanza> <stanza> <verso>del vario stile in ch'io piango et ragiono</verso> <verso>fra le vane speranze e 'l van dolore</verso> <verso>ove sia chi per prova intenda amore</verso> <verso>spero trovar pietà, nonché perdono.</verso> </stanza> </poesia> </antologia>
Il suo schema <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="antologia" type="POESIE"/> <xs:complexType name="POESIE"> <xs:sequence> <xs:element name="poesia" maxOccurs="unbounded" type="VERSI"/> </xs:sequence> </xs:complexType> <xs:complexType name="VERSI"> <xs:sequence> <xs:element name="titolo“ type=“xs:string”/> <xs:element name="stanza" type="STANZE" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="STANZE"> <xs:sequence> <xs:element name="verso" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:schema>
Tipi semplici predefiniti • xs:string • xs:gYear (4 cifre) • xs:positiveInteger • xs:anyURI • xs:ID • xs:IDREF • xs:date (aaaa-mm-gg+hh) Esercizio 16
Mixed Content model L’ordine è obbligatorio <xs:complexType name="STANZE“ mixed=“true”> <xs:sequence> <xs:element name="verso" type="xs:string“ maxOccurs="unbounded"/> <xs:element name=“versetto” type="xs:string“ maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> Esercizio 17
Attributi optional required prohibited <xs:complexType name="STANZE"> <xs:sequence> <xs:element name="verso" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="tipo" use="optional" type="xs:string" default="quartina"/> </xs:complexType> Esercizio 17 Se si usa default use=“optional”
Le immagini • Con un elemento <xs:complexType name="STANZE"> <xs:sequence> <xs:element name="verso" type="xs:string" maxOccurs="unbounded"/> <xs:element name="figura" type="xs:anyURI" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="tipo" type="xs:string" use="optional" default="quartina"/> </xs:complexType> Nel documento: <figura>c:/immagini/figura1.gif</figura>
Le immagini Con un attributo <xs:complexType name="POESIE"> <xs:sequence> <xs:element name="poesia" type="VERSI" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="figura" type="xs:anyURI" use="optional"/> </xs:complexType> Nel documento: <antologia figura=“c:/immagini/figura1.gif”> Esercizio 19 Preferibile!
Tipi anonimi Se si mette simpleType o complexType non si usa l’attributo type <xs:complexType name="VERSI"> <xs:sequence> <xs:element name="titolo"/> <xs:element name="stanza" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="verso" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>