XML, XSD, GML – jak się w tym wszystkim odnaleźć ? – część III, walidacja XML plikiem XSD.

W poprzednim odcinku opisałem sposób tworzenia XML na podstawie schematu wyświetlonego w programie XSD Diagram. Efektem miał być plik XML utworzony na podstawie schematu XSD. Oto plik ZSIN.XML, który został przeze mnie utworzony ręcznie. (Uwaga zawiera błędy, które zostały pozostawione celowo). Należy użyć w przeglądarce opcji zapisz jako i zapisać go u siebie na dysku.

Co będzie nam jeszcze potrzebne:

Schemat XSD z jakim pracowaliśmy już wcześniej czyli załącznik  do rozporządzenia Rady Ministrów z dnia 17 stycznia 2013 r. w sprawie zintegrowanego systemu informacji o nieruchomościach.

Program notepad++, który jest rozszerzonym notatnikiem na licencji opensource (GPLv2).

Po pobraniu programu i jego instalacji należy go uruchomić, wejść w zakładkę pluginy > plugin manager > show plugin manager i wybrać z listy program XML Tools oraz go zainstalować. Jest to dodatek pozwalający pracować z plikami XML.

Otwieramy plik ZSIN.XML w programie Notepad++. Używamy polecenia składnia > XML aby przystosować program do wyświetlania dedykowanego dla plików XML. Następuje podświetlenie znaczników kolorem co ułatwi analizę pliku.

Pierwszą operacją jaką wykonamy jest sprawdzenie poprawności wewnętrznej struktury utworzonego XML – wykonujemy to za pomocą polecenia w programie Notepad++ Pluginy > XML Tool > Check XML syntax now
W przypadku błędów w strukturze pliku zostaną one wykazane.

Po uruchomieniu polecenia powyżej pokaże się następujący błąd:

błąd walidacji xml

Alternatywnie możemy plik xml otworzyć za pomocą przeglądarki internetowej – pokaże nam ona podobny efekt:widok błędu walidacji xml w przeglądarce

Błąd występuje, ponieważ znacznik początkowy <miejscowosc>oraz końcowy </MIEJSCOWOSC> nie są identyczne. Po poprawie znaczników ponownie sprawdzamy strukturę pliku. Tym razem otrzymamy następującą informację.

widok potwierdzenia przeprowadzenia walidacji xml bez błędów

Również w przeglądarce internetowej plik XML wyświetli się bez błędów.

Spróbujmy teraz zwalidować plik za pomocą schematu XSD, czyli sprawdzić czy zapisane w schemacie zasady są w pliku zachowane.Wykonujemy to za pomocą polecenia w Notepad++ Pluginy > XML Tool > Validate Now

Pojawi się okno wyboru z zapytaniem o plik XSD który ma być użyty do walidacji – wybieramy ZSIN_1013.XSD i zatwierdzamy.

okno wyboru scematu danych xsd w celu walidacji xml

Efektem będzie informacja czy plik XML jest zgodny z zasadami zapisanymi w pliku XSD. W wyniku tej kontroli otrzymujemy informacje o błędzie.

okno błędu walidacji schematem danych XSD

Po analizie ze schematem, możemy stwierdzić, że znaczniki imienia powinny mieć inną wielkość liter niż mają. Schemat reaguje więc bardzo restrykcyjnie na wszelkie odstępstwa od reguł. Poprawiamy IMIE na Imie i ponownie sprawdzamy. Tym razem otrzymujemy informacje o zgodności ze schematem.

Warto zauważyć, że następuje tutaj podwójna kontrola: struktury wewnętrznej pliku XML i zgodności ze schematem XSD. Oczywiście przykład, którym tu się posługujemy jest bardzo prosty.W zasadzie przy zgłaszaniu informacji do sądu należałoby sprawdzać więcej rzeczy, np. czy nazwa sądu jest prawidłowa, a nie tylko tekstowa, czy powiat i gmina istnieją oraz czy OFU występuje na liście dopuszczalnych wartości.

Uwaga: Notepad++ nie służy do walidacji plików XML schematami XSD z zewnętrznymi przestrzeniami nazw (czyli takich jak stosowanych w min. w polskiej geodezji). O darmowych narzędziach które to robią mówię na szkoleniach. Notepad++ został tu pokazany jako proste narzędzie które może pomóc zrozumieć ideę walidacji.

W następnym odcinku napiszę o tym więcej, oraz poruszę temat GML czyli szczególnej postaci XML na przykładzie jakim są schematy XSD do BDOT500 GUGiK.

Ćwiczenie: Spróbujcie zmienić wartość dla któregoś ze znaczników powierzchnia na tekstową i sprawdzić jego poprawność schematem XSD.

Jeśli chcecie wiedzieć więcej o przetwarzaniu danych xml, walidacji danych z zewnętrznymi przestrzeniami nazw w narzędziach opensource zapraszam do zapoznania się z ofertą szkoleń.

Zobacz także:

Część I – pliki XML

Część II – schematy XSD

Część III – walidacja XML

Część IV – BDOT500 i GML