Gli schema W3C Estensione di tipi semplici, scelte fra più elementi, application profiles.

Post on 01-May-2015

216 views 3 download

Transcript of Gli schema W3C Estensione di tipi semplici, scelte fra più elementi, application profiles.

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>