XML – eXtensible Markup Language 2
Nazwy atrybutów i elementów w języku XML muszą spełniać te same reguły (te same reguły musza spełniać też inne, rzadziej stosowane konstrukcje). W ogólności będziemy mówić o nazwach XML. Nazwa XML może zawierać: Nazwy XML 1) Standardowe litery (duże i małe) i cyfry np. A, b, 6 2) litery nieangielskie i ideogramy np. õ, Ж, IV 3) symbole: _ (podkreślnik), - (myślnik),. (kropka) Nazwa XML nie może zawierać: ``(cudzysłów), (apostrof), $, %, ; (średnik) Symbol : (dwukropek) jest zarezerwowany dla tzw. przestrzeni nazw.
Nazwy XML Nazwa XML nie może zawierać pustych znaków. Nazwa XML nie może zaczynać się od ciągu znaków XML (zarezerwowane dla specyfikacji XML). Nazwa XML może zaczynać się od: 1) litery 2) ideogramu 3) podkreślnika Nazwa XML nie może zaczynać się od: 1) liczby 2) myślnika 3) kropki
Poniższe elementy są prawidłowo sformatowane (well formed) czyli zgodne z regułami tworzenia dokumentów XML. Nazwy XML 1) 98 NY 32 Przykład 1 2) 7/23/2001 3) Alan 4) I-610 5)
Poniższe elementy nie są prawidłowo sformatowane (well formed) czyli nie są zgodne z regułami tworzenia dokumentów XML. Nazwy XML Przykład 2 3) 98 NY 32 1) 7/23/2001 2) Alan 4) I-610
Może się zdarzyć, że w dokumencie XML będzie będziemy chcieli użyć np. <. Bezpośrednie użycie < spowoduje, że znak ten będzie interpretowany jako początek znacznika. Jeżeli chcemu użyć znaku < w innym znaczeniu używamy encji <. Encje if (location.host.toLowerCase().indexOf("cafeconleche")<0) { location.href=" } Przykład 3
Encje Znak & jest zawsze rozpoznawany jako początek encji. Jeżeli chcemy wstawić w dokumencie ten znak to możemy użyć encji & Przykład 4 A & B W języku XML zdefiniowane są następujące encje: 1) < znak < 2) & znak & 3) > znak > 4) " znak `` 5) ' znak `
Encje Aplikacja parsująca dokument XML w przypadku napotkania encji automatycznie wstawia w to miejsce odpowiedni symbol do którego odnosi się dana encja. Oprócz powyższych 5 encji zdefiniowanych w specyfikacji XML istnieją encje które możemy sami definiować. Zajmiemy się nimi po omówieniu Definicji Typu Dokumentu (DTD).
Sekcje CDATA Jeżeli chcemy umieścić w dokumencie XML tekst, który nie będzie parowany (np. komentarz) możemy to uczynić wykorzystując sekcje CDATA. Tekst taki umieszczamy między znacznikami: <![CDATA[ ]]> i You can use a default xmlns attribute to avoid having to add the svg prefix to all your elements: <![CDATA[ <svg xmlns= width="12cm height="10cm"> ]]> Przykład 5
Sekcje CDATA W sekcji CDATA nie może pojawić się symbol ]]>. Sekcje CDATA są przeznaczone dla ludzi, a nie maszyn. Komentarze W dokumencie XML komentarze wstawiamy podobnie jak w dokumentach HTML. W treści komentarza nie może pojawić się ciąg znaków --> ponieważ będzie on traktowany jako zakończenie komentarza. Komentarz może pojawić się praktycznie w dowolnym miejscu w dokumencie XML.
Komentarz może się pojawić m.in. przed lub za elementem będącym korzeniem. Komentarz nie może się pojawić wewnątrz znacznika i wewnątrz innego komentarza. Komentarze Przykład 6 Alan Turing computer scientist >mathematician cryptographer
Komentarze Komentarze są przeznaczone dla ludzi i nie należy umieszczać w nich żadnych instrukcji przeznaczonych dla aplikacji. Instrukcje przetwarzania (Processing Instructions) Instrukcje przetwarzania są przeznaczone dla aplikacji, które mogą czytać dokument XML. Bezpośrednio po znaczniku <? występuje tzw. cel (target). Cel identyfikuje aplikację mającą dokonać przetwarzania. Przykład 7 <?php mysql_connect("database.unc.edu", "clerk", "password"); ?>
Instrukcje przetwarzania (Processing Instructions) Przykład 8 HTML XML Podobnie jak komentarze instrukcje przetwarzania mogą pojawić się przed lub za elementem będącym korzeniem. Instrukcje przetwarzania nie mogą pojawić się wewnątrz znacznika. Przykład 9
Deklaracja dokumentu XML Dokument XML powinien (ale nie musi) zaczynać się od deklaracji XML. Deklaracja XML jest instrukcją przetwarzania (gdzie cel=XML) posiadającą następujące atrybuty: version – standardowo ma wartość "1.0" encoding – określa sposób kodowania tekstu w dokumencie XML. Standardowo dokumenty XML używają kodowania UTF-8. Atrybut ten jest obowiązkowym elementem deklaracji. Atrybut ten nie jest obowiązkowy. Jeżeli jest pominięty przyjmowane jest domyślnie kodowanie UTF-8.
standalone – atrybut określa czy dla dokumentu XML określona jest Definicja Typu Dokumentu (DTD). Atrybut ten nie jest obowiązkowym elementem deklaracji. Jeżeli jest pominięty przyjmowana jest domyślnie wartość no. Deklaracja dokumentu XML Przykład 10 Erwin Schrödinger UWAGA: Deklaracja XML nie jest obowiązkowa w dokumencie XML, ale jeżeli jest musi być pierwszym elementem dokumentu.
Dokument prawidłowo sformatowany (well formed) Każdy dokument XML musi być prawidłowo sformatowany tzn. musi spełniać pewne warunki. Najważniejsze z nich to: 1) Każdy znacznik początkowy musi posiadać znacznik końcowy. 2) Elementy mogą być zagnieżdżone, ale nie mogą nachodzić na siebie. Przykład 10 Alan Turing
Dokument prawidłowo sformatowany (well formed) 3) Dokument musi posiadać dokładnie jeden korzeń. Przykład 11 Alan Turing computer scientist Brak korzenia!!! 4) Wartości atrybutów muszą znajdować się między symbolami ". Przykład 12
Dokument prawidłowo sformatowany (well formed) 5) Element nie może posiadać dwóch atrybutów o tej samej nazwie. 6) Komentarze i instrukcje przetwarzania nie mogą znajdować się wewnątrz znaczników. Przykład 13 >Tom 7) Znaki < i & nie mogą pojawić się w żadnym elemencie i atrybucie.
Definicja Typu Dokumentu - DTD DTD (ang. Document Type Definition) – rodzaj dokumentu definiujący formalną strukturę dokumentów XML. DTD określa składnię konkretnej aplikacji XML czyli: definiuje każdy dopuszczalny element dokumentu, jego zbiór atrybutów i dopuszczalne wartości. określa zagnieżdżanie i wymagalność poszczególnych elementów w dokumencie. Przykład 14 W dokumencie XHTML element li może pojawić się tylko jako dziecko elementów ol lub ul. Informacja o tym zapisana jest właśnie w odpowiednim dokumencie DTD.
Definicja Typu Dokumentu - DTD Jeżeli dokument XML jest zgodny z określonym dla niego DTD mówimy wówczas że jest poprawny strukturalnie (w skrócie poprawny - ang. valid). UWAGA: Przyjęte jest, że w dokumencie XML zakazane jest wszystko co nie jest dozwolone przez związany z nim dokument DTD. Poprawność dokumentu XML nie jest wymagana (zależy to np. od twórcy dokumentu). Wymagane jest aby dokument był prawidłowo sformatowany. Jeżeli jednak dokument nie będzie poprawny aplikacja działająca w oparciu o dane w nim zapisane może nie działać poprawnie.
Definicja Typu Dokumentu - DTD Przykład 15 Rozważmy następujący dokument XML Alan Turing computer scientist mathematician cryptographer Jak może wyglądać DTD dla tego dokumentu?
Deklaracja Typu Dokumentu Poprawny dokument XML musi zawierać deklaracje związanego z nim DTD. <!DOCTYPE person SYSTEM " Przykład 16 Deklaracja ta mówi, że korzeniem dokumentu jest element person oraz, że DTD dla tego dokumentu znajduje się pod adresem Deklaracja typu dokumentu znajduje się zawsze na początku dokumentu zaraz po deklaracji XML i przed korzeniem dokumentu.
Deklaracja Typu Dokumentu Przykład 17 Alan Turing computer scientist mathematician cryptographer Jeżeli dokument DTD znajduje się w tym samym folderze co dokument XML:
Deklaracja Typu Dokumentu Deklaracja typu dokumentu zwykle znajduje się w oddzielnym pliku. Można ją jednak umieścić w dokumencie XML. Przykład 18 <!DOCTYPE person [ ]> Alan Turing computer scientist mathematician cryptographer
Deklaracje Elementów Deklaracja elementu ma następującą postać: nazwa_elementu – określa nazwę elementu. zawartość_elementu – określa dzieci elementu i ich uporządkowanie. Tekst - najprostszą zawartością elementu jest zwykły tekst. Oznaczamy go przez #PCDATA. Zawartość elementu Przykład 19
Deklaracje Elementów Dzieci – deklarowany przez nas element może posiadać dzieci. Przykład 20 Deklaracja ta oznacza, że element name posiada dzieci (kolejność ważna!!!): first_name, second_name Dla powyższej deklaracji elementu name poprawny jest dokument: Madonna Ciconne Nie jest poprawny dokument: Ciconne Madonna
Deklaracje Elementów W DTD możemy określić liczbę dzieci danego elementu wykorzystując następujące oznaczenia: ? – zero lub jeden element * - zero lub więcej elementów + - jeden lub więcej elementów Przykład 20 Element first_name jest wymagany. Element middle_name może nie wystąpić lub wystąpić tylko raz. Element last_name może nie wystąpić lub wystąpić tylko raz.
Deklaracje Elementów Dla powyższej deklaracji następujący dokument XML nie jest poprawny. George Herbert Walker Bush Ciconne Madonna Przykład 21 Element middle_name może nie wystąpić lub wystąpić wiele razy.
Deklaracje Elementów Może się zdarzyć, że dwa różne przykłady tego samego elementu będą zawierały różne elementy-dzieci. Przykład 22 Dzieckiem elementu transport może być train lub bus lub car. Elementy mogą mieć bardziej skomplikowane definicje. Przykład 23 Dziećmi elementu center mogą być x i y lub r i.
Deklaracje Elementów Przykład 25 Dzieckiem elementu a może być: jedno lub wiele c i d b lub Przykład 26 Dzieckiem elementu definition może być tekst zawierający dowolną ilość elementów term.
The Turing Machine is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory. Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented. Deklaracje Elementów Poniższy dokument jest poprawny ze względu na powyższą deklarację: Element pusty deklarujemy następująco :
Deklaracje Elementów I na koniec DTD dla dokumentu z przykładu 15 tzn: Alan Turing computer scientist mathematician cryptographer DTD: