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”/>
</xs:complexType>
<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>
L’enumerazione di valori è una
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></xs:simpleType>
</xs:element>
Con gli schema si possono
specificare anche i valori di un elemento
Modelli
<xsd:simpleType name="paginazione"><xsd:restriction base="xsd:string">
<xsd:pattern value="\d{1,4}-\d{1,4}"/></xsd:restriction>
</xsd:simpleType>Espressione regolare
\d{numero di caratteri}\s spazio
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>
<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></xs:complexType>
Esercizio 20 Esercizio 22 (a casa)
Bisogna estendere xs:string per
accogliere attributi
Per i valori degli attributi si deve
restringere xs:string
Tipo anonimo!
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></xs:complexType>
Equivale a
(#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
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema
elementFormDefault="qualified" attributeFormDefault="unqualified" >
Gli attributi no!
Gli elementi dovranno essere preceduti
da xs:
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"attributeFormDefault="unqualified">
Se c’è si riferiscono al target namespace
Il file1. 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 schemaQuando 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"/>
<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>
ref e non name
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>
Top Related