Walidator XSD

Dokument XML poprawny składniowo może wciąż być błędny: brakować w nim wymaganego elementu, używać złego typu danych dla atrybutu albo mieć elementy w złej kolejności. XSD (XML Schema Definition) opisuje dokładnie, jak dokument powinien wyglądać. Ten walidator łączy Twój XML z jego XSD, uruchamia walidator W3C XML Schema i wypisuje każde naruszenie z wierszem, elementem i konkretnym ograniczeniem, które zostało złamane.

Jak zwalidować XML wobec XSD

  1. 1

    Wklej oba pliki

    XML po jednej stronie, schemat XSD po drugiej. Wiele schematów można wkleić razem.

  2. 2

    Uruchom walidację

    Parser dopasowuje elementy, atrybuty i typy do deklaracji schematu.

  3. 3

    Przejrzyj błędy

    Każde naruszenie pokazuje ścieżkę elementu, oczekiwane ograniczenie i faktyczną wartość.

  4. 4

    Popraw i zwaliduj ponownie

    Edytuj w miejscu i uruchom ponownie bez przeładowania.

Co sprawdza XSD

  • Nazwy elementów i krotność: wymagane, opcjonalne, min./maks. wystąpień.
  • Kolejność elementów: sequence, choice, all.
  • Obecność i typ atrybutu: wymagany kontra opcjonalny, wartości domyślne, wartości stałe.
  • Typy danych: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, niestandardowe.
  • Ograniczenia: min./maks. długość, wyliczenia, wzorce regex, min./maks. wartości.
  • Integralność referencyjna: xs:key, xs:keyref, xs:unique dla ograniczeń międzyelementowych.

Typowe błędy

Błąd Ograniczenie XSD
Brak wymaganego elementu <email> minOccurs="1"
Zbyt wiele elementów <phone> Przekroczono maxOccurs="2"
Wartość „abc” nie jest prawidłową liczbą całkowitą type="xs:integer"
Wartość „[email protected]” nie pasuje do wzorca xs:pattern na xs:string
Elementy w złej kolejności xs:sequence
Nieznany element <foo> Niezadeklarowany w schemacie
Powielony klucz Naruszenie xs:unique

Wybór między XSD a alternatywami

  • XSD: standard W3C, rozwlekły, potężny, szeroko obsługiwany. Pierwszy wybór dla firmowego XML.
  • RELAX NG: prostsza składnia, równie wyrazista. Popularna w formatach dokumentacji (DocBook, TEI).
  • Schematron: oparty na regułach, uruchamia asercje XPath wobec dokumentu. Dobry do reguł biznesowych wykraczających poza strukturę.
  • DTD: starszy, znacznie mniej wyrazisty. Wciąż używany dla historycznej zgodności z HTML.

Wiele projektów używa XSD do struktury i Schematron do złożonych reguł międzypolowych.

Częste pułapki

  • Przestrzenie nazw muszą się zgadzać. Jeśli XSD deklaruje targetNamespace="http://example.com", ale XML nie używa tej przestrzeni nazw, walidacja kończy się błędem „nie znaleziono deklaracji”.
  • xs:anyType nie jest magiczną furtką. Pasuje do wszystkiego, ale nie daje żadnej walidacji.
  • Wartości domyślne obowiązują tylko, gdy atrybut jest nieobecny. Jawnie pusta wartość (attr="") nie otrzymuje wartości domyślnej.
  • Obsługa białych znaków różni się w zależności od typu. xs:string je zachowuje, xs:token je zwija, xs:normalizedString zastępuje tabulatory/znaki nowej linii spacjami.

Schemat debugowania

  1. Najpierw zwaliduj bez schematu (sprawdzenie poprawności składniowej). Popraw wszelkie błędy parsowania.
  2. Potem zwaliduj wobec schematu.
  3. Skup się na pierwszym błędzie. Walidatory XSD czasem kaskadują błędy; pierwszy zwykle daje najwięcej do działania.
  4. Użyj XPath, by zlokalizować problematyczny element w dużych dokumentach.

Najczęściej zadawane pytania

Nie. Wklej je osobno albo odwołaj się do schematu przez xsi:schemaLocation w XML. Większość narzędzi obsługuje oba podejścia.

Tak. Gdy pojawiają się elementy z różnych przestrzeni nazw, każda potrzebuje własnego schematu. Wklej wszystkie; walidator ładuje je wszystkie.

XSD 1.0. Silnik libxml, na którym opiera się walidator, nie implementuje XSD 1.1, więc funkcje charakterystyczne dla wersji 1.1, takie jak asercje, typy warunkowe i otwarta treść, nie są egzekwowane.

Nie. Twój XML i schemat są wysyłane na serwer wyłącznie po to, aby wykonać walidację dla tego jednego żądania; nie są potem przechowywane ani rejestrowane.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach