Che cos’è un file XSD?

Per capire cos’è un file XSD dobbiamo necessariamente partire dallo XML Schema, cioè un linguaggio di descrizione del contenuto di un file XML, il solo che finora ha ottenuto la validazione del W3C. Il suo obiettivo principale è individuare quali elementi sono permessi, quali sono i dati associati al contenuto XML e che tipo di relazione gerarchica c’è tra tutti gli elementi presenti in un file XML.

In questo modo viene convalidato un file XML, verificando che i suoi elementi siano in linea con la descrizione in linguaggio XML Schema, che permette anche di estrarre da un file XML una serie di oggetti con una struttura precisa. Un approccio che è stato fortemente voluto da Microsoft. Dopo questa premessa spostiamo l’attenzione sul file con estensione XSD.

Cos’è il file XSD?

Un XSD (XML Schema Definition) rappresenta un esempio di schema XML scritto in linguaggio XML Schema. Sostanzialmente definisce il tipo di documento XML specificando in particolare:

  • quali elementi ed attributi possono comparire;
  • in che tipo di relazione reciproca sono;
  • che tipo di dati possono essere contenuti.

L’utilizzo di un apposito programma di validazione consente di accertare a quale tipologia appartiene un determinato documento XML.

L’XSD si differenzia dagli altri linguaggi di descrizione del contenuto XML per il fatto di essere stato sviluppato con l’idea che la determinazione della validità di un documento possa fornire una serie di informazioni collegate a specifici tipi di dati.

Origini e caratteristiche principali del file XSD

Il file XSD subisce l’influenza delle DTD e di altri schemi XML, come XML-Data, SOX, DDML e XDR. L’XML Schema può essere considerato un mix di tutte queste proposte. Tra questi XDR e SOX hanno continuato a ricevere supporto anche dopo che le specifiche di XML Schema sono state pubblicate. Alcuni prodotti Microsoft hanno continuato a supportare XDR fino al rilascio di MSXML 6.0 risalente al dicembre del 2006. Commerce One ha invece supportato lo schema SOX fino alla bancarotta del 2004.

Per comprendere le caratteristiche di XSD bisogna partire dal concetto di schema, cioè un mix di metadati consistenti in un set di schema components, creati a loro volta dal processamento di una collezione di schema documents che includono le definizioni di questi components.

Gli schema documents sono poi suddivisi in namespace. Tutti gli schema componenet presenti al loro interno appartengono ad un namespace target, una proprietà dello schema document nel suo insieme. Uno schema document può includere tanti altri schema documents per il medesimo namespace e può importare schema documents per un altro namespace.

Nel momento in cui un documento istanza viene validato rispetto ad uno schema, allora lo stesso schema può fungere da parametro per il motore di validazione oppure essere referenziato direttamente dal documento istanza secondo due attributi:

  • xsi: schemaLocation;
  • xsi: noNamespaceSchemaLocation.

In quest’ultimo caso il client che richiede la validazione deve essere certo che questa avvenga secondo lo schema corretto. Gli XML Schema Documents solitamente sono caratterizzati dall’estensione .xsd. Al momento non è stato ancora registrato un MIME type specifico per i documenti XSD, quindi per questi documenti in genere si usano tipi MIME del tipo “application/xml” o “text/xml”.

I tipi di dato

Gli XML Schema consentono la validazione del contenuto di un elemento o di un attributo rispetto ad un determinato dato. Un attributo potrebbe quindi essere legato o vincolato alla memorizzazione esclusiva di un numero decimale o di una data valida.

XSD fornisce un totale di 19 tipi di dati primitivi e, partendo da loro, consente di costruire nuovi tipi di dato secondo tre diversi meccanismi: restrizione, lista ed unione. Le specifiche del linguaggio indicano 25 tipi derivati e gli utenti, all’interno dei loro schemi, possono a loro volta definire ulteriori derivazioni.

Nell’ambito del nostro generatore XML per l’ANAC il file xsd, è il file contenente tutte le regole da rispettare affinchè il dataset venga considerato valido.