Che cos'è il formato di file XSD?
Un file .xsd contiene una descrizione formale degli elementi di un documento XML - definizioni di dati salvate in formato di testo XML. Definisce un insieme di regole che i file XML devono seguire per essere considerati documenti XML validi; un parser di convalida rifiuta qualsiasi documento che violi tali regole.
I file .xsd non hanno un identificatore Internet Media Type univoco - condividono lo stesso tipo dei normali XML: application/xml o text/xml. I file iniziano tipicamente con una dichiarazione XML (<?xml version="1.0"?>) e un elemento radice <xs:schema> legato al namespace http://www.w3.org/2001/XMLSchema. I dati XSD possono essere organizzati in namespace. I componenti principali dello schema sono:
- Dichiarazioni di elementi,
- Dichiarazioni di attributi,
- Tipi di dati - semplici o complessi, basati su restrizioni, liste di selezione o tipi primitivi,
- Gruppi riutilizzabili di elementi o attributi (analoghi alle macro).
La specifica XSD è stata sviluppata nel 2001 con l'aiuto del W3C (World Wide Web Consortium). XSD offre più funzionalità rispetto al simile formato di definizione dei documenti .dtd, inclusi i dati tipizzati e il supporto ai namespace. I file di descrizione dei servizi web come .wsdl comunemente incorporano definizioni di tipo XSD per le loro strutture di messaggi. Il documento di specifica XSD è diviso in tre parti:
- Parte 0. Primer - contiene una descrizione generale dello standard e le basi, comunemente consultata da utenti meno tecnici che lavorano con
.xsd, - Parte 1. Structures,
- Parte 2. Datatypes.
Le parti 1 e 2 sono lunghe molte pagine e scritte in linguaggio tecnico. Una seconda versione della specifica è stata rilasciata nel 2004, e XSD 1.1 è stato approvato dal W3C nel 2012, aggiungendo asserzioni e assegnazione condizionale dei tipi. I file XSD sono utilizzati per memorizzare metadati per i documenti XML, ma possono anche essere utilizzati dagli sviluppatori per generare codice o descrizioni di documenti in forma leggibile dall'uomo.
Sicurezza e incolumità
RISCHIO: LOWUn XSD è testo semplice e non può eseguire codice, quindi aprirne uno per leggerlo è sicuro. Gli unici rischi reali sono indiretti: <xs:import>/<xs:include> possono richiamare schemi esterni (gli attacchi di tipo XXE-external-entity colpiscono il PARSER XML, non lo schema stesso), quindi si consiglia di convalidare XML non attendibili con l'espansione delle entità e i recuperi esterni disabilitati. La <xs:documentation> incorporata nel file potrebbe rivelare dettagli su campi o sistemi interni, il che rappresenta una considerazione sulla riservatezza delle informazioni piuttosto che un rischio di malware.
Dettagli del formato
in sintesiProgrammi che aprono file XSD
xmllint --schema schema.xsd data.xml --noout Dettagli tecnici
specifiche approfondite| Tipo di formato file | Documento XML in testo semplice (codifica UTF-8) |
| Tipo MIME | application/xml o text/xml (condiviso con tutti i file XML; non esiste un tipo MIME specifico per XSD) |
| Elemento radice | <xs:schema> o <xsd:schema>, legato al namespace W3C http://www.w3.org/2001/XMLSchema |
| Firma del file | Nessuna (testo semplice); i file si aprono convenzionalmente con una dichiarazione XML <?xml version="1.0"?> |
| Convenzione prefisso namespace | xs: o xsd: (entrambi validi; xs: è la scelta moderna più comune) |
| Sistema di tipi integrato | Oltre 44 tipi primitivi e derivati: string, integer, decimal, dateTime, boolean, base64Binary, anyURI e altri |
| Derivazione dei tipi | I tipi complessi supportano la derivazione per restrizione o estensione; i tipi semplici per restrizione, lista o unione |
| Vincoli di convalida | Modello di contenuto (sequence, choice, all), cardinalità tramite minOccurs/maxOccurs e faccette come pattern, length ed enumeration |
| Supporto namespace | L'attributo targetNamespace dichiara il namespace dello schema; le direttive xs:import, xs:include e xs:redefine combinano gli schemi |
| Meccanismo di annotazione | <xs:annotation> contenente <xs:documentation> per testo leggibile dall'uomo e <xs:appinfo> per metadati leggibili dalla macchina |
| Aggiunte XSD 1.1 | Asserzioni (xs:assert), assegnazione condizionale del tipo (xs:alternative) e vincoli di co-occorrenza rilassati |
| Rispetto a DTD | Sostituisce DTD per la convalida tipizzata e sensibile ai namespace; DTD non ha tipi di dati né supporto ai namespace |
| Rispetto a RELAX NG | Più ampiamente supportato negli strumenti rispetto a .rng; RELAX NG è più semplice ma manca dell'ereditarietà dei tipi di XSD |
| Integrazione strumenti | Supportato da Visual Studio, VS Code e Altova XMLSpy per autocompletamento, convalida in tempo reale e generazione di codice basata su schema |
| Contesti d'uso comuni | Convalida di file di configurazione, servizi web SOAP/WSDL, contratti di scambio dati, formati di documenti office OOXML |
| Rilasciato | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| Standard aperto | Sì · royalty-free |
| Specifica | www.w3.org |
Conversioni XSD
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file XSD.
Domande frequenti
A cosa serve un file XSD?
Come si apre un file XSD?
Qual è la differenza tra XML e XSD?
Come si convalida un file XML rispetto a un XSD?
xmllint --schema file.xsd data.xml da riga di comando, il comando «Convalida» di un editor XML o un validatore XSD online. Esso segnala esattamente dove l'XML viola le regole dello schema.