Co to jest format pliku XSD?
Plik .xsd zawiera formalny opis elementów dokumentu XML - definicje danych zapisane w formacie tekstowym XML. Definiuje on zestaw reguł, których pliki XML muszą przestrzegać, aby zostać uznane za prawidłowy dokument XML; parser walidujący odrzuca każdy dokument naruszający te reguły.
Pliki .xsd nie posiadają unikalnego identyfikatora Internet Media Type - współdzielą ten sam typ co zwykły XML: application/xml lub text/xml. Pliki zazwyczaj zaczynają się od deklaracji XML (<?xml version="1.0"?>) i elementu głównego <xs:schema> powiązanego z przestrzenią nazw http://www.w3.org/2001/XMLSchema. Dane XSD mogą być organizowane w przestrzenie nazw. Głównymi komponentami schematu są:
- Deklaracje elementów,
- Deklaracje atrybutów,
- Typy danych - proste lub złożone, oparte na ograniczeniach, listach wyboru lub typach pierwotnych,
- Grupy elementów lub atrybutów wielokrotnego użytku (analogiczne do makr).
Specyfikacja XSD została opracowana w 2001 roku przy pomocy W3C (World Wide Web Consortium). XSD oferuje więcej funkcji niż podobny format definicji dokumentów .dtd, w tym typowanie danych i obsługę przestrzeni nazw. Pliki opisu usług sieciowych, takie jak .wsdl, powszechnie osadzają definicje typów XSD dla swoich struktur komunikatów. Dokument specyfikacji XSD jest podzielony na trzy części:
- Część 0. Primer - zawiera ogólny opis standardu i podstawy, często konsultowany przez mniej technicznych użytkowników pracujących z
.xsd, - Część 1. Structures,
- Część 2. Datatypes.
Części 1 i 2 liczą wiele stron i są napisane językiem technicznym. Druga wersja specyfikacji została wydana w 2004 roku, a XSD 1.1 został zatwierdzony przez W3C w 2012 roku, dodając asercje i warunkowe przypisywanie typów. Pliki XSD są używane do przechowywania metadanych dla dokumentów XML, ale mogą być również wykorzystywane przez programistów do generowania kodu lub opisów dokumentów w formie czytelnej dla człowieka.
Bezpieczeństwo
RYZYKO: LOWPlik XSD jest zwykłym tekstem i nie może wykonywać kodu, więc otwarcie go do odczytu jest bezpieczne. Jedyne realne zagrożenia są pośrednie: <xs:import>/<xs:include> mogą pobierać zewnętrzne schematy (ataki typu XXE na encje zewnętrzne celują w PARSER XML, a nie w sam schemat), dlatego należy walidować niezaufane pliki XML z wyłączonym rozwijaniem encji i pobieraniem zasobów zewnętrznych. Osadzona w pliku sekcja <xs:documentation> może ujawniać szczegóły wewnętrznych pól lub systemów, co jest kwestią ujawnienia informacji, a nie ryzykiem złośliwego oprogramowania.
Szczegóły formatu
w pigułceProgramy otwierające pliki XSD
Szczegóły techniczne
specyfikacja| Typ formatu pliku | Dokument XML w formacie tekstowym (kodowanie UTF-8) |
| Typ MIME | application/xml lub text/xml (współdzielony ze wszystkimi plikami XML; nie istnieje typ MIME specyficzny dla XSD) |
| Element główny | <xs:schema> lub <xsd:schema>, powiązany z przestrzenią nazw W3C http://www.w3.org/2001/XMLSchema |
| Sygnatura pliku | Brak (zwykły tekst); pliki konwencjonalnie zaczynają się od deklaracji XML <?xml version="1.0"?> |
| Konwencja prefiksu przestrzeni nazw | xs: lub xsd: (oba są poprawne; xs: jest częstszym nowoczesnym wyborem) |
| Wbudowany system typów | Ponad 44 typy pierwotne i pochodne: string, integer, decimal, dateTime, boolean, base64Binary, anyURI i inne |
| Wyprowadzanie typów | Typy złożone obsługują wyprowadzanie przez ograniczenie lub rozszerzenie; typy proste przez ograniczenie, listę lub unię |
| Ograniczenia walidacji | Model zawartości (sequence, choice, all), liczność poprzez minOccurs/maxOccurs oraz aspekty takie jak pattern, length i enumeration |
| Obsługa przestrzeni nazw | Atrybut targetNamespace deklaruje przestrzeń nazw schematu; dyrektywy xs:import, xs:include i xs:redefine łączą schematy |
| Mechanizm adnotacji | <xs:annotation> zawierający <xs:documentation> dla tekstu czytelnego dla człowieka oraz <xs:appinfo> dla metadanych czytelnych dla maszyn |
| Nowości w XSD 1.1 | Asercje (xs:assert), warunkowe przypisywanie typów (xs:alternative) oraz złagodzone ograniczenia współwystępowania |
| W porównaniu do DTD | Zastępuje DTD w zakresie typowanej walidacji obsługującej przestrzenie nazw; DTD nie posiada typów danych ani obsługi przestrzeni nazw |
| W porównaniu do RELAX NG | Szerzej wspierany w narzędziach niż .rng; RELAX NG jest prostszy, ale brakuje mu dziedziczenia typów XSD |
| Integracja z narzędziami | Obsługiwany przez Visual Studio, VS Code i Altova XMLSpy w zakresie autouzupełniania, walidacji w czasie rzeczywistym i generowania kodu na podstawie schematu |
| Typowe konteksty użycia | Walidacja plików konfiguracyjnych, usługi sieciowe SOAP/WSDL, kontrakty wymiany danych, formaty dokumentów biurowych OOXML |
| Wydano | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.w3.org |
Konwersje XSD
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki XSD.
Najczęściej zadawane pytania
Do czego służy plik XSD?
Jak otworzyć plik XSD?
Jaka jest różnica między XML a XSD?
Jak przeprowadzić walidację pliku XML względem XSD?
xmllint --schema plik.xsd dane.xml w wierszu poleceń, polecenia „Validate” w edytorze XML lub walidatora XSD online. Wskaże on dokładnie miejsce, w którym XML narusza reguły schematu.