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



Podobne dokumenty
Narzędzia informatyczne w językoznawstwie

Zaawansowany kurs języka Python

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

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

Dzisiejszy wykład. Narzędzia informatyczne w językoznawstwie. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

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

Dzisiejszy wykład. Programowanie w Perlu. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

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

Kurs rozszerzony języka Python

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1

Wykorzystywanie parsera DOM w programach Java i PL/SQL

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

XML extensible Markup Language 7

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

OSIOŁKOWI W ŻŁOBY DANO...

Narzędzia informatyczne w językoznawstwie

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

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

Wyrażenia regularne w Perlu. Narzędzia informatyczne w językoznawstwie. Przykład bardziej sensowny perlowy minigrep.pl. Pierwsze przykłady

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

System operacyjny Linux

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

!!" % & $ ( # # ( ( # ( ( TalentowiSKO talenty dodajemy, mnoīymy, potċgujemy. TalentowiSKO@bankbps.pl tel TalentowiSKO.

METODY REPREZENTACJI INFORMACJI

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

Środowisko publikacyjne oparte na XML-u. Szymon Zioło 1 maja 2004

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

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Modele dostępu do dokumentu XML. Implementacja modelu parser. SAX2 pakiet org.xml.sax. Działanie modelu SAX przykład

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

Procesowanie dokumentów XML

Systemy operacyjne. Laboratorium 8. Perl find

XML i nowoczesne technologie zarządzania treścią 2007/08


Programowanie obiektowe w Perlu

Rola języka XML narzędziem

Model semistrukturalny

Podstawy programowania skrót z wykładów:

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 05

Rys.2.1. Drzewo modelu DOM [1]

SAX2 pakiet org.xml.sax

Biblioteki dzielone, XML i readline

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

HTML DOM, XHTML cel, charakterystyka

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

10. Translacja sterowana składnią i YACC

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy Kompilatorów

Dostosowywanie wyglądu aplikacji czytelnika w oparciu o oprogramowanie dlibra 5.0

DTD - encje ogólne i parametryczne, przestrzenie nazw

Pliki. Operacje na plikach w Pascalu

Język programowania PASCAL

DOM (Document Object Model)

Podstawy XML-a. Zaawansowane techniki programowania

Wykład PASCAL - Pliki tekstowe

Metody Kompilacji Wykład 3

XML i nowoczesne technologie zarządzania treścią

Tworzenie raportów XML Publisher przy użyciu Data Templates

Uproszczony schemat działania kompilatora

Dokumentacja API BizIn

Podstawy JavaScript ćwiczenia

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

PHP. Tematyka wykładów: Język PHP PHP i bazy danych Rozszerzenia PHP

Co to jest Perl? Narzędzia informatyczne w językoznawstwie. Dlaczego właśnie Perl? Krótka historia Perl

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Narzędzia informatyczne w językoznawstwie

Wykład 0 Informacje Podstawowe

Narzędzia informatyczne w językoznawstwie

The Binder Consulting

Tomasz Grześ. Systemy zarządzania treścią

Dlaczego GML? Gdańsk r. Karol Stachura

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Wszystko na temat wzoru dokumentu elektronicznego

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

ANKIETER wersja tworzenie kwestionariusza

Zaawansowane aplikacje WWW - laboratorium

Co to jest Perl? Programowanie w Perlu. Dlaczego właśnie Perl? Krótka historia Perl

Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. matt@gynsoft.net

Wykład 6 Dziedziczenie cd., pliki

Zasady programowania Dokumentacja

Wykład I. Wprowadzenie do baz danych

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

Metody dostępu do danych

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Ada95 przetwarzanie rozproszone

Ada95 przetwarzanie rozproszone

Drzewa DOM. Maciej Zakrzewicz.

Dokumentacja API BizIn

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

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Wprowadzenie do programowania

libxml2 parser DOM dla C++ czwartek, 8 grudnia 11

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Instrukcja laboratoryjna nr.2

Transkrypt:

Perl a XML Narzędzia informatyczne w językoznawstwie Perl - Przetwarzanie XML Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 31 modułów w CPAN zawiera w nazwie skrót XML Perl jest językiem przeznaczonym do przetwarzania tekstu Dokumenty XML to pliki tekstowe Perl jest silnie związany z WWW, podobnie jak XML 7. maja 2008 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 1/1 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/1 Generowanie danych XML Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów na piechotę. Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu. W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne. Można wtedy korzystać z tzw. here-documents. here-document to zapis, który mówi, że od nowej linii po identyfikatorze poprzedzonym znakami << aż do kolejnego napotkania identyfikatora należy traktować wszystko jako tekst ujęty w podwójnym cudzysłowie. Wewnątrz here-document działa interpolacja zmiennych. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/1 Generowanie danych XML - Przykład 1 my @ persons = ( f_name => " Tomasz ", s_name => " Kowalski ", f_name => " Bartosz ", s_name => " Nowak " ); my $xml = " <? xml version =\"1.0\"? >\ n"; $xml.= "<workers >\n"; foreach my $person ( @ persons ) $xml.= << XMLEND ; 10 <person > <f_name > $person - > f_name </ f_name > <s_name > $person - > s_name </ s_name > </ person > XMLEND 1 $xml.= " </ workers >\n"; print $xml ; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/1

Wczytywanie danych XML - Co to jest parser? Parsery odtwarzające strukturę drzewiastą dokumentu Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML. Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera. Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem. W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków. Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML. Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach. Cały dokument XML jest konwertowany na pojedynczą strukturę danych. Podobnie jak sam dokument XML ta struktura danych ma strukturę drzewa, w którym węzły reprezentują elementy, atrybuty, dane tekstowe i inne fragmenty dokumentu XML. Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów. Cała struktura danych jest przechowywana w pamięci, w przypadku dużych dokumentów XML może to stanowić poważny problem. Struktura danych może zajmować do 30 razy tyle pamięci co postać tekstowa dokumentu XML. Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie /1 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/1 Parsery strumieniowy / zdarzeniowe Parsery strumieniowe nie budują drzewa w pamięci, tylko generują strumień zdarzeń, które są przechwytywane oraz przetwarzane na bieżąco przez tzw. funkcje callback. Różnym zdarzeniom przydziela się różne funkcje callback. Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp. Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu. Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu. Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 7/1 Standardowe sposoby przetwarzania XML Standardowymi interfejsami do parserów XML dla różnych języków programowania są np. DOM (Document Object Model) oraz SAX (Simple API for XML). Odpowiadają im moduły XML::DOM oraz XML::SAX. XML::DOM to interfejs do drzewiastej struktury dokumentu. XML::SAX obsługuje parsery strumieniowe. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/1

Przykład dokumentu XML (leksykon.xml) Moduł XML::DOM <?xml version="1.0" encoding="utf-8"?> <leksykon> <wpis nr="1"> <lemat>analiza</lemat> <informacje> <część_mowy>rzeczownik</część_mowy> <rodzaj>żeński</rodzaj> <semantyka>process</semantyka> </informacje> <formy> <forma p="mian" l="1">analiza</forma> <forma p="dop" l="1">analizy</forma>... </formy> </wpis>... </leksykon> <forma p="cel" l="1">analizie</forma> 1 use XML :: DOM ; use Data :: Dumper ; my $parser = new XML :: DOM :: Parser ; my $doc = $parser -> parsefile (" leksykon. xml "); my $nodes = $doc - > getelementsbytagname (" forma "); my $n = $nodes -> getlength (); for ( my $i = 0; $i < $n; $i ++) 10 my $text = $nodes -> item ($i)-> getfirstchild (); my $forma = $text - > getnodevalue (); my $przy = $nodes -> item ($i)-> getattribute ("p"); print " Forma : $forma - Przypadek : $przy \ n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/1 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/1 Moduł XML::SAX XML::Simple 1 use XML : : SAX : : Expat ; my $parser = XML : : SAX : : Expat >new ( Handler => MyHandler >new ( ) ) ; my $ r e f = $ p a r s e r >p a r s e f i l e ( l e k s y k o n. xml ) ; package MyHandler ; sub new my $ t y p e = shift ; my $ o b j = data => ; return bless $obj, $type ; 10 sub s t a r t e l e m e n t if ( $prop >Name eq forma ) 1 $ s e l f >data >last = forma ; $ s e l f >data >t e x t = ; $ s e l f >data >p r z y p a d e k = $prop > A t t r i b u t e s > p > Value ; 20 sub c h a r a c t e r s if ( $ s e l f >data >last eq forma ) $ s e l f >data >t e x t.= $prop >Data ; 2 sub e n d e l e m e n t if ( $prop >Name eq forma ) print Forma : $ s e l f >data >text Przypadek : $ s e l f >data >przypadek\n ; 30 $ s e l f >data >last = ; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/1 XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML. Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML. Jest to interfejs oparty na strukturze drzewiastej dokumentu. Nie ma jednak typowego interfejsu jak w przypadku XML::DOM. Dostęp do węzłów odbywa się za pomocą zwykłych zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów. XML::Simple nie radzi sobie z mieszaną treścią, tzn. gdy element zawiera tekst w którym pojawiają się inne elementy. Np. <element> To jest <b>przykład</b> </element> zwraca dziwne wyniki. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/1

Moduł XML::Simple Wczytywanie dokumentów XML za pomocą XML::Simple my $xml = new XML :: Simple ( ForceArray = > 1); my $data = $xml -> XMLin (" leksykon. xml "); foreach my $wpis (@ $data - > wpis ) my $formy = $wpis - > formy - >[0] - > forma ; foreach my $forma ( @ $formy ) my $f = $forma - > content ; 10 my $p = $forma - >p; print " Forma : $f - Przypadek : $p\n"; 1 $VAR1 = wpis => [ informacje => [ semantyka => [ p r o c e s s ], czesc mowy => [ r z e c z o w n i k ], r o d z a j => [ meski ] ], formy => [ forma => [ 10 p => mian, c o n t e n t => a n a l i z a 1 p => dop, c o n t e n t => a n a l i z y 20 p => c e l, c o n t e n t => a n a l i z i e ] ], 2 lemat => [ a n a l i z a ], nr => 1 ] ; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/1 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/1 Tworzenie dokumentów XML za pomocą XML::Simple Kontrolowanie działania modułu XML::Simple use Data :: Dumper ; my $xml = new XML :: Simple ( ForceArray = > 1); my $data = $xml -> XMLin (" leksykon. xml "); print Dumper ( $data ); print $xml -> XMLout ( $data ); my $xml = new XML :: Simple ( ForceArray => [ " wpis " ], GroupTags => " formy " => " forma ", ); my $data = $xml -> XMLin (" lex. xml "); 10 foreach my $wpis (@ $data - > wpis ) foreach my $forma (@ $wpis - > formy ) my $f = $forma - > content ; my $p = $forma - >p; print " Forma : $f - Przypadek : $p\n"; 1 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 1/1 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/1

Wczytywanie dokumentów XML za pomocą XML::Simple 1 $VAR1 = wpis => [ informacje => semantyka => p r o c e s s, czesc mowy => rzeczownik, r o d z a j => meski formy => [ 10 p => mian, c o n t e n t => a n a l i z a 1 p => dop, c o n t e n t => a n a l i z y 20 p => c e l, c o n t e n t => a n a l i z i e ], lemat => a n a l i z a, nr => 1 2 ] ; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/1 Inne przydatne moduły do przetwarzanie XML XML::Twig XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń. Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów. W ten sposób umożliwia wczytywanie dużych dokumentów, dla których są tworzona gałęzie (twigs) a nie całe drzewa. XML::Dumper Moduł podobny do Data::Dumper oraz XML::Simple Tworzy XML-ową reprezentację struktur danych w Perlu. Konstrukcje nie zawsze czytelne (np. struktury cykliczne) Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/1