Programowanie i projektowanie obiektowe

Podobne dokumenty
Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe

Bazy Danych i Usługi Sieciowe

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Aplikacje internetowe laboratorium XML, DTD, XSL

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Wprowadzenie do technologii XML

BAZY DANYCH. Dr hab. Sławomir Zadrożny, prof. PR

XML i nowoczesne technologie zarządzania treścią

Kurs WWW Język XML, część I

Programowanie internetowe

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Programowanie i projektowanie obiektowe

Przykładowy dokument XML

INTEGRACJA I EKSPLORACJA DANYCH

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Podstawy XML-a. Zaawansowane techniki programowania

Model semistrukturalny

XML extensible Markup Language. część 3

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Rola języka XML narzędziem

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

Programowanie i projektowanie obiektowe

XML extensible Markup Language. Paweł Chodkiewicz

Programowanie obiektowe

Zaawansowany kurs języka Python

Rok akademicki: 2013/2014 Kod: ZZIP IN-s Punkty ECTS: 2. Kierunek: Zarządzanie i Inżynieria Produkcji Specjalność: Informatyka w zarządzaniu

XML DTD XML Schema CSS

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz


Informatyka (10) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro

Relacyjne bazy danych a XML

Stwórz dokument XML zawierający poniższe informacje. Wykorzystaj atrybuty.

GML w praktyce geodezyjnej

Wstęp do programowania

Przykładowy dokument XML

Kurs rozszerzony języka Python

Semistrukturalne bazy danych Wykład dla studentów matematyki

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Programowanie i projektowanie obiektowe

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

Bazy Danych i Usługi Sieciowe

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

Jak wygląda XML? Definiowanie typów dokumentów. Struktura logiczna dokumentu XML. Podstawy składni XML. Definiowanie języków. Poprawność dokumentów

Plan prezentacji DTD. Wiązanie DTD z dokumentem XML Deklaracja typu dokumentu. Co to jest DTD. Wstęp. Przedmiot: XML i jego zastosowania

Dokumenty SEDU składają się z dwóch części: Opisu sprawy Formularza elektronicznego

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

XQuery. XQuery. Przykład. dokument XML. XQuery (XML Query Language) XQuery 1.0: An XML Query Language. W3C Recommendation

c TP: anything: 13 listopada 2004 roku 1

XML extensible Markup Language. część 5

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe

Wprowadzenie do XML. Tomasz Przechlewski

Wstęp do programowania

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

Tworzenie Stron Internetowych. odcinek 10

Wstęp do programowania

DTD - encje ogólne i parametryczne, przestrzenie nazw

29. Poprawność składniowa i strukturalna dokumentu XML

Bazy danych i usługi sieciowe

Dlaczego GML? Gdańsk r. Karol Stachura

Środowisko XML (Extensible Markup Language).

HTML DOM, XHTML cel, charakterystyka

XML w.net. Dominik Baś nr alb Wrocław, 29 maja 2007

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD. Struktura logiczna dokumentu XML. Podstawy składni XML. Definiowanie języków

Programowanie obiektowe

Programowanie i projektowanie obiektowe

Kurs HTML 4.01 TI 312[01]

Programowanie i projektowanie obiektowe

Otwarte protokoły wymiany informacji w systemach ITS

Programowanie w Ruby

CouchDB. Michał Nowikowski

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

XML extensible Markup Language 7

Historia kodowania i format plików XML. Jolanta Bachan

Bazy danych i usługi sieciowe

Zaawansowane aplikacje WWW - laboratorium

XHTML - Extensible Hypertext Markup Language, czyli Rozszerzalny Hipertekstowy Język Oznaczania.

Wstęp do programowania

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wybrane problemy z dziedziny modelowania i wdrażania baz danych przestrzennych w aspekcie dydaktyki. Artur Krawczyk AGH Akademia Górniczo Hutnicza

Programowanie obiektowe

O stronach www, html itp..

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

Programowanie Komponentowe WebAPI

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Bazy Danych i Usługi Sieciowe

Wstęp do programowania

XML extensible Markup Language. część 5

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Programowanie obiektowe

Wybrane działy Informatyki Stosowanej

Transkrypt:

Programowanie i projektowanie obiektowe XML Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 1 / 32

Semistrukturalny model danych Nie zawsze jest potrzeba albo możliwość posiadania ściśle zdefiniowanego schematu danych. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 2 / 32

Semistrukturalny model danych Nie zawsze jest potrzeba albo możliwość posiadania ściśle zdefiniowanego schematu danych. W modelu semistrukturalnym dane określają schemat. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 2 / 32

Semistrukturalny model danych przykład P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 3 / 32

Semistrukturalny model danych c.d. Zalety Swoboda w rozszerzaniu i adaptowaniu do nowych potrzeb. Brak ograniczeń wynikających z modelu danych. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 4 / 32

Semistrukturalny model danych c.d. Zalety Wady Swoboda w rozszerzaniu i adaptowaniu do nowych potrzeb. Brak ograniczeń wynikających z modelu danych. Trudność w formułowaniu zapytań. Brak wydajnych implementacji pozwalających na przechowywanie dużych ilości danych. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 4 / 32

Semistrukturalny model danych c.d. Zalety Wady Swoboda w rozszerzaniu i adaptowaniu do nowych potrzeb. Brak ograniczeń wynikających z modelu danych. Trudność w formułowaniu zapytań. Brak wydajnych implementacji pozwalających na przechowywanie dużych ilości danych. Zastosowania Integracja danych pochodzących z różnych źródeł. Adaptacja starych baz danych do nowych potrzeb. Opis dokumentów. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 4 / 32

XML extensible Markup Language Znaczniki określają znaczenie podciągów znaków w dokumencie teksty ujęte w nawiasy kątowe <...> występują w parach otwierający <...> i zamykający </...> Zastosowania Przechowywanie ustrukturyzowanych danych w plikach tekstowych Wymiana danych pomiędzy aplikacjami P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 5 / 32

Tryby dokumentów XML Dobrze sformowany XML Podejście semistrukturalne Dowolne znaczniki Brak ustalonego schematu Ustalony typ dokumentu Podejście pośrednie pomiędzy schematem semistrukturalnym, a ścisłymi (np. relacyjnym) Document Type Definition Specyfikacja dopuszczalnych znaczników Gramatyka zagnieżdżania P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 6 / 32

Dobrze sformowany XML Przykład <? xml v e r s i o n=" 1. 0 " e n c o d i n g=" u t f 8" s t a n d a l o n e=" y e s "?> <e t a t y> <e t a t> <nazwa>p r o f e s o r</nazwa> <placa_ od>3000</ placa_ od> <placa_ do>6000</ placa_ do> </ e t a t> <e t a t>... </ e t a t> </ e t a t y> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 7 / 32

Dokument ustalony Dokument bez specyfikacji typu <? xml v e r s i o n=" 1. 0 " e n c o d i n g=" u t f 8" s t a n d a l o n e=" y e s "?> Nagłówek <? xml v e r s i o n=" 1. 0 " e n c o d i n g=" u t f 8" s t a n d a l o n e="no"?> <!DOCTYPE typdokumentu SYSTEM " s p e c y f i k a c j a. dtd "> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 8 / 32

Dokument ustalony c.d. Przykład <? xml v e r s i o n=" 1. 0 " e n c o d i n g=" u t f 8" s t a n d a l o n e="no"?> <!DOCTYPE E t a t y SYSTEM " e t a t y. dtd "> <e t a t y> <e t a t> <nazwa>p r o f e s o r</nazwa> <placa_ od>3000</ placa_ od> <placa_ do>6000</ placa_ do> </ e t a t> <e t a t>... </ e t a t> </ e t a t y> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 9 / 32

Dokument ustalony c.d. etaty.dtd Deklaracja elementu głównego (korzenia) Deklaracje elementów Deklaracje reguł zagnieżdżania <!DOCTYPE e t a t y [ <!ELEMENT e t a t y ( e t a t )> <!ELEMENT e t a t ( nazwa, placa_od, placa_do )> <!ELEMENT nazwa (#PCDATA)> <!ELEMENT placa_ od (#PCDATA)> <!ELEMENT placa_ do (#PCDATA)> ]> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 10 / 32

Dokument ustalony c.d. Nazwa typu dokumentu: <!DOCTYPE [...]> Nazwy dopuszczalnych elementów <!ELEMENT (...)> Reguły zagnieżdżania dopuszczalnych składowych elementów element (podelement1*, podelement2+, podelement3?,...) Operatory: *: 0 lub więcej +: 1 lub więcej?: co najwyżej raz element (#PCDATA) Typ #PCDATA oznacza dowolny tekst Nie występują typy elementów P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 11 / 32

Przykład Model relacyjny Gwiazdy(nazwisko, adres) Filmy(tytul, rok, dlugosc) GwiazdyW(tytul, rok, nazwiskogwiazdy) Dokument DTD <!DOCTYPE Gwiazdy [ <!ELEMENT gwiazdy ( gwiazda )> <!ELEMENT gwiazda ( nazwisko, a d r e s +, f i l m y )> <!ELEMENT nazwisko (#PCDATA)> <!ELEMENT a d r e s (\#PCDATA)> <!ELEMENT f i l m y ( f i l m )> <!ELEMENT f i l m ( t y t u l, rok, d l u g o s c )> <!ELEMENT t y t u l (\#PCDATA)> <!ELEMENT rok (\#PCDATA)> <!ELEMENT d l u g o s c (#PCDATA)> ]> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 12 / 32

Przykładowe dane <? xml v e r s i o n=" 1. 0 " e n c o d i n g=" u t f 8" s t a n d a l o n e="no"?> <!DOCTYPE Gwiazdy SYSTEM " gwiazdy. dtd "> <gwiazdy> <gwiazda> <nazwisko>c a r r i e F i s c h e r</ nazwisko> <a d r e s>123 Maple St.</ a d r e s> <f i l m y> <f i l m> <t y t u l>gwiezdne Wojny</ t y t u l> <rok>1977</ rok> <d l u g o s c>93</ d l u g o s c> </ f i l m> <f i l m> <t y t u l>imperium K o n t r a t a k u j e</ t y t u l> <rok>1980</ rok> <d l u g o s c>96</ d l u g o s c> </ f i l m> <f i l m> <t y t u l>powrot J e d i</ t y t u l> <rok>1983</ rok> <d l u g o s c>94</ d l u g o s c> P. Daniluk(Wydział</ Fizyki) f i l m> PO w. X Jesień 2013 13 / 32

Przykładowe dane <? xml v e r s i o n=" 1. 0 " e n c o d i n g=" u t f 8" s t a n d a l o n e=" no "?> <!DOCTYPE Gwiazdy SYSTEM " gwiazdy. dtd "> <g w i a z d y> <g w i a z d a> <n a z w i s k o>c a r r i e F i s c h e r</ n a z w i s k o> <a d r e s>123 Maple St.</ a d r e s> <f i l m y> < f i l m> < t y t u l>gwiezdne Wojny</ t y t u l> <r o k>1977</ r o k> <d l u g o s c>93</ d l u g o s c> </ f i l m> < f i l m> < t y t u l>imperium K o n t r a t a k u j e</ t y t u l> <r o k>1980</ r o k> <d l u g o s c>96</ d l u g o s c> </ f i l m> < f i l m> < t y t u l>powrot J e d i</ t y t u l> <r o k>1983</ r o k> <d l u g o s c>94</ d l u g o s c> </ f i l m> </ f i l m y> </ g w i a z d a> <g w i a z d a> <n a z w i s k o>mark H a m i l l</ n a z w i s k o> <adres>456 Oak Rd.</ adres> <adres>789 Pine Av.</ adres> <f i l m y> < f i l m> < t y t u l>imperium K o n t r a t a k u j e</ t y t u l> <r o k>1980</ r o k> <d l u g o s c>96</ d l u g o s c> </ f i l m> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 14 / 32

Dokument ustalony c.d. Zagnieżdżanie znaczników nie pozwala przedstawić wszystkich informacji Atrybuty pozwalają na dodatkowy opis danych Zmniejszenie redundancji Mogą służyć do powiązania pojedynczej wartości ze znacznikiem Alternatywa dla podznaczników, które są zwykłymi tekstami (#PCDATA) Składnia Po deklaracji elementu <!ELEMENT (...)> <!ATTLIST element...> lista atrybutów atrybut1 atrybut2 ID atrybut3 IDREF lub IDREFS P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 15 / 32

Atrybuty przykład Dokument DTD <!DOCTYPE Gwiazdy F i l m y [ <!ELEMENT gwiazdy f i l m y ( gwiazda, f i l m )> <!ELEMENT gwiazda ( nazwisko, a d r e s +)> ]> <! ATTLIST gwi azda g w i a z d a I d ID wystepujew IDREFS> <!ELEMENT nazwisko (\#PCDATA)> <!ELEMENT a d r e s ( u l i c a, miasto )> <!ELEMENT u l i c a (\#PCDATA)> <!ELEMENT miasto (\#PCDATA)> <!ELEMENT f i l m ( t y t u l, rok, d l u g o s c )> <! ATTLIST f i l m f i l m I d ID gwiazdyw IDREFS> <!ELEMENT t y t u l (\#PCDATA)> <!ELEMENT rok (\#PCDATA)> <!ELEMENT d l u g o s c (\#PCDATA)> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 16 / 32

Atrybuty przykład <? xml v e r s i o n=" 1. 0 " e n c o d i n g=" u t f 8" s t a n d a l o n e="no"?> <!DOCTYPE Gwiazdy Filmy SYSTEM " gwiazdy f i l m y. dtd "> <gwiazdy f i l m y> <gwiazda g w i a z d a I d=" c f " wystepujew="gw, ik, p j "> <nazwisko>c a r r i e F i s c h e r</ nazwisko> <a d r e s> <u l i c a>123 Maple St.</ u l i c a> <miasto>hollywood</ miasto> </ a d r e s> </ gwiazda> <gwiazda g w i a z d a I d="mh" wystepujew=" ik, p j "> <nazwisko>mark H a m i l l</nazwa> <a d r e s> <u l i c a>456 Oak Rd.</ u l i c a> <miasto>malibu</ miasto> </ a d r e s> <a d r e s> <u l i c a>123 Pine Av.</ u l i c a> <miasto>brentwood</ miasto> </ a d r e s> </ gwiazda> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 17 / 32

Atrybuty przykład <f i l m f i l m I d="gw" gwiazdyw=" c f "> <t y t u l>gwiezdne Wojny</ t y t u l> <rok>1977</ rok> <d l u g o s c>93</ d l u g o s c> </ f i l m> <f i l m f i l m I d=" i k " gwiazdyw=" cf, mh"> <t y t u l>gwiezdne Wojny</ t y t u l> <rok>1980</ rok> <d l u g o s c>96</ d l u g o s c> </ f i l m> <f i l m f i l m I d=" p j " gwiazdyw=" cf, mh"> <t y t u l>powrot J e d i</ t y t u l> <rok>1983</ rok> <d l u g o s c>94</ d l u g o s c> </ f i l m> </ gwiazdy f i l m y> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 18 / 32

Document Object Model DOM Konwencja opisu dokumentu XML (HTML, XHTML) pozwalająca na dostęp do poszczególnych elementów oraz wprowadzanie zmian w dokumencie. Implementacje w przeglądarkach webowych (JavaScript) oraz bibliotekach obsługujących pliki XML. W Pythonie moduł xml.dom. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 19 / 32

xml.dom podstawowe API Klasy Document Cały dokument Node Klasa, z której dziedziczą składniki dokumentu Element Elementy XML Attr Atrybuty elementów Comment Komentarze Text Napisy (tekstowa zawartość elementów) P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 20 / 32

xml.dom.minidom minimalistyczna implementacja DOM Funkcje xml.dom.minidom.parse(filename_or_file) Wczytuje dokument z pliku lub obiektu plikowego xml.dom.minidom.parsestring(string) Wczytuje dokument z napisu Przykład >>> d=xml.dom.minidom.parsestring("<node>text</node>") >>> d <xml.dom.minidom.document instance at 0x105bed638> >>> d.documentelement <DOM Element: node at 0x105bed680> >>> d.documentelement.tagname u node >>> d.documentelement.childnodes [<DOM Text node "u Text ">] P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 21 / 32

Modyfikacje DOM >>> newel=d.createelement( extranode ) >>> nodetext=d.documentelement.childnodes[0] >>> d.documentelement.insertbefore(newel, nodetext) <DOM Element: extranode at 0x105bed3f8> >>> newel=d.createelement( extranode ) >>> d.documentelement.appendchild(newel) <DOM Element: extranode at 0x105ac7320> >>> d.documentelement.childnodes [<DOM Element: extranode at 0x105bed3f8>, <DOM Text node "u Text ">, <DOM Element: e >>> d.documentelement.childnodes[0].appendchild(d.createtextnode( Extra1 )) <DOM Text node " Extra1 "> >>> d.documentelement.childnodes[2].appendchild(d.createtextnode( Extra2 )) <DOM Text node " Extra2 "> >>> d.documentelement.toxml() u <node><extranode>extra1</extranode>text<extranode>extra2</extranode></node> >>> d.documentelement.removechild(nodetext) <DOM Text node "u Text "> >>> d.documentelement.toxml() u <node><extranode>extra1</extranode><extranode>extra2</extranode></node> >>> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 22 / 32

Wyszukiwanie tree.xml <!DOCTYPE t r e e [ <!ATTLIST node i d ID #IMPLIED>]> <t r e e> <node t y p e=" domain " i d=" B a c t e r i a "></ node> <node t y p e=" domain " i d=" Archaea "></ node> <node t y p e=" domain " i d=" Eukaryota "> <node t y p e=" s u p e r g r o u p " i d=" A r c h a e p l a s t i d a "></ node> <node t y p e=" s u p e r g r o u p " i d=" O p i s t h o k o n t a "> <node t y p e=" kingdom " i d=" Fungi "> <node t y p e=" genus " i d="muchomorek"></ node> </ node> <node t y p e=" kingdom " i d=" A n i m a l i a "> <node t y p e=" t y p e " i d=" Chordata "> <node t y p e=" c l a s s " i d=" Amphibia "> <node t y p e=" genus " i d=" Z i e l o n a zabka "></ node> </ node> <node t y p e=" c l a s s " i d=" S a u r o p s i d a "></ node> <node t y p e=" c l a s s " i d=" Aves "></ node> <node t y p e=" c l a s s " i d=" S y n a p s i d a "></ node> <node t y p e=" c l a s s " i d="mammalia"> <node t y p e=" genus " i d=" Myszka mala "></ node> </ node> </ node> <node t y p e=" t y p e " i d=" Arthropoda "></ node> P. Daniluk(Wydział </ Fizyki) node> PO w. X Jesień 2013 23 / 32

Wyszukiwanie c.d. >>> d=xml.dom.minidom.parse( tree.xml ) >>> myszka=d.getelementbyid( Myszka mala ) >>> myszka <DOM Element: node at 0x105be4a28> >>> x=myszka >>> while x.tagname== node :... res.append(x)... x=x.parentnode... >>> res [<DOM Element: node at 0x105be4a28>, <DOM Element: node at 0x105bed128>, <DOM Element: node at 0x105bf1248>, <DOM Element: node at 0x105bf0f80>, <DOM Element: node at 0x105bf07a0>, <DOM Element: node at 0x105bf0290>] >>> [(x.getattribute( type ), x.getattribute( id )) for x in res] [(u genus, u Myszka mala ), (u class, u Mammalia ), (u type, u Chordata ), (u kingdom, u Animalia ), (u supergroup, u Opisthokonta ), (u domain, u Eukaryota )] >>> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 24 / 32

gnosis.xml http://www.gnosis.cx/download/gnosis_utils.more/gnosis_ Utils-1.2.2.tar.gz Moduł służący do konwersji XML na hierarchie zwykłych obiektów. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 25 / 32

gnosis.xml c.d. Przykład >>> d=objectify.make_instance("tree1.xml") >>> d <tree id="107256890"> >>> d. dict _seq : [u \n, <node id="1072568d0">, u \n, <node id="107256850">, u \n, <node id="107256950">, u \n ], node : [<node id="1072568d0">, <node id="107256850">, <node id="107256950">], PCDATA :, parent : None >>> d.node [<node id="1072568d0">, <node id="107256850">, <node id="107256950">] >>> d.node[0]. dict u type : u domain, u id : u Bacteria, parent : <tree id="107256890"> >>> [x.id for x in d.node] [u Bacteria, u Archaea, u Eukaryota ] P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 26 / 32

gnosis.xml c.d. Wypisywanie >>> objectify.utils.write_xml(d) <tree> <node type=domain id=bacteria></node> <node type=domain id=archaea></node> <node type=domain id=eukaryota> <node type=supergroup id=archaeplastida></node> <node type=supergroup id=opisthokonta> <node type=kingdom id=fungi> <node type=genus id=muchomorek></node> </node> <node type=kingdom id=animalia>... </node> </node> </node> </tree>>>> >>> d.label="tree of life" >>> objectify.utils.write_xml(d) <tree label=tree of life> <node type=domain id=bacteria></node>... P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 27 / 32

gnosis.xml c.d. Obchodzenie drzewa >>> objectify.utils.walk_xo(d) <generator object walk_xo at 0x107315b90> >>> list(objectify.utils.walk_xo(d)) [<tree id="107256890">, <node id="1072568d0">, <node id="107256850">, <node id="107256950">, <node id="1072569d0">, <node id="107256b10">, <node id="107256b50">, <node id="107256b90">, <node id="107256bd0">, <node id="107256c10">, <node id="107256c50">, <node id="107256c90">, <node id="107256cd0">, <node id="107256d10">, <node id="107256d50">, <node id="107256d90">, <node id="107256dd0">, <node id="107256e10">] >>> P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 28 / 32

Czym są elementy dokumentu w gnosis.xml? >>> d. class <class gnosis.xml.objectify._objectify._xo_tree > >>> d.node[0]. class <class gnosis.xml.objectify._objectify._xo_node > P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 29 / 32

Czym są elementy dokumentu w gnosis.xml? >>> d. class <class gnosis.xml.objectify._objectify._xo_tree > >>> d.node[0]. class <class gnosis.xml.objectify._objectify._xo_node > Obiekty mogą mieć metody. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 29 / 32

Czym są elementy dokumentu w gnosis.xml? >>> d. class <class gnosis.xml.objectify._objectify._xo_tree > >>> d.node[0]. class <class gnosis.xml.objectify._objectify._xo_node > Obiekty mogą mieć metody. >>> def node_repr(self):... return " "+self.type+": "+self.id+" "... >>> gnosis.xml.objectify._xo_node. repr =node_repr P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 29 / 32

Czym są elementy dokumentu w gnosis.xml? >>> d. class <class gnosis.xml.objectify._objectify._xo_tree > >>> d.node[0]. class <class gnosis.xml.objectify._objectify._xo_node > Obiekty mogą mieć metody. >>> def node_repr(self):... return " "+self.type+": "+self.id+" "... >>> gnosis.xml.objectify._xo_node. repr =node_repr W00t >>> list(objectify.utils.walk_xo(d)) [<tree id="107256890">, domain: Bacteria, domain: Archaea, domain: Eukaryota, supergroup: Archaeplastida, supergroup: Opisthokonta, kingdom: Fungi, genus: Muchomorek, kingdom: Animalia, type: Chordata, class: Amphibia, genus: Zielona zabka, class: Sauropsida, class: Aves, class: Synapsida, class: Mammalia, genus: Myszka mala, type: Arthropoda ] P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 29 / 32

Czym są elementy dokumentu w gnosis.xml? Można a priori zdefiniować klasy odpowiadające elementom. c l a s s Node ( g n o s i s. xml. o b j e c t i f y._xo_) : d e f r e p r ( s e l f ) : r e t u r n " "+s e l f. t y p e+" : "+s e l f. i d+" " g n o s i s. xml. o b j e c t i f y. _XO_node=Node P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 30 / 32

Zadanie 1,2 Edycja dokumentu Zadanie Dopisz kilka ulubionych taksonów do tree.xml. Wykonaj to przy pomocy xml.dom.minidom i gnosis.xml. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 31 / 32

Zadanie 3 Bakterie Zadanie Opisz format dokumentu XML przechowującego stan szalki Petriego z poprzednich zajęć (informacje o zdarzeniach, które mają zajść pomijamy). Zrealizuj możliwość startu symulacji od wczytanego stanu. P. Daniluk(Wydział Fizyki) PO w. X Jesień 2013 32 / 32