Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW T. Romańczukiewicz FAIS UJ 2009/2010
Plan Plan 1 Wstęp 2 XML - wstęp 3 Specyfikacja XML
Plan Intro XML - wstęp Specyfikacja XML Sprawy organizacyjne 1 Wstęp Sprawy organizacyjne 2 XML - wstęp 3 Specyfikacja XML
Intro XML - wstęp Specyfikacja XML Sprawy organizacyjne Sprawy organizacyjne Warunki zaliczenia: zaliczenie z ćwiczeń Konsultacje: poniedziałki godz. 15.00-16.00 (Reymonta 4/422) + e-mail trom@th.if.uj.edu.pl Literatura: http://th.if.uj.edu.pl/~trom lub prunus.if.uj.edu.pl - materiały do zajęć w katalogu Upload można wyrażać anonimowo swoje (najlepiej konstruktywne) opinie http://www.w3schools.com/xml/ Steven Holzner, XML. Vademecum profesjonalisty Elliotte Rusty Harold, W.Scott Means, XML. Almanach Brett McLaughlin, Java i XML
Plan Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen 1 Wstęp 2 XML - wstęp Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumentów XML Parsery XML 3 Specyfikacja XML
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Plan semetralny XML wstęp, specyfikacja zawężanie dokumentów (DTD i schema) przeszukiwanie dokumentów (XPath, XQuery, XLink) szablony (XSLT) Przetwarzanie DOM SAX JAXB Tworzenie stron AJAX JSP Servlety Uzupełnienie (HTML5, jquery, JASON)
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Definicja i własności XML (ang:extensible Markup Language) Rozszerzalny język znaczników (łatwość dostosowania do własnych potrzeb) Zaprojektowany by przenosić dane, a nie format Z założenia to co Java wniosła do przenośności kodu, XML ma wnieść w przenośność danych. Znaczniki nie sa predefiniowane. Trzeba je samemu wymyślać Jest samoopisywalny XML jest standardem rekomendowanym przez organizację W3C. Java + XML = przenośny kod + przenośne dane
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Inne języki znaczników Język znaczników - format dokumentu, który obok tekstu zawiera także dodatkowe informacje, które go opisuja. Te dodatkowe informacje, na przykład na temat wygladu czy znaczeniu fragmentu dokumentu, sa wyrażane poprzez wplecione w tekst znaczniki. Znaczniki proceduralne (np. format tekstu) \begin{center}text wycentrowany\end{center} Znaczniki opisowe <tytul>tytul dokumentu</tytul> Inne języki znacznikowe: HTML (strony WWW) T E X, LAT E X(składanie textu, w tym niniejszej prezenacji) RTF (Rich Text Format) bardzo nieczytelny format M$ SVG (Scalable Vector Graphics) Scribe, GML i SGML (standardowy uogólniony język znaczników)
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Przykład - fragment pliku L A T E X a. LAT E X służy do składania złożonych tekstów, również matematycznych itp. Listing 1: example1.tex 1 \documentclass[a4paper,10pt]{article} 2 3 \begin{document} 4 \section{some eqauation} 5 \begin{equation} 6 E=\frac{mc^2}{\sqrt{1-\frac{v^2}{c^2}}} 7 \end{equation} 8 \end{document}
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen HTML - najpopularniejszy język znacznikowy Listing 2: example1.html 1 <html> 2 <body> 3 4 <p><b>this text is bold</b></p> 5 <p><big>this text is big</big></p> 6 <p><i>this text is italic</i></p> 7 <p><code>this is computer output</code></p> 8 <p>this is<sub> subscript</sub> and <sup>superscript</sup></p> 9 10 </body> 11 </html>
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Pierwszy plik XML Listing 3: xml1.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 3 <CATALOG> 4 <Artist> 5 <Artist-Name> Behemoth </Artist-Name> 6 <Album id="100"> 7 <Title> Demigod </Title> 8 <Year> 2004 </Year> 9 </Album> 10 11 <Album id="101"> 12 <Title> The Apostasy </Title> 13 <Year> 2007 </Year> 14 </Album> 15 </Artist> 16 17 <Artist> 18 <Artist-Name> Black Sabbath </Artist-Name> 19 <Album id="102"> 20 <Title> Dehumanizer </Title> 21 <Year> 1992 </Year> 22 </Album> 23 </Artist> 24 </CATALOG>
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Struktura najprostszego pliku XML Nagłówek: <?xml version="1.0"encoding="utf-8"?> Jest to instrukcja przetwarzania, mówiaca z jakiej wersji XML i z jakiej strony kodowej korzystamy. Każda instrukcja przetwarzania zaczyna się <? i kończy?> Elementy: znacznik poczatkowy otwierajacy element <Title>; pomiędzy znakami < > wpisujemy dowolna nazwę zaczynajac a się od litery lub podkreślenia i zawierajac a litery, cyfry, podkreślenia, kropki i myślniki; znaczniki rozróżniaja wielkie i małe litery; moga również zawierać atrybuty (raczej niezalecane) można użyć atrybutów do dodatkowego opisania danych. treść - opcjonalnie, moga znajdować się inne, zagnieżdżone elementy znacznik końcowy </Title> cały dokument poza instrukcjami przetwarzania musi być zamknięty w jednym, tzw. głównym elemencie. Dokumenty XML pozwalaja nie tylko przenosić same dane, ale również określać strukturę tych danych - maja strukturę drzewa.
XML a HTML Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen W HTML znaczniki oznaczały format danego elementu. Można było dodatkowo określić atrybuty lub wyodrębnić styl i zapisać go w pliku CSS. Jeśli pojawił się znacznik spoza zbioru zdefiowanego w danej wersji HTML, znacznik taki był ignorowany. Przegladaj ac nasz plik w przegladarce (np. Opera) plik XML wypisywany jest wprost, z podświetleniem składni. Jeżeli nie dodamy arkuszu stylów, pojawi się informacja: This document had no style information. W przypadku błędu w pliku XML Opera pokaże miejsce z błędem. Ćwiczenie: sprawdzić jak wyglada odczyt czystych plików XML w różnych przegladarkach.
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Przegladanie pliku XML bez zdefiniowanego stylu
Arkusze CSS Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen W pliku XML dodajemy kolejna instrukcję przetwarzania <?xml-stylesheet type="text/css"href="katalog.css"?> gdzie katalog.css jest plikiem zawierajacym arkusz stylów zdefiniowanym dla poszczególnych znaczników: Listing 4: katalog.css 1 CATALOG { 2 display: block; 3 background-color: #000000; 4 color: #FFFFFF; 5 } 6 7 Artist { 8 display: block; 9 background-color: #505050; 10 width:500pt; 11 padding:25pt; 12 margin:10pt; 13 border-style:solid; 14 border-width:1px; 15 } 16. 17. 18.
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Przegladanie pliku XML ze zdefiniowanym stylem
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Ważne jest jednak, że XML nie jest zastępstwem do HTML, a jedynie jego uzupełnieniem. XML ma za zadanie przenosić dane, a HTML format. Z połaczenia XML + HTML powstał język XHTML. Zamiast CSS poleca się używanie XSL, który ma znacznie większe możliwości, a do tego XSL sam jest plikiem XML HTML dopuszcza wiele błędów, czy niedociagnięć składniowych. Szacuje się, że co najmniej połowa kodu przegladarek służy do obsługi błędnie zapisanego HTML. Dane w XML sa samoopisujace się, tzn. można wprowadzać nazwy określajace zawartość danych elementów. Przegladarka XML ma za zadanie sprawdzić czy dokument nie zawiera błędów, jeśli takie znajdzie ma za zadanie to zgłosić i przerwać przetwarzanie dokumentu. Przegladarki sprawdzaja czy dokument jest poprawnie sformułowany a niekiedy następnie waliduja dokument.
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Dokument musi spełniać wymagania składniowe (dokładny opis na potem) Elementy musza być poprawnie zagnieżdżone, a każdy element musi być poprawnie zamknięty. XML niepoprawnie sformułowany Listing 5: bledny.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <?xml-stylesheet type="text/css" href="katalog.css"?> 3 4 <CATALOG> 5 <Artist> 6 <Artist-Name> Behemoth </Artist-Name> 7 <Album id="100"> 8 <Title> Demigod </Title> 9 <Year> 2004 </Year> 10 11 <Album id="101"> 12 <Title> The Apostasy </Title> 13 <Year> 2007 </Yaer> 14 </Album> 15 </Artist> 16 </Catalog>
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Walidacja dokumentów XML Dokument XML można walidować jeśli zwiazana jest z nim definicja typu dokumentu (DTD) i kiedy dokument jest z nia zgodny Listing 6: xml1.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <?xml-stylesheet type="text/css" href="katalog.css"?> 3 <!DOCTYPE CATALOG [ 4 <!ELEMENT CATALOG (Artist+) > 5 <!ELEMENT Artist (Artist-Name, Album+) > 6 <!ELEMENT Artist-Name (#PCDATA) > 7 <!ELEMENT Album (Title, Year) > 8 <!ELEMENT Title (#PCDATA) > 9 <!ELEMENT Year (#PCDATA) > 10 <!ATTLIST Album id CDATA "100" > 11 ]> 12 13 <CATALOG> 14 <Artist> 15 <Artist-Name> Behemoth </Artist-Name> 16 <Album id="100"> 17 <Title> Demigod </Title> 18 <Year> 2004 </Year> 19 </Album> 20 </Artist> 21 </CATALOG>
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Definiujac różne pliki DTD można tworzyć osobne języki na bazie XML. Języki takie służace bardziej specjalistycznym celom nazywamy aplikacjami XML SVG Scalable Vector Graphics MathML CML Chemical Markup Language SMIL Synchronized Multimedia Integration Language XHTML XBRL extensible Business Reporting Language
Intro XML - wstęp Specyfikacja XML Przykłady Budowa pliku xml Prezentacja danych Walidacja dokumen Użycie JavaScript do czytania zawartości XML Listing 7: Readxml.html 1 <html> 2 <body> 3 <p><b>artist:</b> <span id="artist"></span><br /> 4 <b>album:</b> <span id="album"></span><br /> 5 6 <script type="text/javascript"> 7 xhttp=new XMLHttpRequest(); 8 xhttp.open("get","xml1.xml",false); 9 xhttp.send(""); 10 xmldoc=xhttp.responsexml; 11 12 13 document.getelementbyid("artist").innerhtml=xmldoc.getelementsbytagname("artist- 14 Name")[1].childNodes[0].nodeValue; 15 16 document.getelementbyid("album").innerhtml=xmldoc.getelementsbytagname("title")[ 17 2].childNodes[0].nodeValue; 18 19 </script> 20 </body> 21 </html>
Plan Intro XML - wstęp Specyfikacja XML 1 Wstęp 2 XML - wstęp 3 Specyfikacja XML
Intro XML - wstęp Specyfikacja XML Rekomendacja W3C Poprawnie sformułowany XML Dokument tekstowy jest poprawnie sformułowany jeśli: Jako całość spełnia definicję dokumentu etykietowego Zgodny jest z regułami poprawności sformułowania podanymi w specyfikacji www.w3c.org/tr/rec-xml/ Każda parsowana encja (część), do której w dokumencie jest odwołanie bezpośrednie lub pośrednie jest poprawnie sformułowana. Poprawnie sformułowany dokument XML może być następnie walidowany. Walidacja - sprawdzenie zgodności dokumentu z definicja typu dokumentu (DTD) lub schematem Encja (ang. entity) - część dokumentu, która może może zawierać tekst albo dane binarne. Każdy plik z kilkoma elementami jest encja, choć nie musi być poprawnie sformułowanym dokumentem XML.
Prolog Intro XML - wstęp Specyfikacja XML Prolog znajduje się na poczatku dokumentu XML. Do poprawności sformułowanie nie jest on konieczny, ale jest zalecany. Prolog zawiera deklarację XML: <?xml version="1.0"encoding="utf-8"standalone="yes"?> uwaga: starsze specyfikacje dopuszczały możliwość wielkich liter XML teraz tak nie jest; atrybut version jest obowiazkowy! instrukcje przetwarzania <?xml-stylesheet type="text/css"href="katalog.css"?> nie wchodza w skład specyfikacji XML deklaracje typu dokumentu (DTD) 1 <!DOCTYPE CATALOG [ 2 <!ELEMENT CATALOG (Artist+) > 3... 4 <!ATTLIST Album id CDATA "100" > ]>
Intro XML - wstęp Specyfikacja XML Prolog cd. ale nie tylko komentarze, prawie takie same jak w przypadku HTML: <! komentarz > komentarze nie moga pojawiać się przed deklaracja XML wewnatrz znaczników komentarz nie może zawierać znaku -- ani innego komentarza białe znaki (spacja, tablatura, znak nowego wiersza, znak powrotu karetki) uwaga: zalecane jest kończenie wiersza zgodnie z konwencja UNIX; w elementach białe znaki sa traktowane jak pojedyncze spacje w elemencie można użyć atrybutu xml:space="preserve" lub xml:space="deafult"
Intro XML - wstęp Specyfikacja XML Znaczniki i elementy Znaczniki w XML zaczynaja się znakami < i kończa >. Określaja one strukturę dokumentu. Cała reszta to dane znakowe. Uwaga: znaki (tzw. encje znakowe) < i > reprezentuja < i > i w trakcie przetwarzania moga one zostać zinterpretowane jako znaczniki, np. podczas odwołania do encji Znacznik poczatkowy zaczyna się < i kończa > a znacznik końcowy < i kończa />. Wyjatkiem sa tzw. elementy puste <Powitanie tekst="hello"/>. Taki sposób pisania jest też dopuszczalny w HTML. Nazwy elementów musza zaczynać się litera lub podkreśleniem i zawierać litery, cyfry, podkreślenia, myślniki, kropki i średniki, nie moga pojawić się żadne białe znaki. Należy unikać stosowania nazw z dwukropkami. Ważnym elementem jest element główny, który musi pojawić się w każdym dobrze sformułowanym dokumencie XML dokładnie raz i zawiera wszystkie pozostałe elementy.
Atrybuty Intro XML - wstęp Specyfikacja XML Atrybuty pary nazw i wartości umożliwiajace wstawianie dodatkowych informacji w znacznikach poczatkowych i elementu pustego. <Album id="101"> Atrybuty można następnie odczytywać w aplikacjach. Nie powinno się nadużywać atrybutów, gdyż nie określaja one struktury dokumentu i ich nazwy nie moga się powtarzać. Każdy atrybut można zastapić osobnym elementem np: 1 <Album> 2 <id> 101 </id> 3 </Album> i tego typu zapis choć dłuższy jest bardziej czytelny. Użycie atrybutów jest kwestia gustu. Nazwy atrybutów podlegaja tym samym prawom co nazwy znaczników. Wartości atrybutów to zwykły tekst umieszczony w cudzysłowach. W celu uzyskania znaków specjalnych należy używać konwencji typu ' W XML każdy atrybut musi mieć wartość. Przydatny jest atrybut \xml:lang określajacy język <znacznik xml:lang="pl"> lub <znacznik xml:lang="en-us">
Intro XML - wstęp Specyfikacja XML Sekcja CDATA Czasami trzeba wpisać duży blok zawierajacy znaki, które nie powinny być interpretowane. Np. chcemy wkleić kod innego pliku XML lub HTML, ale jako tekst, a nie jako dokument. Można zamieniać wszystkie znaki specjalne encjami znakowymi. Nie jest to jednak wygodne rozwiazanie Listing 8: cdata.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <caly_dokument> 3 <![CDATA 4 <CATALOG> 5 6 <Artist> 7 <Artist-Name> Behemoth </Artist-Name> 8 <Album id="100"> 9 <Title> Demigod </Title> 10 <Year> 2004 </Year> 11 </Album> 12 </Artist> 13 </CATALOG> ]]> 14 </caly_dokument>
Intro XML - wstęp Specyfikacja XML Przestrzenie nazw Nazwy znaczników w xml możemy tworzyć dowolnie. Jednak przy dużych dokumentach może pojawić się problem: chęć użycia tych samych nazw. Gorzej jeśli chcemy skorzystać z dwóch różnych dokumentów, które posiadaja te same nazwy znaczników (np. gdy chcemy wpisać równanie MathML w kodzie XHTML). Przestrzenie nazw pozwalaja uniknać konfliktów pomiędzy poszczególnymi zbiorami znaczników. Korzysta się z nich poprzedzajac nazwę znacznika badź atrybutu nazwa przestrzeni nazw z dwukropkiem Listing 9: namespace.xml 1 <root> 2 <h:table xmlns:h="http://www.w3.org/tr/html4/"> 3 <h:tr> 4 <h:td>apples</h:td> 5 <h:td>bananas</h:td> 6 </h:tr> 7 </h:table> 8 9 <f:table xmlns:f="http://www.w3schools.com/furniture"> 10 <f:name>african Coffee Table</f:name> 11 <f:width>80</f:width> 12 <f:length>120</f:length> 13 </f:table> 14 </root>
Intro XML - wstęp Specyfikacja XML W powyższym przykładzie <table> mogłoby oznaczać zarówno stół jak i tabelkę. Wprowadzenie przestrzeni nazw umożliwiło rozdzielenie tych znaczników. Definiujemy przestrzenie nazw przypisujac atrybutowi xmlns:przedrostek niepowtarzalny identyfikator. Dobra praktyka (choć nie wymogiem) jest podawanie adresu URL lub URI, pod którym znajduje się DTD definiowanej przestrzeni nazw. Należy unikać używania dwukropków. Zarezerwowane sa dwie przestrzenie nazw xml i xmlns. Jeśli dany element ma zadeklarowana przestrzeń nazw to również elementy zagnieżdżone ja dziedzicza. W powyższym przykładzie można było umieścić deklaracje wewnatrz elementu głównego: 1 <root 2 xmlns:h="http://www.w3.org/tr/html4/" 3 xmlns:f="http://www.w3schools.com/furniture">
Intro XML - wstęp Specyfikacja XML Podsumowanie Podsumowanie XML - rozszerzalny język znaczników, podobny do HTML. Nie ma zdefiniowanych znaczników, jest samoopisywalny. Ma przechowywać dane i ich strukturę, a nie sposób prezentacji danych. Istnieje możliwość przedstawienia danych w niektórych przegladarkach używajac CSS Jest przenośny i łatwo przetwarzalny i człowieko-czytelny. Oprócz zwykłych znaczników sa instrukcje przetwarzania, sekcje CDATA. Dokumenty można łaczyć, ale przydaja się przestrzenie nazw pozwalajace rozróżnić elementy z danych dokumentów.