Gli schema W3C

Download Report

Transcript Gli schema W3C

Gli schema W3C
Estensione di tipi semplici,
scelte fra più elementi,
application profiles
Elementi vuoti
Senza attributi
<xs:element name=“figura”/>

Con attributi
<xs:element name=“figura">
<xs:complexType>
<xs:attribute name=“didascalia"
use="optional"
type=“xs:string” />
<xs:attribute name=“link” use=“optional”
type=“anyUri”>
</xs:complexType>
</xs:element>

Derivazione di tipi semplici

Restringimento



Enumerazione
Modelli (espressioni regolari)
Estensione
Enumerazione: attributi con valori
<xs:complexType name="STANZE">
<xs:sequence>
<xs:element name="verso" type="xs:string"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="tipo" use="optional"
default="quartina“ type=“en1”/>
L’enumerazione di
</xs:complexType>
valori è una
<xs:simpleType name=“en1”>
<xs:restriction base="xs:string">
<xs:enumeration value=“terzina"/>
<xs:enumeration value=“distico"/>
<xs:enumeration value=“quartina"/>
</xs:restriction>
</xs:simpleType>
restrizione del tipo
semplice xs:string
Enumerazione: elementi con valori
<xs:element name="titolo">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="I"/>
<xs:enumeration value="II"/>
</xs:restriction>
Con gli schema si
</xs:simpleType>
possono
specificare anche i
valori di un
</xs:element>
elemento
Modelli
\d{numero di caratteri}
\s spazio
<xsd:simpleType name="paginazione">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{1,4}\d{1,4}"/>
</xsd:restriction>
Espressione regolare
</xsd:simpleType>
Elemento con testo e attributi con valori
<xs:complexType name="STANZE">
<xs:sequence>
<xs:element name="verso" type=“Versi" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Bisogna estendere
<xs:complexType name=“Versi”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="tipo" use=“required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=“settenario"/>
<xs:enumeration value=“endecasillabo"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
Tipo anonimo!
</xs:complexType>
Esercizio 20
 Esercizio 22 (a casa)
xs:string per
accogliere attributi
Per i valori degli
attributi si deve
restringere
xs:string
Scelte fra più elementi
<xs:complexType name="STANZE“>
<xs:sequence>
<xs:choice>
<xs:element name="verso" type="xs:string“
maxOccurs="unbounded"/>
<xs:element name=“versetto” type="xs:string“
maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
Mixed Content model
<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>
Mixed content model 2
<xs:complexType name="STANZE“ mixed=“true”>
<xs:sequence>
<xs:choice>
<xs:sequence>
<xs:element name="verso" type="xs:string“
maxOccurs="unbounded"/>
<xs:element name=“versetto” type="xs:string“
maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element name=“versetto” type="xs:string“
maxOccurs="unbounded"/>
<xs:element name="verso" type="xs:string“
maxOccurs="unbounded"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
Mixed content Model 3: finalmente!
<xs:complexType name="STANZE“ mixed=“true”>
<xs:sequence>
<xs:choice maxOccurs="unbounded"
minOccurs="0">
<xs:element name="verso" type="xs:string“
maxOccurs="unbounded"/>
<xs:element name=“versetto” type="xs:string“
maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
Equivale a
</xs:complexType>
(#PCDATA|verso|versetto)*
L’ordine degli elementi



sequence: ordine obbligatorio
choice: scelta fra più elementi
all: un qualsiasi ordine NOVITA!
<xsd:complexType name="NTypo">
<xsd:all>
<xsd:element name="luogoEd" type="xsd:string"/>
<xsd:element name="editore" type="xsd:string"/>
<xsd:element name="annoEd" type="xsd:gYear"/>
</xsd:all>
</xsd:complexType>
Elementi e attributi qualificati

L’elemento root dello schema




Gli elementi dovranno
<xs:schema
essere preceduti
da xs:
xmlns:xs=http://www.w3.org/2001/XMLSche
ma
elementFormDefault="qualified"
attributeFormDefault="unqualified"
>
Gli attributi no!
Target namespace

Nell’elemento root si può anche:


definire qual’è il namespace principale
definire se elementi e attributi dovranno esplicitare o no
il namespace
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.iccu.sbn.it/biblio.xsl"
targetNamespace="http://www.sito.it/biblio.xsd"
elementFormDefault="unqualified"
Se c’è si riferiscono al
target namespace
attributeFormDefault="unqualified">
Il file
1. Non qualificato
<bibliografia xmlns="http://www.sito.it/biblio.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.iccu.sbn.it/biblio.xsd">
<!-- qui il documento -->
</bibliografia>
2. Qualificato
<bib:bibliografia xmlns:bib="http://www.sito.it/biblio.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.iccu.sbn.it/biblio.xsd">
<!-- qui il documento -->
</bib:bibliografia>
Includere frammenti di schema
Quando lo schema è grosso o si occupa di
più argomenti si può spezzare in più file:
<xs:include
schemaLocation="biblio2.xsd"/>
Importare altri namespace
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.sito.it/biblio.xsd"
targetNamespace="http://www.sito.it/biblio.xsd"
xmlns:dc="http://purl.org/dc/elements/1.1/"
elementFormDefault="qualified"
attributeFormDefault="unqualified" >
<!-- ecc. -->
<xsd:import namespace="http://purl.org/dc/elements/1.1/"
schemaLocation="simpledc20020312.xsd"/>
ref e non name
<xs:complexType name="VERSI">
<xs:sequence>
<xs:element ref="dc:title"/>
<xs:element name="stanza" type="STANZE" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xsd:schema>
Dublin Core

Schema di metadati descrittivi per
identificare una risorsa. Comprende:
title
 creator
 publisher
 date

Application profiles

schema costituito da elementi recuperati
da uno o più namespace combinati
insieme dagli implementatori e ottimizzati
per un particolare applicazione




Si possono combinare uno o più namespace
Non si possono introdurre nuovi elementi
Si possono specificare i valori degli elementi
Si possono raffinare le definizioni standard
 Esercizio 21
Annotazioni

<xsd:annotation> si usa per documentare gli
schema, sia per gli umonai che per le macchine


<xsd:documentation> documentazione per gli umani
<xsd:appinfo> documentazione per le applicazioni
<xsd:annotation>
<xsd:documentation xml:lang="it"> Schema per la creazione di
bibliografie
<!-- ricordarsi di spiegare meglio questo punto -->
</xsd:documentation>
</xsd:annotation>