Articles

Un esempio XSD

Questo capitolo mostrerà come scrivere uno schema XML. Imparerai anche che uno schema può essere scritto in modi diversi.

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.

Iniziamo aprendo un nuovo file che chiameremo ” shiporder.xsd”. Per creare lo schema potremmo semplicemente seguire la struttura nel documento XML e definire ogni elemento come lo troviamo. Inizieremo con la dichiarazione XML standard seguita dall’elemento xs: schema che definisce uno schema:

<?versione xml=codifica”1.0″=”UTF-8″?>
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>

< / xs:schema>

Nello schema sopra usiamo lo spazio dei nomi standard (xs) e l’URI associato a questo spazio dei nomi è la definizione del linguaggio dello schema, che ha il valore standard di http://www.w3.org/2001/XMLSchema.

Successivamente, dobbiamo definire l’elemento “shiporder”. Questo elemento ha un attributo e contiene altri elementi, quindi lo consideriamo come un tipo complesso. Gli elementi figlio dell’elemento “shiporder” sono circondati da un elemento xs: sequence che definisce una sequenza ordinata di elementi secondari:

< xs:element name=”shiporder”>
<xs:complexType>
<xs:sequence>

</xs:sequence>
</xs:complexType>
</xs:element>

Then we have to define the “orderperson” element as a simple type (because it does not contain any attributes or other elements). The type (xs:stringa) è preceduto dal prefisso dello spazio dei nomi associati con XML Schema che indica uno schema predefinito tipo di dati:

<xs:element name=ôorderpersonä type=”xs:string”/>

Avanti, dobbiamo definire due elementi che sono di tipo complesso: “consegna” e la “voce”. Iniziamo definendo l’elemento “shipto”:

Con gli schemi possiamo definire il numero di possibili occorrenze 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 maxOccurs e minOccurs è 1!

Ora possiamo definire l’elemento “item”. Questo elemento può apparire più volte all’interno di un elemento” shiporder”. Questo viene specificato impostando l’attributo maxOccurs dell’elemento” item “su” unbounded”, il che significa che possono esserci tante occorrenze dell’elemento” item ” come desidera l’autore. Si noti che l’elemento” nota ” è facoltativo. Lo abbiamo specificato impostando l’attributo minOccurs a zero:

Ora possiamo dichiarare l’attributo dell’elemento “shiporder”. Poiché questo è un attributo obbligatorio specifichiamo use = “required”.

Nota: L’attributo dichiarazioni devono venire sempre l’ultima volta:

<xs:attribute name=”orderid” type=”xs:string” use=”required”/>

Ecco l’elenco completo dei file di 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 metodo di progettazione successivo si basa sulla definizione prima di tutti gli elementi e gli attributi e quindi sul loro riferimento utilizzando l’attributo ref.

Ecco il nuovo design del file schema (“shiporder.xsd”):

Utilizzando i tipi denominati

Il terzo metodo di progettazione definisce classi o tipi, che ci consente di riutilizzare le definizioni degli elementi. Questo viene fatto nominando gli elementi simpleTypes e complexTypes e quindi indicandoli attraverso l’attributo type dell’elemento.

Ecco il terzo disegno del file schema (“shiporder.xsd”):

L’elemento di restrizione indica che il tipo di dati è derivato da un tipo di dati dello spazio dei nomi dello schema XML W3C. Quindi, il seguente frammento significa che il valore dell’elemento o dell’attributo deve essere un valore stringa:

< xs: restriction base= ” xs:string”>

The restriction element is more often used to apply restrictions to elements. Look at the following lines from the schema above:

<xs:simpleType name=”orderidtype”>
<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 essere esattamente sei caratteri di fila e quei caratteri devono essere un numero da 0 a 9.