Hvad er XSD-filformatet?
En .xsd-fil indeholder en formel beskrivelse af XML-dokumentelementer - datadefinitioner gemt i XML-tekstformat. Den definerer et sæt regler, som XML-filer skal følge for at blive betragtet som et gyldigt XML-dokument; en validerende parser afviser ethvert dokument, der bryder disse regler.
.xsd-filer har ikke en unik Internet Media Type-identifikator - de deler samme type som almindelig XML: application/xml eller text/xml. Filer begynder typisk med en XML-deklaration (<?xml version="1.0"?>) og et rod-element <xs:schema>, der er bundet til navnerummet http://www.w3.org/2001/XMLSchema. XSD-data kan organiseres i navnerum. De vigtigste skemakomponenter er:
- Elementdeklarationer,
- Attributdeklarationer,
- Datatyper - simple eller komplekse, baseret på restriktioner, udvalgslister eller primitive typer,
- Genanvendelige grupper af elementer eller attributter (svarende til makroer).
XSD-specifikationen blev udviklet i 2001 med hjælp fra W3C (World Wide Web Consortium). XSD tilbyder flere funktioner end det lignende .dtd dokumentdefinitionsformat, herunder typede data og understøttelse af navnerum. Web-service beskrivelsesfiler som .wsdl indlejrer ofte XSD-typedefinitioner til deres meddelelsesstrukturer. XSD-specifikationsdokumentet er opdelt i tre dele:
- Del 0. Primer - indeholder en generel beskrivelse af standarden og det grundlæggende, ofte brugt af mindre tekniske brugere, der arbejder med
.xsd, - Del 1. Strukturer,
- Del 2. Datatyper.
Del 1 og 2 er mange sider lange og skrevet i et teknisk sprog. En anden version af specifikationen blev udgivet i 2004, og XSD 1.1 blev godkendt af W3C i 2012, hvilket tilføjede assertioner og betinget type-tildeling. XSD-filer bruges til at gemme metadata for XML-dokumenter, men de kan også bruges af udviklere til at generere kode eller dokumentbeskrivelser i menneskelæsbar form.
Sikkerhed og tryghed
RISIKO: LOWEn XSD er almindelig tekst og kan ikke udføre kode, så det er sikkert at åbne en for at læse den. De eneste reelle risici er indirekte: <xs:import>/<xs:include> kan trække eksterne skemaer ind (XXE-lignende angreb mod eksterne entiteter er rettet mod XML-PARSEREN, ikke selve skemaet), så valider upålidelig XML med entitetsudvidelse og eksterne hentninger deaktiveret. Filens indlejrede <xs:documentation> kan afsløre interne felt- eller systemdetaljer, hvilket er en overvejelse omkring informationsafsløring snarere end en malware-risiko.
Formatdetaljer
kort fortaltProgrammer der åbner XSD-filer
Tekniske detaljer
dyb specifikation| Filformattype | Almindelig tekst XML-dokument (UTF-8 kodet) |
| MIME-type | application/xml eller text/xml (deles med alle XML-filer; der findes ingen XSD-specifik MIME-type) |
| Rod-element | <xs:schema> eller <xsd:schema>, bundet til W3C-navnerummet http://www.w3.org/2001/XMLSchema |
| Filsignatur | Ingen (almindelig tekst); filer åbner konventionelt med en XML-deklaration <?xml version="1.0"?> |
| Konvention for navnerums-præfiks | xs: eller xsd: (begge er gyldige; xs: er det mest almindelige moderne valg) |
| Indbygget typesystem | 44+ primitive og afledte typer: string, integer, decimal, dateTime, boolean, base64Binary, anyURI med flere |
| Type-afledning | Komplekse typer understøtter afledning ved restriktion eller udvidelse; simple typer ved restriktion, liste eller union |
| Valideringsbegrænsninger | Indholdsmodel (sequence, choice, all), kardinalitet via minOccurs/maxOccurs, og facetter såsom pattern, length og enumeration |
| Understøttelse af navnerum | targetNamespace-attributten deklarerer skemaets navnerum; xs:import, xs:include og xs:redefine-direktiver kombinerer skemaer |
| Annotationsmekanisme | <xs:annotation> indeholdende <xs:documentation> til menneskelæsbar tekst og <xs:appinfo> til maskinlæsbare metadata |
| XSD 1.1 tilføjelser | Assertioner (xs:assert), betinget type-tildeling (xs:alternative) og lempede begrænsninger for samtidig forekomst |
| Sammenlignet med DTD | Afløser DTD til typet, navnerums-bevidst validering; DTD har ingen datatyper og ingen understøttelse af navnerum |
| Sammenlignet med RELAX NG | Bredere understøttet i værktøjer end .rng; RELAX NG er simplere, men mangler XSD-typearv |
| Værktøjsintegration | Understøttet af Visual Studio, VS Code og Altova XMLSpy til auto-fuldførelse, realtidsvalidering og skemadrevet kodegenerering |
| Almindelige brugskontekster | Validering af konfigurationsfiler, SOAP/WSDL web-services, kontrakter for dataudveksling, OOXML kontordokumentformater |
| Udgivet | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| Åben standard | Ja · royaltyfri |
| Specifikation | www.w3.org |
XSD-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om XSD-filer.
Ofte stillede spørgsmål
Hvad bruges en XSD-fil til?
Hvordan åbner jeg en XSD-fil?
Hvad er forskellen på XML og XSD?
Hvordan validerer jeg en XML-fil mod en XSD?
xmllint --schema fil.xsd data.xml på kommandolinjen, en XML-editors «Validate»-kommando eller en online XSD-validator. Den rapporterer præcis, hvor XML-filen bryder skemaets regler.