Proszę skopiować eclipse najlepiej do c:\temp uruchamiamy rejestrujemy jako academic
Techniki walidacji dokumentów XML
Tematyka zajęć Mała powtórka Walidacja schematami XML (XSD) Część praktyczna – sprawozdanie 2 punkty Początek realizacji projektu
Prawidłowe dokumenty, to dokumenty w 100% zgodne z zadeklarowanym DOCTYPE
Deklarowanie DTD dla dokumentów XML deklaracja DTD wewnątrz dokumentu XML: … …
Typy elementów w DTD CHILDREN DATA MIXED EMPTY … … Warszawa 12 Warszawa 12
Dokument walidacyjny DTD <!ELEMENT karta_do_glosowania (okreg_wyborczy, data_wyborow, kandydaci, informacja?)> <!ELEMENT karta_do_glosowania (okreg_wyborczy, data_wyborow, kandydaci, informacja?)>
Walidacja schematami XML (XSD)
Deklarowanie XSD dla dokumentów XML deklaracja dokumentu XSD: <karta_do_glosowania xmlns:xsi= xsi:noNamespaceSchemaLocation="the best senat.xsd"> … <karta_do_glosowania xmlns:xsi= xsi:noNamespaceSchemaLocation="the best senat.xsd"> …
Czym jest XSD XSD podobnie jak DTD służy do definiowania gramatyk XML zawiera zbiór reguł umożliwiających tworzenie prawidłowych dokumentów XML XSD podobnie jak i DTD definiuje: jakie elementy jakie atrybuty relacje elementów (elementy potomne i rodzicielskie) kolejność elementów !!! krotność elementów listy wartości dozwolonych wartości domyślne dla atrybutów
Czym się wyróżniają schematy XSD i DTD Schematy XSD precyzyjne definiowanie typów danych (data, int, boolean) precyzyjne definiowanie krotności elementów (np od 3 do 7) precyzyjne kontrolowanie postaci danych (kod poczt, ) schematy XSD są zgodne ze standardem XML w XSD trzeba korzystać z przestrzeni nazw XMLSchema schematy są dużo bardziej skomplikowane niż DTD ale za to mają większe możliwości XSD prawdopodobnie zupełnie wyprą sekwencyjne DTD istnieje wiele narzędzi automatycznie (czyli byle jak) generujących schematy XSD w oparciu o XML lub o DTD
XSD jest zgodny ze standardem XML element to element główny (root) każdego dokumentu XSD deklaracja elementu głównego w dokumencie XSD: wymaga deklaracji przestrzeni nazw (biblioteki) XMLSchema informuje, że dany dokument XSD zawiera jedynie dopuszczone przez specyfikację XSD typy danych, elementy, atrybuty, … ( schema, element, complexType, sequence, choice, all, string, boolean, etc. ) informuje także, że wszystkie elementy, atrybuty i typy danych które pochodzą z w/w przestrzeni nazw będą posiadać ustalony przez nas, absolutnie dowolny prefiks, na przykład js
wybory do senatu wersja XSD
Typy elementów w DTD CHILDREN DATA MIXED EMPTY … … Warszawa 12 Warszawa 12
Typy elementów XSD (porównanie z DTD) CHILDREN (dzieci lub atrybuty = complex ) DATA (tylko dane = simple ) DATA (dane + coś = complex mix ) MIXED (dane + coś = complex mix ) EMPTY (bez danych = complex ) … … Warszawa 12 Warszawa 12 Jan Dzik
element attribute określa atrybut dla definiowanego elementu atrybuty opisujące definiowany : name - określa nazwę atrybutu type - typ zawartości atrybutu (xs:string, xs:date, xs:ID, xs:IDREF) default - wartość domyślna fixed - wartość stała (w praktyce nie jest używany) use - określa czy ten atrybut jest obowiązkowy (required) opcjonalny (optional) zabroniony (prohibited) (w praktyce nie jest używany)
Elementy proste (SIMPLE) elementy proste mogą zawierać jedynie dane (żadnych atrybutów, żadnych elementów potomnych) dane powinny być zgodne z predefiniowanymi typami danych ( string, date, int, boolean, anyURI, … ) elementy proste nie mogą posiadać żadnych elementów potomnych elementy proste nie mogą posiadać żadnych atrybutów na elementy proste można nakładać restrykcje, wprowadzając na przykład wyrażenia regularne (kod pocztowy, adres )
Elementy złożone (COMPLEXTYPE) bez danych elementy złożone mogą zawierać sekwencję elementów potomnych i atrybuty Jarosław Bąk Jarosław Bąk … …
Elementy złożone (COMPLEXTYPE) typu EMPTY elementy złożone typu EMPTY posiadają tylko atrybuty (albo wymagane, albo z wartością defaultową)
Elementy złożone (COMPLEXTYPE) typu MIXED elementy złożone typu MIXED posiadają dane i coś jeszcze (atrybuty, elementy potomne lub atrybuty i elementy jednocześnie) Warszawa 12 Warszawa 12
element w prowadza definicję złożonego typu danych typy złożone posiadają przynajmniej jeden z obiektów: tylko dane ( = simple o określonym typie danych) tylko elementy potomne (complex + sekwencja elementów) tylko atrybuty (complex + lista atrybutów) elementy potomne + atrybuty (complex + sekwencja el. + lista at.) elementy potomne + dane (complex mixed + sekwencja el.) atrybuty + dane (complex mixed + lista atrybutów) elementy potomne + dane + atrybuty (complex mixed + sekwencja elementów + lista atrybutów) zamiast sekwencji elementów możemy wykorzystać:
sekwencja kolejnych elementów – domyślnie sekwencja musi wystąpić dokładnie jeden raz (krotność konkretnego elementu dobiera się osobno) i dokładnie w ustalonej kolejności dla okręgu, w którym wybiera się 2 senatorów Głosować można na jednego lub dwóch … dla okręgu, w którym wybiera się 3 senatorów Głosować można na jednego, dwóch … dla okręgu, w którym wybiera się 2 senatorów Głosować można na jednego lub dwóch … dla okręgu, w którym wybiera się 3 senatorów Głosować można na jednego, dwóch …
elementy w typie all mogą występować w absolutnie dowolnej kolejności – każdy domyślnie musi wystąpić jeden raz (krotność konkretnego elementu można obniżyć do zera, nie da się tej krotności zwiększyć)
choice umożliwia wybór elementów z dostępnej listy – domyślnie musi nastąpić wybór dokładnie jednego z wymienionych elementów (krotność konkretnego elementu ustala się niezależnie)
Sprawozdanie 3 (2 punkty) Utwórz dokument XSD dotyczący realizowanego projektu minimum 10 elementów, minimum 5 atrybutów obowiązuje kodowanie UTF-8 (a nie UTF-8Y) brak walidacji = automatycznie 0 pkt w dniach listopada nie odpowiadam na żadne maile !!! wszystkie sprawozdania ocenię 14 listopada około północy Termin realizacji sprawozdania: 14 listopada włącznie (wyjątkowo środa) Sugerowane nazwy dokumentów: nazwisko.xsd + nazwisko.xml (xml ze zwalidowanym przykładem) Mój adres:
Projekt ( punktów) uzgodniona struktura XSD na zadany temat w tym referencje = 10 4 poprawne wykorzystanie typów danych w XSD = 5 3 wykorzystanie kilku różnych rodzajów restrykcji w XSD = 5 4 wykorzystanie linków do zdjęć ( (minimum 5 rekordów) = 5 2 zamieszczenie informacji o źródłach pochodzenia danych = 5 2 XSL przekształcający XML do XHTML1.1 = 10 5 XSL dodający do XHTML JavaScript dla dynamiki danych = 5 6 elementy innych języków: MathML(5), SVG(5), RSS(10), = max 10 7 Dla punktowych projektów: 50 szczegółowych rekordów lub wyczerpanie tematu (10 punktów) pierwszy termin realizacji projektów = 1 I 2008 (31 punktów)