Share |

domenica 7 febbraio 2010

Dichiarare uno Schema XSD

In questo articolo spiegherò le regole per dichiarare correttamente uno Schema XSD per eseguire successivamente la validazione_XSD di un documento XML.

Lo Schema XSD permette di definire la struttura e i tipi di dati contenuti in un documento XML.

Ovviamente,
anche lo Schema XSD è un documento XML, con un aspetto simile a questo:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:complexType name="piantaItem">
    <xs:attribute name="id" type="xs:integer" />
    <xs:sequence>
      <xs:element name="nome" maxOccurs="1" type="xs:string" />
      <xs:element name="esterno" maxOccurs="1" type="xs:boolean" />
      <xs:element name="colore" maxOccurs="1" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="serra">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="pianta" type="piantaItem" />
      </xs:sequence>
    </xs:complexType> 
  </xs:element>

</xs:schema> 

Caratteristiche di uno Schema XSD

Il documento dello Schema XSD deve innanzitutto dichiarare l'elemento di primo livello di nome schema ed in esso il riferimento al namespace (in italiano, spazio dei nomi) http://www.w3.org/2001/XMLSchema.

Comunemente si assegna il prefisso xs al namespace, sebbene sia possibile dichiararlo come default.

Oltre al namespace obbligatorio di cui sopra, l'elemento Schema può dichiarare altri spazi di nomi:

<xs:schema 
   xmlns="http://serra.org/schema"
   targetNamespace="http://serra.org/schema"
   xmlns:xs="http://www.w3.org/2001/XMLSchema">
   
   ........ 
</xs:schema>

In questo esempio, l'elemento <xs:schema> dichiara molteplici namespaces:

  • xmlns="http://serra.org/schema": il namespace di default è http://serra.org/schema;
  • targetNamespace="http://serra.org/schema": gli elementi definiti dallo schema appartengono al namespace http://serra.org/schema;
  • xmlns:xs="http://www.w3.org/2001/XMLSchema": gli elementi e i tipi di dati usati nello schema appartengono al namespace http://www.w3.org/2001/XMLSchema e devono comparire con il prefisso xs;

Referenziare lo Schema XSD nel documento XML

All'interno di un documento XML che aderisce ad uno Schema XSD, per garantirne la validazione, è necessario referenziare lo Schema stesso:

<serra xmlns="http://serra.org/schema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://serra.org/schema serra.xsd">
 <pianta id="112">
   <nome>Geranio</nome>
   <esterno>true</esterno>
   <colore>rosso</colore>
 </pianta>
 <attrezzo id="212">
   <nome>Rastrello</nome>
   <dimensioni>1,8 m.</dimensioni>
   <materiale>acciaio</materiale>
   <util>Utilizzato per prati di piccole dimensioni</util>
 </pianta>
</serra> 

L'elemento radice <xs:serra> possiede alcuni riferimenti:

  • xmlns="http://serra.org/schema: rappresenta il namespace che è dichiarato nel targetNamespace dello Schema;
  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance": è la dichiarazione del namespace di istanza di XML Schema;
  • xsi:schemaLocation="http://serra.org/schema serra.xsd": ottenuto un riferimento ad xsi si deve specificare la collocazione dello
    Schema con il namespace di riferimento seguito dal percorso del file dello schema preceduto da uno spazio;

Alla prossima,
MA.

0 commenti:

Posta un commento

Non ti è chiaro qualcosa?
No problem, posta il tuo dubbio ;)

..... e ricordati di firmarlo!