Vad är filformatet XSD?
En .xsd-fil innehåller en formell beskrivning av XML-dokumentelement - datadefinitioner sparade i XML-textformat. Den definierar en uppsättning regler som XML-filer måste följa för att anses vara ett giltigt XML-dokument; en validerande parser avvisar alla dokument som bryter mot dessa regler.
.xsd-filer har inte en unik Internet Media Type-identifierare - de delar samma typ som vanlig XML: application/xml eller text/xml. Filer börjar vanligtvis med en XML-deklaration (<?xml version="1.0"?>) och ett rotelement <xs:schema> bundet till namnrymden http://www.w3.org/2001/XMLSchema. XSD-data kan organiseras i namnrymder (namespaces). Huvudsakliga schemakomponenter är:
- Elementdeklarationer,
- Attributdeklarationer,
- Datatyper - enkla eller komplexa, baserade på restriktioner, urvalslistor eller primitiva typer,
- Återanvändbara grupper av element eller attribut (analogt med makron).
XSD-specifikationen utvecklades 2001 med hjälp av W3C (World Wide Web Consortium). XSD erbjuder fler funktioner än det liknande .dtd-dokumentdefinitionsformatet, inklusive typad data och stöd för namnrymder. Beskrivningsfiler för webbtjänster såsom .wsdl bäddar vanligtvis in XSD-typdefinitioner för sina meddelandestrukturer. XSD-specifikationsdokumentet är uppdelat i tre delar:
- Del 0. Primer - innehåller en allmän beskrivning av standarden och grunderna, som ofta används av mindre tekniska användare som arbetar med
.xsd, - Del 1. Structures,
- Del 2. Datatypes.
Del 1 och 2 är många sidor långa och skrivna på tekniskt språk. En andra version av specifikationen släpptes 2004, och XSD 1.1 godkändes av W3C 2012, vilket lade till assertioner och villkorlig typtilldelning. XSD-filer används för att lagra metadata för XML-dokument, men de kan också användas av utvecklare för att generera kod eller dokumentbeskrivningar i läsbar form.
Säkerhet & trygghet
RISK: LOWEn XSD är klartext och kan inte köra kod, så det är säkert att öppna en för att läsa den. De enda verkliga riskerna är indirekta: <xs:import>/<xs:include> kan hämta externa scheman (XXE-attacker riktar sig mot XML-PARSERN, inte själva schemat), så validera okänd XML med entitetsexpansion och externa hämtningar inaktiverade. Filens inbäddade <xs:documentation> kan avslöja interna fält- eller systemdetaljer, vilket är en fråga om informationsläckage snarare än en risk för skadlig kod.
Formatdetaljer
i ett nötskalProgram som öppnar XSD-filer
xmllint --schema schema.xsd data.xml --noout Tekniska detaljer
djup specifikation| Filformatstyp | XML-dokument i klartext (UTF-8-kodad) |
| MIME-typ | application/xml eller text/xml (delas med alla XML-filer; ingen XSD-specifik MIME-typ finns) |
| Rotelement | <xs:schema> eller <xsd:schema>, bundet till W3C-namnrymden http://www.w3.org/2001/XMLSchema |
| Filsignatur | Ingen (klartext); filer öppnas konventionellt med en XML-deklaration <?xml version="1.0"?> |
| Konvention för namnrymdsprefix | xs: eller xsd: (båda är giltiga; xs: är det vanligaste moderna valet) |
| Inbyggt typsystem | 44+ primitiva och härledda typer: string, integer, decimal, dateTime, boolean, base64Binary, anyURI med flera |
| Typhärledning | Komplexa typer stöder härledning genom restriktion eller utökning; enkla typer genom restriktion, lista eller union |
| Valideringsbegränsningar | Innehållsmodell (sequence, choice, all), kardinalitet via minOccurs/maxOccurs, och fasetter som pattern, length och enumeration |
| Stöd för namnrymder | Attributet targetNamespace deklarerar schemats namnrymd; direktiven xs:import, xs:include och xs:redefine kombinerar scheman |
| Annoteringsmekanism | <xs:annotation> som innehåller <xs:documentation> för mänskligt läsbar text och <xs:appinfo> för maskinläsbar metadata |
| XSD 1.1-tillägg | Assertioner (xs:assert), villkorlig typtilldelning (xs:alternative) och lättade begränsningar för samtidig förekomst |
| Jämfört med DTD | Ersätter DTD för typad, namnrymdsmedveten validering; DTD saknar datatyper och stöd för namnrymder |
| Jämfört med RELAX NG | Bredare stöd i verktyg än .rng; RELAX NG är enklare men saknar XSD-typarv |
| Verktygsintegration | Stöds av Visual Studio, VS Code och Altova XMLSpy för autokomplettering, realtidsvalidering och schemadriven kodgenerering |
| Vanliga användningsområden | Validering av konfigurationsfiler, SOAP/WSDL-webbtjänster, kontrakt för datautbyte, OOXML-dokumentformat |
| Släppt | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| Öppen standard | Ja · royaltyfri |
| Specifikation | www.w3.org |
XSD-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om XSD-filer.
Vanliga frågor
Vad används en XSD-fil till?
Hur öppnar jag en XSD-fil?
Vad är skillnaden mellan XML och XSD?
Hur validerar jag en XML-fil mot en XSD?
xmllint --schema fil.xsd data.xml på kommandoraden, en XML-redigerares «Validate»-kommando eller en online-XSD-validerare. Den rapporterar exakt var XML-filen bryter mot schemats regler.