Share |

domenica 7 febbraio 2010

XSD: Validare un documento XML

In questo articolo descriverò che cosa è la validazione XSD ed in quali scenari è consigliabile utilizzare un Schema_XSD per validare documento XML.

La validazione XSD di un documento XML ha niente a che fare con verificarne la correttezza formale, bensì ciò che viene valutato e verificato è l'aderenza del documento a determinate specifiche obbligatorie che ne determinano la struttura e tipi di dati contenuti.

Un documento XML potrebbe essere infatti perfettamente corretto dal punto di vista delle regole sintattiche definite da XML, detto in questo caso well-formed, ma non per questo essere valido rispetto alle regole dello schema dichiarato.

Per capire meglio ciò di cui sopra, pensa ad un documento HTML 4.01 nel quale è presente una tabella disegnata in un paragrafo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <title>Documento HTML Well-formed non valido</title>
  </head>
  <body>
    <p>
      <h2>Tabella di esempio</h2>
      <table>
        <tr><th>Nome</th><th>Cognome</th></tr>
        <tr><td>Mirko</td><td>Agrati</td></tr>
      </table>
    </p>
  </body>
</html>

Come puoi notare il documento è formalmente corretto: vi è la dichiarazione DTD, gli elementi HTML, HEAD e BODY ed ogni loro child ( o elemento figlio) è correttamente aperto e successivamente chiuso. Ma ...

Ma se voi provate a validarlo riceverete un errore!

Questo perchè le regole scritte nella DTD non prevedono che i paragrafi possano contenere le tabelle. L'unica maniera per ottenere la validazione, rispetto alla DTD dichiarata, è ri-posizionare la tabella HTML al di fuori del paragrafo.

Gli XSD_Schema contengono ulteriori regole definite dall'utente per descrivere le strutture dati che i documenti XML devono contenere per poter essere considerati validi, quindi quali elementi ed attributi poter utilizzare.

In XML la creazione di elementi e di attributi è libera tuttavia, grazie a XSD, questa libertà può essere volutamente limitata a:

  • regole per il posizionamento degli elementi(A non può essere contenuto da B) o degli attributi;
  • regole per la presenza di elementi e attributi(A non e' previsto, XX e' permesso);
  • regole per la valorizzazione degli elementi.

Come si definisce uno schema per i documenti XML?

Gli schemi per la validazione possono essere definiti attraverso tre tecniche differenti:

  • DTD o Document Type Definition: uno degli elementi che possono comparire nel prologo di un documento XML;
  • XDR o XML-Data Reduced: una forma semplificata di schema che utilizza XML;
  • XSD o XML Schema Definition Language: è il linguaggio standard attualmente utilizzato per la definizione di schemi di validazione ed è basato su XML;

Quando serve uno Schema XSD?

Ritengo che se si sviluppa un'applicazione che utilizza XML come repository di dati, cioè in uno scenario dove gli elementi ce li siamo inventati per noi stessi, non è necessario creare uno schema XSD ne ricorrere alla validazione, in quanto siamo noi stessi creatori ed utilizzatori del documento allo stesso tempo.

Diventa invece necessario, a mio avviso, validare un documento XML nella situazione in cui dovremo scambiare documenti con altri programmi o persone.

In Conclusione:
il linguaggio XSD è uno strumento potente e versatile per definire lo schema che un documento XML deve avere perchè sia conforme ad un determinato standard.

Consideriamo poi che XSD è diventato uno strumento fondamentale per la modellazione delle classi e della serializzazione degli oggetti in molti ambienti di programmazione quali JEE ed il framework .NET.

Alla prossima,
MA.

0 commenti:

Posta un commento

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

..... e ricordati di firmarlo!