Technologie
description
Transcript of Technologie
TechnologieTechnologiemgr inż. Tomasz Węglińskimgr inż. Tomasz Węgliński
email: email: [email protected]
www: www: http://www.tweglinski.pl
Łódź, 8 października 2012 rokuŁódź, 8 października 2012 roku
WYKŁAD 2WYKŁAD 2
DTD DTD i przestrzenie nazwi przestrzenie nazw
2/25
Wykład 2: DTD i przestrzenie nazw
Co to jest Co to jest DTD?DTD?
DTD (ang. Document Type Definition) opisuje formalną strukturę dokumentu XML – stanowi jego gramatykę.
Reguły zawarte w pliku DTD m.in.:
a) definiują elementy (np. nazwę elementu i miejsce występowania)
b) charakteryzują typy danych elementówc) określają liczbę wystąpień elementud) 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
Co to jest Co to jest DTD?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
Wykład 2: DTD i przestrzenie nazw
Dokument XML
DTD
Parser
Dokument poprawny
strukturalnie
Dokument niepoprawnystrukturalnie
4/25
Cechy DTDCechy DTD Dlaczego stosujemy 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
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
Wykład 2: DTD i przestrzenie nazw 5/25
Należy pamiętać, że:Należy pamiętać, że:
Struktura Struktura DTDDTD DTD wewnętrzneDTD 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
deklaracja XML
deklaracja typu dokumentu
ciało dokumentu
korzeń dokumentu korzeń dokumentu XML (!)XML (!)
Wykład 2: DTD i przestrzenie nazw 6/25
Struktura Struktura DTDDTD DTD zewnętrzneDTD zewnętrzne
- dokument XML zawiera odwołanie do zewnętrznego DTD umieszczonego w osobnym pliku (po deklaracji typu dokumentu <?xml … ?>)
- zewnętrzne DTD nie musi (!) zostać przetworzone przez parser XML
deklaracja XML
odwołanie do zewnętrznego DTD
ciało dokumentu
deklaracje DTDw zewnętrznym pliku
Czego brakuje??Czego brakuje??
Wykład 2: DTD i przestrzenie nazw 7/25
Struktura Struktura DTDDTD
DTD zewnętrzne może być:
prywatneprywatne
„nasze własne”
publiczne „ogólnie przyjęte”
Przykład odwołania do prywatnego DTD:
zwróć uwagę na parametr SYSTEM
parametr SYSTEM zawiera względny lub bezwzględny adres URI do naszego pliku DTD
Wykład 2: DTD i przestrzenie nazw 8/25
Struktura Struktura DTDDTD
DTD zewnętrzne może być:
prywatne
„nasze własne”
publicznepubliczne „ogólnie przyjęte”
Przykład odwołania do publicznego DTD:
to już wiem to się domyślam
Gdzie ja to widziałem… ? Gdzie ja to widziałem… ?
Wykład 2: DTD i przestrzenie nazw 9/25
Struktura Struktura DTDDTD
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
Parametr FPI (ang. Formal Public Identifier) zawiera 4 elementy oddzielone znakiem „//”:
Wykład 2: DTD i przestrzenie nazw 10/25
Struktura Struktura DTDDTD
Ważne:Ważne:
Zewnętrzne oraz wewnętrzne deklaracje DTD można łączyć (!)
Trzeba jednak pamiętać, że w przypadku wystąpienia Trzeba jednak pamiętać, że w przypadku wystąpienia dwóch identycznychdwóch identycznych deklaracji elementów, atrybutów itp., deklaracji elementów, atrybutów itp.,
pierwszeństwo ma deklaracja pierwszeństwo ma deklaracja wewnętrzna (!)wewnętrzna (!)
deklaracja wewnętrzna
deklaracja zewnętrzna
Wykład 2: DTD i przestrzenie nazw 11/25
DeklaracjaDeklaracjaelementuelementu
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 (!)
Wykład 2: DTD i przestrzenie nazw 12/25
DeklaracjaDeklaracjaelementuelementu
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ą)
Wykład 2: DTD i przestrzenie nazw 13/25
DeklaracjaDeklaracjaelementuelementu
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 jedynymdzieckiem (podelementem)
elementu <wydzial>
Deklarację więcej niż jednego podelementu możemy zorganizować na dwa sposoby:
sekwencyjnysekwencyjny wyboruwyboru
Wykład 2: DTD i przestrzenie nazw 14/25
DeklaracjaDeklaracjaelementuelementu
Sekwencja elementówSekwencja elementów
Wybór elementówWybór elementów
Połączenie sekwencji i wyboruPołączenie sekwencji i wyboru
każdy z elementów musi się pojawić w podanej kolejności
wystąpi tylko jeden z wymienionych elementów
po pierwszych trzech elementach,wystąpi element <message> lub <body>
Wykład 2: DTD i przestrzenie nazw 15/25
DeklaracjaDeklaracjaelementuelementu
Wskaźniki liczby wystąpieńWskaźniki liczby wystąpień (ang. quantity indicators) określają dozwoloną liczbę wystąpień danego elementu w dokumencie XML.
WskaźnikWskaźnik ZnaczenieZnaczenie
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ć
Istnieje również możliwość stosowania operatorów dla grup elementów
PrzykładyPrzykłady
Wykład 2: DTD i przestrzenie nazw 16/25
DeklaracjaDeklaracjaelementuelementu
Modele zawartości 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?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 **
Wykład 2: DTD i przestrzenie nazw 17/25
DeklaracjeDeklaracjeatrybutówatrybutów
Deklaracje atrybutówDeklaracje 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…Tu może być różnie…
Wykład 2: DTD i przestrzenie nazw 18/25
DeklaracjeDeklaracjeatrybutówatrybutów
Typy atrybutów:Typy atrybutów:
Wartość domyślna lub konieczność wystąpienia atrybutu:Wartość domyślna lub konieczność wystąpienia atrybutu:
Wykład 2: DTD i przestrzenie nazw 19/25
DeklaracjeDeklaracjeatrybutówatrybutów
Typy i wartości domyślne atrybutów Typy i wartości domyślne atrybutów (zaawansowany przykład)
Wykład 2: DTD i przestrzenie nazw 20/25
PrzestrzeniePrzestrzenienazwnazw
Wykład 2: DTD i 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 nazwprzestrzenie 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
PrzestrzeniePrzestrzenienazwnazw
Wykład 2: DTD i 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
JednostkiJednostki(encje)(encje)
Wykład 2: DTD i przestrzenie nazw
Jednostki Jednostki (encje)(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
JednostkiJednostki(encje)(encje)
Wykład 2: DTD i przestrzenie nazw 24/24
Encje parametryczneEncje parametryczne
-- to takie, które można wykorzystywać jedynie w DTD
Jednostki parametryczne wewnętrzne:
Do jednostek parametrycznych odwołujemy się przez znacznik: %nazwa;
JednostkiJednostki(encje)(encje)
Wykład 2: DTD i przestrzenie nazw 25/25
Jednostki parametryczne zewnętrzne:
odwołanie do zewnętrznegoDTD
parametryczna jednostka zewnętrzna (podstawienie wartości z zewnątrz)