XSD-validator

Een goed gevormd XML-document kan toch fout zijn: een vereist element ontbreekt, een attribuut gebruikt een onjuist datatype, of de elementen staan in de verkeerde volgorde. XSD (XML Schema Definition) beschrijft precies hoe het document eruit moet zien. Deze validator vergelijkt uw XML met het bijbehorende XSD, voert de W3C XML Schema-validator uit en noemt alle overtredingen op, inclusief de betreffende regel, het element en de specifieke beperking die is geschonden.

Hoe XML tegen XSD te valideren

  1. 1

    Plak beide bestanden

    XML aan de ene kant, XSD-schema aan de andere. Meerdere schema's kunnen samen worden geplakt.

  2. 2

    Voer validatie uit

    De parser vergelijkt elementen, attributen en typen met de schema-declaraties.

  3. 3

    Controleer fouten

    Elke overtreding toont het elementpad, de verwachte beperking en de werkelijke waarde.

  4. 4

    Corrigeer en valideer opnieuw

    Wijzig direct en voer de validatie opnieuw uit zonder opnieuw te laden.

Wat XSD controleert

  • Elementnamen en kardinaliteit: verplicht, optioneel; minimale en maximale aantal voorkomsten.
  • Elementorde: volgorde, keuze, allemaal.
  • Aanwezigheid en type van attributen: verplicht versus optioneel, standaardwaarden, vaste waarden.
  • Datatypen: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, aangepast.
  • Beperkingen: minimale en maximale lengte, enumeraties, reguliere expressies en minimale en maximale waarden.
  • Referentiële integriteit: xs:key, xs:keyref en xs:unique voor beperkingen tussen elementen.

Typische fouten

Fout XSD-beperking
Ontbrekend vereist element <email> minOccurs="1"
Te veel <phone>-elementen maxOccurs="2" overschreden
De waarde “abc” is geen geldig geheel getal type="xs:integer"
De waarde “[email protected]” komt niet overeen met het patroon xs:pattern op xs:string
Elementen in verkeerde volgorde xs:sequence
Onbekend element <foo> Niet gedefinieerd in het schema
Dubbele sleutel Overtreding van xs:unique

Kiezen tussen XSD en alternatieven

  • XSD: W3C-standard, gedetailleerd, krachtig en wijdverspreid ondersteund. De eerste keuze voor bedrijfsgebruik van XML.
  • RELAX NG: eenvoudigere syntaxis, even uitdrukkingsrijk. Populair in documentatieformaten (DocBook, TEI).
  • Schematron: regelgebaseerd systeem dat XPath-verificaties uitvoert op het document. Uitstekend geschikt voor bedrijfsregels die verder gaan dan alleen de structuur van het document.
  • DTD: een oudere, veel minder uitdrukkingsrijke definitie. Verder gebruikt voor historische compatibiliteit van HTML.

Veel projecten gebruiken XSD voor de structuur en Schematron voor complexe regels die verschillende domeinen omvatten.

Veelvoorkomende fouten

  • De naamruimten moeten overeenkomen. Als de XSD targetNamespace="http://example.com" declareert, maar het XML die naamruimte niet gebruikt, mislukt de validatie met de melding ‘geen declaratie gevonden’.
  • xs:anyType is geen magische uitweg: het past bij alles, maar biedt u totaal geen validatie.
  • Standaardwaarden zijn alleen van toepassing wanneer het attribuut ontbreekt. Een expliciete lege waarde (attr="") krijgt geen standaardwaarde.
  • De behandeling van lege ruimte verschilt per type: xs:string behoudt deze, xs:token samenvoegt deze, en xs:normalizedString vervangt tab-schakels of nieuwe regels door lege ruimtes.

Debuggingswerkstroom

  1. Valideer eerst zonder schema (controle op correcte vormgeving). corrigeer eventuele analysefouten.
  2. Valideer vervolgens tegen het schema.
  3. Richt uw aandacht op de eerste fout. XSD validators genereren soms een reeks fouten; de eerste fout is meestal de meest acteerbare.
  4. Gebruik XPath om het betreffende element te lokaliseren in grote documenten.

Veelgestelde vragen

Nee. Plak ze apart of verwijst naar het schema via xsi:schemaLocation in het XML. De meeste tools ondersteunen beide methoden.

Ja. Wanneer elementen uit verschillende naamruimten voorkomen, heeft elk een eigen schema nodig. Plak alle schema’s; de validator laadt ze allemaal.

XSD 1.0. De onderliggende libxml-engine implementeert XSD 1.1 niet, dus 1.1-specifieke functies zoals asserties, conditionele typen en open content worden niet afgedwongen.

Nee. Uw XML en schema worden alleen naar de server gestuurd om de validatie voor die ene aanvraag uit te voeren; ze worden daarna niet opgeslagen of gelogd.

Gerelateerde tools

Tool beschikbaar in andere talen