Wat is het XSD-bestandsformaat?
Een .xsd-bestand bevat een formele beschrijving van XML-documentelementen - datadefinities opgeslagen in XML-tekstformaat. Het definieert een set regels waaraan XML-bestanden moeten voldoen om als een geldig XML-document te worden beschouwd; een validerende parser weigert elk document dat die regels overtreedt.
.xsd-bestanden hebben geen unieke Internet Media Type-identificatie - ze delen hetzelfde type als gewone XML: application/xml of text/xml. Bestanden beginnen doorgaans met een XML-declaratie (<?xml version="1.0"?>) en een root-element <xs:schema> dat gekoppeld is aan de namespace http://www.w3.org/2001/XMLSchema. XSD-gegevens kunnen worden georganiseerd in namespaces. De belangrijkste schema-componenten zijn:
- Element-declaraties,
- Attribuut-declaraties,
- Datatypen - eenvoudig of complex, gebaseerd op restricties, selectielijsten of primitieve typen,
- Herbruikbare groepen elementen of attributen (analoog aan macro's).
De XSD-specificatie werd in 2001 ontwikkeld met hulp van het W3C (World Wide Web Consortium). XSD biedt meer functies dan het vergelijkbare .dtd documentdefinitieformaat, inclusief getypeerde gegevens en ondersteuning voor namespaces. Web service-beschrijvingsbestanden zoals .wsdl bevatten vaak ingebedde XSD-typedefinities voor hun berichtstructuren. Het XSD-specificatiedocument is verdeeld in drie delen:
- Deel 0. Primer - bevat een algemene beschrijving van de standaard en de basisprincipes, vaak geraadpleegd door minder technische gebruikers die met
.xsdwerken, - Deel 1. Structures,
- Deel 2. Datatypes.
Delen 1 en 2 zijn vele pagina's lang en geschreven in technische taal. Een tweede versie van de specificatie werd uitgebracht in 2004, en XSD 1.1 is in 2012 goedgekeurd door het W3C, waarbij asserties en conditionele typetoewijzing zijn toegevoegd. XSD-bestanden worden gebruikt voor het opslaan van metadata voor XML-documenten, maar ze kunnen ook door ontwikkelaars worden gebruikt voor het genereren van code of documentbeschrijvingen in menselijk leesbare vorm.
Beveiliging & veiligheid
RISICO: LOWEen XSD is platte tekst en kan geen code uitvoeren, dus het openen om te lezen is veilig. De enige echte risico's zijn indirect: <xs:import>/<xs:include> kunnen externe schema's binnenhalen (XXE-stijl aanvallen op externe entiteiten richten zich op de XML-PARSER, niet op het schema zelf), dus valideer onvertrouwde XML met entiteit-expansie en externe fetches uitgeschakeld. De ingebedde <xs:documentation> van het bestand kan interne veld- of systeemdetails onthullen, wat eerder een overweging is voor informatiebeveiliging dan een malware-risico.
Formaatdetails
in een notendopProgramma's die XSD-bestanden openen
xsd.exe genereert classes vanuit een schema. xmllint --schema schema.xsd data.xml --noout Technische details
diepe specificaties| Bestandsformaattype | Plat-tekst XML-document (UTF-8 gecodeerd) |
| MIME-type | application/xml of text/xml (gedeeld met alle XML-bestanden; er bestaat geen XSD-specifiek MIME-type) |
| Root-element | <xs:schema> of <xsd:schema>, gekoppeld aan de W3C-namespace http://www.w3.org/2001/XMLSchema |
| Bestandssignatuur | Geen (platte tekst); bestanden openen conventioneel met een XML-declaratie <?xml version="1.0"?> |
| Conventie voor namespace-prefix | xs: of xsd: (beide zijn geldig; xs: is de meest gebruikelijke moderne keuze) |
| Ingebouwd typesysteem | 44+ primitieve en afgeleide typen: string, integer, decimal, dateTime, boolean, base64Binary, anyURI, en meer |
| Type-afleiding | Complexe typen ondersteunen afleiding door restrictie of extensie; eenvoudige typen door restrictie, lijst of unie |
| Validatiebeperkingen | Inhoudsmodel (sequence, choice, all), cardinaliteit via minOccurs/maxOccurs, en facetten zoals pattern, length en enumeration |
| Namespace-ondersteuning | targetNamespace-attribuut declareert de schema-namespace; xs:import, xs:include en xs:redefine-richtlijnen combineren schema's |
| Annotatiemechanisme | <xs:annotation> bevattende <xs:documentation> voor menselijk leesbare tekst en <xs:appinfo> voor machineleesbare metadata |
| XSD 1.1 toevoegingen | Asserties (xs:assert), conditionele typetoewijzing (xs:alternative) en versoepelde co-occurrence-beperkingen |
| Vergeleken met DTD | Vervangt DTD voor getypeerde, namespace-bewuste validatie; DTD heeft geen datatypen en geen ondersteuning voor namespaces |
| Vergeleken met RELAX NG | Breder ondersteund in tools dan .rng; RELAX NG is eenvoudiger maar mist XSD-type-overerving |
| Tooling-integratie | Ondersteund door Visual Studio, VS Code en Altova XMLSpy voor automatische aanvulling, real-time validatie en schema-gestuurde codegeneratie |
| Veelvoorkomende gebruikscontexten | Validatie van configuratiebestanden, SOAP/WSDL web services, contracten voor gegevensuitwisseling, OOXML-kantoordocumentformaten |
| Uitgebracht | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.w3.org |
XSD conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over XSD-bestanden.
Veelgestelde vragen
Waar wordt een XSD-bestand voor gebruikt?
Hoe open ik een XSD-bestand?
Wat is het verschil tussen XML en XSD?
Hoe valideer ik een XML-bestand tegen een XSD?
xmllint --schema file.xsd data.xml op de opdrachtregel, het „Validate”-commando van een XML-editor, of een online XSD-validator. Het rapporteert precies waar de XML de regels van het schema overtreedt.Wat is het verschil tussen XSD en DTD?
Kan ik code of een voorbeeld-XML genereren vanuit een XSD?
xsd.exe), Java JAXB (xjc) en XMLSpy genereren classes vanuit een schema, en de meeste XML-editors kunnen een voorbeeld-XML-instantie produceren die voldoet aan de XSD.