Generowanie schematu XSD na podstawie wielu instancji XML
Ostatnio rozmawiałem z jednym z naszych inżynierów wsparcia na temat najczęściej zadawanych przez klientów pytań. Jednym z nich, który pojawia się bardzo często, jest generowanie schematów, a konkretnie: "Jak mogę wygenerować plik XSD na podstawie pliku XML?". Odpowiedź brzmi: należy użyć wybranego edytora XML. Program XMLSpy potrafi wygenerować poprawny plik XSD na podstawie pliku DTD, struktury bazy danych relacyjnej, schematu JSON oraz, oczywiście, instancji XML.
Jednak wielu klientów jest zaskoczonych, dowiadując się, że edytor XML będzie również tworzył schemat XML na podstawie grupa plików XML powiązanych ze sobą – i jest to częste wymaganie. Przyjrzyjmy się, jak to działa.

Wygeneruj plik XSD
Załóżmy, że odziedziczyłem projekt rozwoju stron internetowych, otrzymując jako punkt wyjścia zestaw plików XML, ale bez definicji schematu XML (XML Schema). Aby wygenerować plik XSD dla tych plików, muszę najpierw dodać je do projektu w programie XMLSpy. Będzie to przydatne później, ponieważ projekt grupuje wszystkie powiązane pliki w jednej, łatwej do zarządzania strukturze folderów, gdzie mogę wyszukiwać konkretne pliki, przypisywać transformacje XSLT, wykonywać operacje wsadowe, takie jak walidacja całego projektu i wyszukiwanie w plikach, i tak dalej.
Warto poświęcić chwilę, aby opisać sam projekt XMLSpy. Foldery mogą odpowiadać rzeczywistym katalogom w systemie plików, lub mogę zdefiniować rozszerzenia plików dla każdego folderu, aby powszechnie używane pliki były przechowywane razem w jednym, wygodnym miejscu. Foldery projektu są folderami wirtualnymi i nie muszą odpowiadać żadnej hierarchicznej strukturze plików na serwerze.
Można również przypisać różne parametry transformacji XSL do każdego folderu, a ten sam plik fizyczny może znajdować się w więcej niż jednym folderze projektu. Jest to szczególnie przydatne, gdy chcę przechowywać dane w jednym pliku XML i używać różnych arkuszy stylów XSL do generowania różnych wyników. Oczywiście, system zarządzania projektami XMLSpy integruje się z większością systemów kontroli wersji.
OK, wracamy do generowania pliku XSD. Pierwszym krokiem jest wybranie opcji "Nowy projekt" z menu "Projekt". XMLSpy tworzy szkielet projektu z folderami-placeholderami dla różnych typów plików. Dodawanie własnych folderów jest proste i można to zrobić w razie potrzeby. Aby dodać otrzymane pliki do tego nowego projektu, klikam prawym przyciskiem myszy na folder "Pliki XML" i wybieram opcję "Dodaj pliki..."
![]()
...i przejdź do wyboru plików XML, które mają być użyte na stronie internetowej. To dobry moment, aby zapisać projekt pod opisową nazwą, co również spowoduje zapisanie nowo dodanych powiązań plików do projektu.
![]()
Teraz wystarczy, że kliknę prawym przyciskiem myszy na folder "Pliki XML" i wybiorę opcję "Generuj DTD / Schemat...", a następnie sprawdzę lub zaktualizuję dostępne opcje konfiguracyjne.
![]()
To spowoduje wygenerowanie pliku XSD na podstawie wszystkich plików XML znajdujących się w folderze. Po kliknięciu OK, pojawi się prośba o zapisanie automatycznie wygenerowanego schematu XML, który zostanie otwarty w graficznym widoku schematu XML. Poniżej znajdują się elementy globalne wygenerowane na podstawie plików instancji XML:
![]()
Kliknięcie ikony drzewa obok dowolnego elementu wyświetla szczegółowy model danych.
![]()
Interfejs graficzny edytora XSD ułatwia modyfikowanie i edytowanie tego schematu w razie potrzeby.
Oto wszystko – w kilku prostych krokach uzyskałem poprawny schemat, który został wygenerowany na podstawie grupy plików instancji.
Które funkcje XMLSpy ułatwiają Państwa codzienną pracę? A może jest jakaś funkcja, która, Państwa zdaniem, mogłaby zaoszczędzić czas i powinna zostać dodana? Chcielibyśmy poznać Państwa opinie. Prosimy o pozostawienie komentarza poniżej!