Un esempio XSD
Il Settembre 29, 2021 da adminQuesto capitolo dimostra come scrivere uno schema XML. Imparerai anche che uno schema può essere scritto in diversi modi.
Un documento XML
Diamo un’occhiata a questo documento XML chiamato “shiporder.xml”:
Creare uno schema XML
Ora vogliamo creare uno schema per il documento XML di cui sopra.
Cominciamo aprendo un nuovo file che chiameremo “shiporder.xsd”. Per creare lo schema potremmo semplicemente seguire la struttura del documento XML e definire ogni elemento come lo troviamo. Inizieremo con la dichiarazione XML standard seguita dall’elemento xs:schema che definisce uno schema:
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
…
</xs:schema>
Nello schema qui sopra usiamo il namespace standard (xs), e l’URI associato a questo namespace è la definizione del linguaggio Schema, che ha il valore standard di http://www.w3.org/2001/XMLSchema.
Poi dobbiamo definire l’elemento “shiporder”. Questo elemento ha un attributo e contiene altri elementi, quindi lo consideriamo come un tipo complesso. Gli elementi figli dell’elemento “shiporder” sono circondati da un elemento xs:sequence che definisce una sequenza ordinata di sotto elementi:
<xs:complexType>
<xs:sequence>
…
</xs:sequence>
</xs:complexType>
</xs:element>
Allora dobbiamo definire l’elemento “orderperson” come un tipo semplice (perché non contiene attributi o altri elementi). Il tipo (xs:string) è preceduto dal prefisso dello spazio dei nomi associato a XML Schema che indica un tipo di dati schema predefinito:
Poi, dobbiamo definire due elementi che sono di tipo complesso: “shipto” e “item”. Iniziamo definendo l’elemento “shipto”:
Con gli schemi possiamo definire il numero di occorrenze possibili per un elemento con gli attributi maxOccurs e minOccurs. maxOccurs specifica il numero massimo di occorrenze per un elemento e minOccurs specifica il numero minimo di occorrenze per un elemento. Il valore predefinito per entrambi maxOccurs e minOccurs è 1!
Ora possiamo definire l’elemento “item”. Questo elemento può apparire più volte all’interno di un elemento “shiporder”. Questo è specificato impostando l’attributo maxOccurs dell’elemento “item” a “unbounded” che significa che ci possono essere tante occorrenze dell’elemento “item” quante ne vuole l’autore. Notate che l’elemento “note” è opzionale. Lo abbiamo specificato impostando l’attributo minOccurs a zero:
Possiamo ora dichiarare l’attributo dell’elemento “shiporder”. Poiché questo è un attributo richiesto, specifichiamo use=”required”.
Nota: Le dichiarazioni degli attributi devono sempre venire per ultime:
Ecco la lista completa del file dello schema chiamato “shiporder.xsd”:
Dividere lo schema
Il metodo di progettazione precedente è molto semplice, ma può essere difficile da leggere e mantenere quando i documenti sono complessi.
Il prossimo metodo di progettazione si basa sul definire prima tutti gli elementi e gli attributi, e poi riferirsi ad essi usando l’attributo ref.
Ecco il nuovo design del file schema (“shiporder.xsd”):
Using Named Types
Il terzo metodo di progettazione definisce classi o tipi, che ci permettono di riutilizzare le definizioni degli elementi. Questo viene fatto nominando gli elementi simpleTypes e complexTypes, e poi puntando ad essi attraverso l’attributo type dell’elemento.
Ecco il terzo disegno del file schema (“shiporder.xsd”):
L’elemento restriction indica che il datatype è derivato da un datatype del W3C XML Schema namespace. Così, il seguente frammento significa che il valore dell’elemento o dell’attributo deve essere un valore stringa:
L’elemento restriction è più spesso usato per applicare restrizioni agli elementi. Guarda le seguenti righe dello schema sopra:
<xs:restriction base=”xs:string”>
<xs:pattern value=”{6}”/>
</xs:restriction>
</xs:simpleType>
Questo indica che il valore dell’elemento o dell’attributo deve essere una stringa, deve avere esattamente sei caratteri in fila, e questi caratteri devono essere un numero da 0 a 9.
Lascia un commento