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



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

Zaawansowany kurs języka Python

Rola języka XML narzędziem

Wykorzystywanie parsera DOM w programach Java i PL/SQL

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

XML extensible Markup Language. Paweł Chodkiewicz

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

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

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

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Wprowadzenie do technologii XML

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

GML w praktyce geodezyjnej

Kurs rozszerzony języka Python

XML DTD XML Schema CSS

mgr inż. Jacek Staniec Język XML

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

XML i nowoczesne technologie zarządzania treścią

Ministerstwo Finansów

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

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

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

Komunikacja i wymiana danych

Spis treści Informacje podstawowe Predykaty Przykłady Źródła RDF. Marek Prząda. PWSZ w Tarnowie. Tarnów, 6 lutego 2009

Procesowanie dokumentów XML

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

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

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

DTD - encje ogólne i parametryczne, przestrzenie nazw

XML. XML (ang. Extensible Markup Language) - Rozszerzalny język znaczników. Aktualna wersja 1.0 (1.1 czeka na akceptację) Należy do rodziny SGML.

Model semistrukturalny

2 Podstawy tworzenia stron internetowych

<html> </html> <body> </body> <p> [</p>] <br> <html> <head> </head> <body> </body> </html> Materiały dydaktyczne 1/5

Narzędzia informatyczne w językoznawstwie

Technologie zarządzania treścią

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

KARTA KURSU. Przetwarzanie dokumentów XML i zaawansowane techniki WWW

Zaawansowane aplikacje WWW - laboratorium

O stronach www, html itp..

Otwarte protokoły wymiany informacji w systemach ITS

Biblioteki dzielone, XML i readline

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

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

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

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

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Złożone komponenty JSF wg

Podstawy XML-a. Zaawansowane techniki programowania

Programowanie i projektowanie obiektowe

Bazy danych i strony WWW

Programowanie Komponentowe WebAPI

OfficeObjects e-forms

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

Zaawansowany kurs języka Python

Tom 6 Opis oprogramowania

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Kazienko P.: Rodzina języków XML. Software nr 6 (90) czerwiec 2002, s Rodzina języków XML. Przemysław Kazienko

HTML DOM, XHTML cel, charakterystyka

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

Rozszerzenie funkcjonalności systemów wiki w oparciu o wtyczki i Prolog

Programowanie internetowe

rk HTML 4 a 5 różnice

The Binder Consulting

Format danych adnotacji do tytułów wykonawczych przekazywanych do organów egzekucyjnych przez epuap w związku ze zbiegiem egzekucji

Złożone komponenty JSF wg

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

Wybrane działy Informatyki Stosowanej

METODY REPREZENTACJI INFORMACJI

Środowisko XML (Extensible Markup Language).

1. CZYM JEST SERIALIZACJA

Steganografia w HTML. Łukasz Polak

Tworzenie Stron Internetowych. odcinek 1

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

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

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

OfficeObjects e-forms

Podstawy JavaScript ćwiczenia

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

1 XML w bazach danych

Web frameworks do budowy aplikacji zgodnych z J2EE

Metaprogramowanie w Ruby

Sphinx - system dokumentacji dla Pythona

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Kurs HTML 4.01 TI 312[01]

dlibra 3.0 Marcin Heliński

Tworzenie Stron Internetowych. odcinek 1

IDEA TWORZENIA DOKUMENTÓW W FORMACIE XML

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

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Facelets ViewHandler

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

Programowanie i projektowanie obiektowe

Przykładowy dokument XML

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Transkrypt:

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

XML 2

XML XML jest formatem tekstowym Zjadliwy dla ludzi Zawiera treść (dane) oraz znaczniki (markup) Znaczniki i zależności między nimi określają reguły/strukturę Istnieją podstawowe strukturalne reguły określające poprawną strukturę pliku XML (tzw. validity) Dodatkowe reguły mogą byś określane przez: Document Type Defintion, DTD, lub XML Schema Definition, XSD 3

HTML XML XHTML 4

XML w 10 punktach 1. XML służy do określania danych i ich struktury XML jest zbiorem reguł ( And thirdly, the code is more what you call guidelines than actual rules * ) do projektowania formatów tekstowych, które pozwalają na określanie ich struktury. XML nie jest językiem programowania nie trzeba być programistą, żeby go używać. XML daje łatwość generacji, czytania i zapewnienia poprawności struktury danych. XML jest: rozszerzalny, niezależny od platformy, wspiera lokalizację i internacjonalizację, w pełni zgodny z UNICODE. 2. XML wygląda podobnie do HTML Podobnie jak HTML, XML używa znaczników (tags słów zamkniętych w nawiasach '<' i '>') oraz atrybutów (attributes w postaci name="value"). W odróżnieniu od HTML, gdzie każdy tag przekłada się na wygląd w przeglądarce WEB, w XML używa tags do rozdzielania danych pozostawiając ich interpretację aplikacji. 3. XML jest tekstowy, ale nie znaczy, że jest do czytania Dotychczas większość programów (arkusze kalkulacyjne, książki adresowe, etc.) przechowywały dane na dysku w formacie binarnym lub własnym tekstowym. Zaletą formatów tekstowych jest ich potencjalna możliwość ich edycji przez człowieka (są też łatwiejsze do debuggowania). Na podstawie: http://www.w3.org/xml/1999/xml-in-10-points *wg. kapitana Barbossa z Pirates of the Caribbean: The Curse of the Black Pearl 5

XML w 10 punktach 4. XML jest z definicji rozgadany Z tego względu XML zajmuje więcej miejsca niż zapis binarny była to decyzja projektowa! Zalety otwartego formatu tekstowego przeważa nad wadami związanymi ze zwiększoną objętością. Poza tym zawsze możliwa jest kompresja całych plików XML (np. ZIP, GZIP). W dodatku najpopularniejszy obecni protokół komunikacyjny HTTP, potrafi kompresować/rozkompresowywać dane w locie. 5. XML jest zestawem technologii XML 1.0 określało znaczenie "tags i "attributes". Kolejne odsłony specyfikacji określiły całą rodzinę formatów XML do realizacji usług na plikach XML. Przykłądowo: XLink określił standardowy sposób dodawania hyperlinks do plików XML; Xpointer składnię wskaźników dla plików XML (np. do określonych miejsc w dokumencie XML); CSS Cascaded Style Sheet dla XML oraz XHTML określa sposób definiowania prezentacji danych XML; XSTL język transformacji plików XML; etc. 6. XML jest nowy, choć nie tak nowy Powstawanie XML rozpoczęło się w 1996 i zostało zarekomendowane przez W3C w 1998. Faktycznie ojcem XML był SGML zdefiniowany jako standard ISO w 1986 i używany w dużych projektach dokumentacyjnych. XML jest koncepcyjnie oparty na SGML, ale czerpie też z doświadczeń HTML. 6

XML w 10 punktach 7. XML przekształcił HTML w XHTML Ważną aplikacją XML jest XHTML następca HTML określony przez W3C. XHTML zawiera niemal wszystkie elementy HTML, ale dokłada do tego wymagania poprawnej struktury XML. 8. XML jest modułowy XML pozwala na definiowanie nowego formatu danych przez użycie zdefiniowanych poprzednio. Zastosowanie przestrzeni nazw pozwala na łączenie różnych plików XML bez niebezpieczeństwa konfliktu nazw. 9. XML jest podstawą dla RDF i Semantic Web W3C's RDF (Resource Description Framework) jest formatem XML służącym do opisywania zasobów i metadanych o aplikacjach (np. playlists, kolekcje zdjęć, bibliografie). Przykładowo RDF umożliwia identyfikację osób w albumie fotograficznym Web przy użyciu danych z twojej listy kontaktów. Tego typu integracja danych i informacji rozsianych po WEB jest określana mianem Semantic Web. 10. XML jest license-free i niezależne od platformy (przenośne) XML jest obecnie wszędzie! Dzięki swojej przenośności i dostępności ustandaryzowanych narządzi (interfejsów) pozwala szybko i sprawnie tworzyć, czytać, przesyłać i przetwarzać dane XML. 7

XML www.usgovxml.com 8

OpenOffice format ODF MS Office format OOXML 9

Tagi <foo> 1 <bar> Ala ma kota </bar> </foo> 2 1 tag startowy (otwierający) 2 tag końcowy (zamykający) Tagi MUSZĄ by w XML sparowane, każdy tag otwierający musi mieć odpowiedni tag zamykający. Pierwszy tag w dokumencie XML jest zwany Root element inne tagi muszą być w nim zawarte Tag pusty: <foo></foo> <foo/> 10

Atrybuty <foo lang='en'> 1 <bar id='papayawhip' lang="fr"></bar> 2 </foo> 1 element foo ma jeden atrybut o nazwie lang. Wartością atrybutu lang jest en. 2 element bar ma dwa atrybuty. Nazwy atrybutów są lokalne dla każdego elementu (tj. mogą się powtarzać dla innych). Kolejność atrybutów nie ma znaczenia Może ich być dowolnie wiele 11

XML <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE presentation SYSTEM "presentations.dtd"> <presentation xmlns="http://presentations.com/slides"> <info> <title>xml in Python Tutorial</title> <author>alexandre Fayolle</author> </info> <section title="intro"> <slide title="xml"> <list> <item>xml Extensible Markup Language</item> <item>xml is used everywhere</item> </list> </slide> </section> </presentation> 12

Moduły Pythona do XML Moduł xml zawiera: xml.sax, xml.sax.saxutils xml.dom, xml.dom.minidom, xml.dom.pulldom xml.etree.elementtree Dwa poziomy wsparcie XML w Pythonie (oba oparte na standardach w tej dziedzinie): SAX (Simple API for XML) oparte na zdarzeniowym paradygmacie przetwarzania plików XML. Dokument XML jest czytany sekwencyjne, a napotkane elementy wywołują zdarzenia obsługiwane przez aplikację realizującą przetwarzanie. DOM (Document Object Model) buduje pełną strukturę drzewa dokumentu XML. Raz utworzona struktura DOM zapewnia interfejs do poruszania się po niej oraz jej odczytu modyfikacji. 13

Moduły Pythona do XML c.d. xml.sax parser SAX nadaje się prostszych zadań przetwarzania XML i ew. do rozbijania duuużych XML na mniejsze łatwiejsze do zarządzania kawałki. xml.dom parser DOM a pełny interfejs Document Object Model określony przez World Wide Web Consortium (W3C). xml.minidom nieco okrojona (mniejsza, szybsza) wersja DOM. xml.pulldom pozwala na budowę fragmentów struktury DOM w oparciu o parser SAX. xml.etree parser a la DOM z rozbudowanymi możliwościami przeszukiwania XPATH. 14

SAX Typowe program przetwarzania XML za pomocą SAX: 1. Definiujesz własną podklasę xml.sax.contenthandler (zwaną dalej ContentHandler) 2. Tworzysz instancję parsera xml.sax.parser i przekazujesz mu instancję swojego ContentHandler 3. Ustawiasz ew. opcje parsowania 4. Wywołujesz parser na dokumencie XML 15

Przykład z xml.sax import xml.sax class DumpDetails( xml.sax.contenthandler ): def init ( self ): self.depth= 0 self.tablecount= 0 def startelement( self, aname, someattrs ): print self.depth*' ' + aname self.depth += 1 if aname == 'informaltable': self.tablecount += 1 def endelement( self, aname ): self.depth -= 1 def characters( self, content ): pass # ignore the actual data p = xml.sax.make_parser() myhandler = DumpDetails() p.setcontenthandler( myhandler ) p.parse( "dokument.xml") print myhandler.tablecount, "tables" Na podstawie: Steven F. Lott, Building Skills in Python, Release 2.6.5, 2010 16

SAX ContentHandler Podklasa ContentHandler jest sercem przetwarzania dla parsera SAX. Zawiera wiele metod wywoływanych przez SAX w czasie parsowania elementów XML. Minimalnie należy zapewnić metody startelement() i characters() Wybrane metody ContentHandler: startdocument() metoda wołana na początku parsowanego dokumentu; można jej użyć do resetowani kontekstu naszej aplikacji przetwarzającej. enddocument() metoda wołana na początku parsowanego dokumentu. 17

SAX ContentHandler c.d. Wybrane metody ContentHandler: startelement(name, attrs) wołana w momencie znalezienia tagu (w trybie non-namespace); name jest stringiem z nazwą tagu,. attrs są parametrami tego tagu (obiekt xml.sax.attributes). UWAGA: obiekty są przez parser ponownie używane (czyli interesującą nas zawartość należy skopiować)! Obiekt xml.sax.attributes przypomina słownik, ale nie wspiera operatora [], za to wspiera get(), has_key(), items(), keys(), values(). endelement(name) wołana w momencie znalezienia zakończenia tagu (w trybie nonnamespace); startelementns(name, qname, attrs) wołana w momencie znalezienia tagu (w trybie namespace); Tryb namespaced jest włączany funkcją: setfeature( xml.sax.handler.feature_namespaces, True ); name jest parą: (URI, tag); qname jest pełną nazwą użytą w dokkumencie XML; pozostałe jak w startelement() endelementns(name, qname) jak endelement() ale dla trybu namespace. characters(content) wołana z danymi będącymi zawartością tagu. ignorablewhitespace(whitespace) wołana ze pustą przestrzenią (whitespace) czyli znakami pustymi pomiędzy znacznikami. processinginstructions(target, data) wołana przy napotkaniu instrukcji sterujących np.: <? target data?>. UWAGA: zwykle pierwsza linia dokumentu XML o postaci <?xml version="1.0" encoding="utf-8"?> nie jest raportowania. 18

DOM DOM (Document Object Model) jest interfejsem programistycznym do drzewiastej struktury danych sparsowanego dokumentu XML (dostępne są implementacje DOM dla większości języków programowania: C/C++, Java, JavaScript, etc.). DOM nie specyfikuje sposobu parsowania XML, a jedynie hierarchię klas i sposób dostępu do danych. 19

Przykład dla xml.sax # File saxparse.py import xml.sax.handler class BookHandler(xml.sax.handler.ContentHandler): def init (self): self.intitle = False def startelement(self, name, attributes): if name == 'title': self.intitle = True def characters(self, data): if self.intitle: print(data) def endelement(self, name): if name == 'title': self.intitle = False import xml.sax parser = xml.sax.make_parser() handler = BookHandler() parser.setcontenthandler(handler) parser.parse('mybooks.xml') 20

Przykład dla xml.dom.minidom # File domparse.py from xml.dom.minidom import parse, Node xmltree = parse('mybooks.xml') for node1 in xmltree.getelementsbytagname('title'): for node2 in node1.childnodes: if node2.nodetype == Node.TEXT_NODE: print(node2.data) 21

Pisanie XML po prostu print print domyślne kodowanie dla XML to UTF-8 ALE UWAGA na encje! A & A & < < > > (at least in ]]>) ' &apos; (in attributes quoted with ') " " (in attributes quoted with ") Budowa struktury DOM za pomocą xml.dom, a następnie jej zapis Encje XML/HTML patrz: http://en.wikipedia.org/wiki/list_of_xml_and_html_character_entity_references 22

Pisanie XML za pomocą DOM Budowa struktury DOM za pomocą xml.dom, a następnie jej zapis xxx print doc.toprettyxml() 23