250 likes | 382 Views
Łódź, 8 października 2012 roku. Technologie. mgr inż. Tomasz Węgliński email: tweglinski@kis.p.lodz.pl www: http://www.tweglinski.pl. WYKŁAD 2. DTD i przestrzenie nazw. 2/25. Co to jest DTD?.
E N D
Łódź, 8 października 2012 roku Technologie mgr inż. Tomasz Węglińskiemail: tweglinski@kis.p.lodz.plwww: http://www.tweglinski.pl
WYKŁAD 2 DTD i przestrzenie nazw 2/25
Co to jest DTD? • DTD(ang. Document Type Definition) opisuje formalną strukturę dokumentu XML – stanowi jego gramatykę. • Reguły zawarte w pliku DTD m.in.: • definiują elementy (np. nazwę elementu i miejsce występowania) • charakteryzują typy danych elementów • określają liczbę wystąpień elementu • określają sposoby zagnieżdżeń – tzw. hierarchiczną strukturę dokumentu • Dokument XML spełniający wszystkie (!) reguły zawarte w DTD to dokument poprawny strukturalnie (ang. valid document). • Warunkiem koniecznym poprawności strukturalnej dokumentu XML jest oczywiście jego poprawność składniowa (ang. well-formed). • Reguły zawarte w plikach DTD są wzorem na zbudowanie poprawnej struktury dokumentu XML. 3/25 Wykład 2: DTD i przestrzenie nazw
Co to jest DTD? • Poprawność strukturalną dokumentu zapewniamy dzięki: • poprawności składniowej • poprawnym definicjom typu dokumentu (DTD) umieszczonym na początku dokumentu • strukturze elementów zgodnej z DTD Rys 1. Proces sprawdzania poprawności strukturalnej Dokument XML DTD Parser Dokument poprawnystrukturalnie Dokument niepoprawnystrukturalnie 4/25 Wykład 2: DTD i przestrzenie nazw
Cechy DTD Dlaczego stosujemy DTD: • uniknięcie błędów już w fazie tworzenia dokumentu XML • wymienność informacji (EDI – ang. Electronic Data Interchange) • możliwość konwersji danych na inny format • możliwość napisania programów ułatwiających tworzenie dokumentów XML o określonej strukturze • pojedynczy plik DTD może być używany wielokrotnie Należy pamiętać, że: • tworzenie poprawnych deklaracji DTD jest trudniejsze niż tworzenie dokumentów XML • należy od początku dobrze zaprojektować dokument DTD • DTD ma mniejsze możliwości niż XML Schema 5/25 Wykład 2: DTD i przestrzenie nazw
Struktura DTD DTD wewnętrzne • składa się z wielu deklaracji umieszczonych na początku pliku • (po deklaracji typu dokumentu <?xml … ?>) • - taka deklaracja musi zostać przetworzona przez parser XML korzeń dokumentu XML (!) deklaracja XML deklaracja typu dokumentu ciało dokumentu 6/25 Wykład 2: DTD i przestrzenie nazw
Struktura DTD DTD zewnętrzne • dokument XML zawiera odwołanie do zewnętrznego DTD umieszczonego w osobnym pliku (po deklaracji typu dokumentu <?xml … ?>) • zewnętrzne DTD niemusi (!) zostać przetworzone przez parser XML deklaracja XML odwołanie do zewnętrznego DTD ciało dokumentu deklaracje DTD w zewnętrznym pliku Czego brakuje?? 7/25 Wykład 2: DTD i przestrzenie nazw
Struktura DTD • DTD zewnętrzne może być: • prywatne „nasze własne” • publiczne • „ogólnie przyjęte” • Przykład odwołania do prywatnego DTD: zwróć uwagę na parametrSYSTEM • parametr SYSTEM zawiera względny lub bezwzględny adres URI • do naszego pliku DTD 8/25 Wykład 2: DTD i przestrzenie nazw
Struktura DTD • DTD zewnętrzne może być: • prywatne „nasze własne” • publiczne • „ogólnie przyjęte” • Przykład odwołania do publicznego DTD: to już wiem to się domyślam Gdzie ja to widziałem… ? 9/25 Wykład 2: DTD i przestrzenie nazw
Struktura DTD • Parametr FPI (ang. Formal Public Identifier) zawiera 4 elementy oddzielone znakiem „//”: • znak „+” lub „-” -- „+” oznacza standardowe DTD, „-” oznacza DTD nie będące powszechnym standardem • nazwa odpowiedzialnej osoby, grupy osób lub organizacji • typ dokumentu i nr wersji • język 10/25 Wykład 2: DTD i przestrzenie nazw
Struktura DTD Ważne: • Zewnętrzne oraz wewnętrzne deklaracje DTD można łączyć (!) Trzeba jednak pamiętać, że w przypadku wystąpienia dwóch identycznych deklaracji elementów, atrybutów itp., pierwszeństwo ma deklaracja wewnętrzna (!) deklaracja wewnętrzna deklaracja zewnętrzna 11/25 Wykład 2: DTD i przestrzenie nazw
Deklaracja elementu Deklaracja elementu składa się z trzech części: • słowa kluczowego ELEMENT; • nazwy elementu; • słowa lub grupy definiującej zawartość. • Dopuszczalna zawartość elementu: • (#PCDATA) – dowolna zawartość tekstowa • EMPTY – element pusty • ANY – dowolna zawartość (pusta lub nie) Uwaga:W jednym DTD nie można powtórzyć deklaracji tego samego elementu (!) 12/25 Wykład 2: DTD i przestrzenie nazw
Deklaracja elementu Przykład deklaracji elementu: • w języku XML (w ramach DTD) nie możemy deklarować innej niż tekstowa zawartości (np. daty, czasu, liczby itp.) • (#PCDATA) musi być w nawiasach okrągłych • Nie tylko EMPTY może być puste, także (#PCDATA) • Deklaracja ANY określa jedynie nazwę elementu (z dowolną treścią) 13/25 Wykład 2: DTD i przestrzenie nazw
Deklaracja elementu Do bardziej szczegółowego scharakteryzowania elementów, służy model grupy lub inaczej model elementowy. Element <wydzial> składa się z dokładnie jednego podelementu Element <dziekan> jest jedynym dzieckiem (podelementem) elementu <wydzial> • Deklarację więcej niż jednego podelementu możemy zorganizować na dwa sposoby: • sekwencyjny • wyboru 14/25 Wykład 2: DTD i przestrzenie nazw
Deklaracja elementu • Sekwencja elementów każdy z elementów musi się pojawić w podanej kolejności • Wybór elementów wystąpi tylko jedenz wymienionych elementów • Połączenie sekwencji i wyboru po pierwszych trzech elementach, wystąpi element <message> lub <body> 15/25 Wykład 2: DTD i przestrzenie nazw
Deklaracja elementu Wskaźniki liczby wystąpień(ang. quantity indicators)określają dozwoloną liczbę wystąpień danego elementu w dokumencie XML. Wskaźnik Znaczenie element musi wystąpić dokładnie jeden raz ? element może, ale nie musi wystąpić; nie może się powtarzać + element musi wystąpić, może się powtarzać * element może, ale nie musi wystąpić; może się powtarzać Przykłady • Istnieje również możliwość stosowania operatorów dla grup elementów 16/25 Wykład 2: DTD i przestrzenie nazw
Deklaracja elementu • Modele zawartości elementu: • zawartość tekstowa (ang. text content) • zawartość elementowa (ang. element content) • zawartość mieszana (ang. mixed content) Jak zadeklarować element posiadający zarówno treść jak i inne elementy? • Jedyną (!) słuszną drogą dla osiągnięcia tego celu jest użycie operatora * 17/25 Wykład 2: DTD i przestrzenie nazw
Deklaracje atrybutów • Deklaracje atrybutów • Wszystkie atrybuty umieszczamy w jednej deklaracji listy atrybutów; • Deklaracja zaczyna się od słowa ATTLIST i nazwy elementu; • Reszta deklaracji to tzw. definicja atrybutu (ang. attribute definition). przykład deklaracji DTD zastosowanie w XML • W przykładzie: • element-name payment • attribute-name type • attribute-type CDATA • default-value „check” Tu może być różnie… 18/25 Wykład 2: DTD i przestrzenie nazw
Deklaracje atrybutów • Typy atrybutów: • Wartość domyślna lub konieczność wystąpienia atrybutu: 19/25 Wykład 2: DTD i przestrzenie nazw
Deklaracje atrybutów • Typy i wartości domyślne atrybutów (zaawansowany przykład) 20/25 Wykład 2: DTD i przestrzenie nazw
Przestrzenie nazw • Dokument XML może zawierać elementy i atrybuty zdefiniowane w innych językach znaczników o różnych DTD, np. HTML. • Do tego celu służą tzw. przestrzenie nazw (ang. namespaces). • Elementy i atrybuty z różnych przestrzeni są rozróżniane poprzez prefix dodany do nazwy własnej, oddzielony dwukropkiem: prefix_przestrzeni: nazwa_z_przestrzeni • W dokumencie XML należy przyporządkować prefix do konkretnego języka (np. konkretnego DTD). Służy do tego atrybut xmlns: treść traktowana jako paragraf w języku HTML Mówimy, że sekwencja ta nadaje prefix h dla przestrzeni nazw języka HTML 21/25 Wykład 2: DTD i przestrzenie nazw
Przestrzenie nazw • Ze wskazanej przestrzeni nazw można korzystać wiele razy, ale tylko w elemencie (i podelementach) w którym została zadeklarowana. • Oprócz nazw z innych przestrzeni, można oczywiście w jednym dokumencie XML korzystać także z własnych nazw. • Istnieje również możliwość zadeklarowania kilku różnych języków, czyli np. dwóch różnych przestrzeni nazw: • Możemy także deklarować tzw. domyślną przestrzeń nazw (ang. default namespace): 22/25 Wykład 2: DTD i przestrzenie nazw
Jednostki(encje) Jednostki (encje) • umożliwiają nazywanie fragmentów języka XML; • są deklarowane tylko w DTD • dzielą się na jednostki ogólne oraz parametryczne • oba typy jednostek mogą być wewnętrzne lub zewnętrzne • Jednostki ogólne wewnętrzne: • Jednostki ogólne zewnętrzne: • Do jednostek ogólnych należą również znane nam: < > & etc… 23/25 Wykład 2: DTD i przestrzenie nazw
Encje parametryczne -- to takie, które można wykorzystywać jedynie w DTD Jednostki(encje) • Jednostki parametryczne wewnętrzne: • Do jednostek parametrycznych odwołujemy się przez znacznik: %nazwa; 24/24 Wykład 2: DTD i przestrzenie nazw
Jednostki(encje) • Jednostki parametryczne zewnętrzne: odwołanie do zewnętrznego DTD parametryczna jednostka zewnętrzna (podstawienie wartości z zewnątrz) 25/25 Wykład 2: DTD i przestrzenie nazw