Validator XSD

Un documento XML ben formato può comunque essere errato: mancanza di un elemento richiesto, utilizzo del tipo di dato errato per un attributo o elementi in ordine sbagliato. L’XSD (XML Schema Definition) descrive esattamente come dovrebbe apparire il documento. Questo validatore abbina il tuo XML al suo XSD, esegue il validatore di schema XML W3C e elenca ogni violazione con riga, elemento e il vincolo specifico che è stato infranto.

Come validare XML rispetto a XSD

  1. 1

    Incolla entrambi i file

    XML da un lato, schema XSD dall'altro. È possibile incollare più schemi insieme.

  2. 2

    Esegui la validazione

    Il parser abbina elementi, attributi e tipi rispetto alle dichiarazioni dello schema.

  3. 3

    Esamina gli errori

    Ogni violazione mostra il percorso dell'elemento, il vincolo atteso e il valore effettivo.

  4. 4

    Correggi e rivalida

    Modifica in loco e riesegui senza ricaricare.

Cosa controlla XSD

  • Nomi ed cardinalità degli elementi: richiesti, opzionali, occorrenze min/max.
  • Ordine degli elementi: sequenza, scelta, tutti.
  • Presenza e tipo degli attributi: richiesti vs opzionali, valori predefiniti, valori fissi.
  • Tipi di dati: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, personalizzati.
  • Restrizioni: lunghezza min/max, enumerazioni, modelli regex, valori min/max.
  • Integrità referenziale: xs:key, xs:keyref, xs:unique per vincoli tra elementi.

Errori tipici

Errore Vincolo XSD
Elemento richiesto <email> mancante minOccurs="1"
Troppi elementi <phone> maxOccurs="2" superato
Il valore “abc” non è un intero valido type="xs:integer"
Il valore “[email protected]” non corrisponde al modello xs:pattern su xs:string
Elementi fuori ordine xs:sequence
Elemento sconosciuto <foo> Non dichiarato nello schema
Chiave duplicata Violazione xs:unique

Scegliere tra XSD e alternative

  • XSD: standard W3C, verboso, potente, ampiamente supportato. Prima scelta per XML aziendale.
  • RELAX NG: sintassi più semplice, altrettanto espressivo. Popolare nei formati di documentazione (DocBook, TEI).
  • Schematron: basato su regole, esegue asserzioni XPath contro il documento. Buono per regole aziendali oltre la struttura.
  • DTD: più vecchio, molto meno espressivo. Ancora in uso per compatibilità storica con HTML.

Molti progetti utilizzano XSD per la struttura e Schematron per regole complesse tra campi.

Problemi comuni

  • I namespace devono corrispondere. Se l’XSD dichiara targetNamespace="http://example.com" ma l’XML non utilizza quel namespace, la validazione fallisce con “nessuna dichiarazione trovata”.
  • xs:anyType non è una fuga magica. Corrisponde a qualsiasi cosa ma non fornisce alcuna validazione.
  • I valori predefiniti si applicano solo quando l’attributo è assente. Un valore esplicito vuoto (attr="") non ottiene il predefinito.
  • La gestione degli spazi bianchi varia in base al tipo. xs:string li preserva, xs:token li riduce, xs:normalizedString sostituisce tabulazioni/nuove righe con spazi.

Flusso di lavoro per il debug

  1. Valida senza schema prima (controllo di ben formata). Correggi eventuali errori di analisi.
  2. Poi valida rispetto allo schema.
  3. Concentrati sul primo errore. I validatori XSD a volte generano errori a cascata; il primo è solitamente il più azionabile.
  4. Usa XPath per localizzare l’elemento problematico in documenti di grandi dimensioni.

Domande frequenti

No. Incollali separatamente o fai riferimento allo schema tramite xsi:schemaLocation nell’XML. La maggior parte degli strumenti supporta entrambi gli approcci.

Sì. Quando appaiono elementi di diversi namespace, ciascuno ha bisogno del proprio schema. Incolla tutti; il validatore li carica tutti.

XSD 1.0. Il motore libxml sottostante non implementa XSD 1.1, quindi le funzionalità esclusive della 1.1 come le asserzioni, i tipi condizionali e il contenuto aperto non vengono applicate.

No. Il tuo XML e lo schema vengono inviati al server solo per eseguire la validazione di quella singola richiesta; non vengono memorizzati né registrati in seguito.

Strumenti correlati

Strumento disponibile in altre lingue