• Nie Znaleziono Wyników

Narzędzia informatyczne w językoznawstwie Perl - Przetwarzanie XML Marcin Junczys-Dowmunt

N/A
N/A
Protected

Academic year: 2021

Share "Narzędzia informatyczne w językoznawstwie Perl - Przetwarzanie XML Marcin Junczys-Dowmunt"

Copied!
54
0
0

Pełen tekst

(1)

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

7. maja 2008

(2)

Perl a XML

I 3515 modułów w CPAN zawiera w nazwie skrót XML

I Perl jest językiem przeznaczonym do przetwarzania tekstu

I Dokumenty XML to pliki tekstowe

I Perl jest silnie związany z WWW, podobnie jak XML

(3)

Perl a XML

I 3515 modułów w CPAN zawiera w nazwie skrót XML

I Perl jest językiem przeznaczonym do przetwarzania tekstu

I Dokumenty XML to pliki tekstowe

I Perl jest silnie związany z WWW, podobnie jak XML

(4)

Perl a XML

I 3515 modułów w CPAN zawiera w nazwie skrót XML

I Perl jest językiem przeznaczonym do przetwarzania tekstu

I Dokumenty XML to pliki tekstowe

I Perl jest silnie związany z WWW, podobnie jak XML

(5)

Perl a XML

I 3515 modułów w CPAN zawiera w nazwie skrót XML

I Perl jest językiem przeznaczonym do przetwarzania tekstu

I Dokumenty XML to pliki tekstowe

I Perl jest silnie związany z WWW, podobnie jak XML

(6)

Generowanie danych XML

I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.

I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.

I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.

I Można wtedy korzystać z tzw. here-documents.

I 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.

I Wewnątrz here-document działa interpolacja zmiennych.

(7)

Generowanie danych XML

I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.

I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.

I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.

I Można wtedy korzystać z tzw. here-documents.

I 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.

I Wewnątrz here-document działa interpolacja zmiennych.

(8)

Generowanie danych XML

I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.

I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.

I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.

I Można wtedy korzystać z tzw. here-documents.

I 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.

I Wewnątrz here-document działa interpolacja zmiennych.

(9)

Generowanie danych XML

I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.

I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.

I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.

I Można wtedy korzystać z tzw. here-documents.

I 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.

I Wewnątrz here-document działa interpolacja zmiennych.

(10)

Generowanie danych XML

I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.

I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.

I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.

I Można wtedy korzystać z tzw. here-documents.

I 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.

I Wewnątrz here-document działa interpolacja zmiennych.

(11)

Generowanie danych XML

I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.

I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.

I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.

I Można wtedy korzystać z tzw. here-documents.

I 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

(12)

Generowanie danych XML - Przykład

1 my @ p e r s o n s = (

{ f _ n a m e = > " T o m a s z ", s _ n a m e = > " K o w a l s k i " } , { f _ n a m e = > " B a r t o s z ", s _ n a m e = > " N o w a k " } );

5

my $ x m l = " <? xml v e r s i o n = \ " 1 . 0 \ " ? > \ n ";

$ x m l .= " < workers >\ n ";

f o r e a c h my $ p e r s o n ( @ p e r s o n s ) {

$ x m l .= < < X M L E N D ;

10 < person >

< f_name > $person - >{ f _ n a m e } </ f_name >

< s_name > $person - >{ s _ n a m e } </ s_name >

</ person >

X M L E N D

15 }

$ x m l .= " </ workers >\ n ";

p r i n t $ x m l ;

(13)

Wczytywanie danych XML - Co to jest parser?

I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.

I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.

I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.

I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.

I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.

I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.

(14)

Wczytywanie danych XML - Co to jest parser?

I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.

I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.

I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.

I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.

I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.

I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.

(15)

Wczytywanie danych XML - Co to jest parser?

I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.

I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.

I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.

I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.

I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.

I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.

(16)

Wczytywanie danych XML - Co to jest parser?

I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.

I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.

I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.

I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.

I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.

I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.

(17)

Wczytywanie danych XML - Co to jest parser?

I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.

I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.

I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.

I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.

I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.

I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.

(18)

Wczytywanie danych XML - Co to jest parser?

I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.

I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.

I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.

I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.

I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.

I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.

(19)

Parsery odtwarzające strukturę drzewiastą dokumentu

I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.

I 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.

I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.

I 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.

I Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane.

(20)

Parsery odtwarzające strukturę drzewiastą dokumentu

I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.

I 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.

I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.

I 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.

I Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane.

(21)

Parsery odtwarzające strukturę drzewiastą dokumentu

I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.

I 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.

I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.

I 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.

I Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane.

(22)

Parsery odtwarzające strukturę drzewiastą dokumentu

I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.

I 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.

I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.

I 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.

I Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane.

(23)

Parsery odtwarzające strukturę drzewiastą dokumentu

I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.

I 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.

I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.

I 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.

(24)

Parsery strumieniowy / zdarzeniowe

I 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.

I Różnym zdarzeniom przydziela się różne funkcje callback.

I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.

I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.

I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.

I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.

(25)

Parsery strumieniowy / zdarzeniowe

I 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.

I Różnym zdarzeniom przydziela się różne funkcje callback.

I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.

I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.

I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.

I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.

(26)

Parsery strumieniowy / zdarzeniowe

I 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.

I Różnym zdarzeniom przydziela się różne funkcje callback.

I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.

I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.

I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.

I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.

(27)

Parsery strumieniowy / zdarzeniowe

I 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.

I Różnym zdarzeniom przydziela się różne funkcje callback.

I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.

I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.

I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.

I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.

(28)

Parsery strumieniowy / zdarzeniowe

I 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.

I Różnym zdarzeniom przydziela się różne funkcje callback.

I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.

I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.

I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.

I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.

(29)

Parsery strumieniowy / zdarzeniowe

I 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.

I Różnym zdarzeniom przydziela się różne funkcje callback.

I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.

I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.

I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.

(30)

Standardowe sposoby przetwarzania XML

I 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).

I Odpowiadają im moduły XML::DOM oraz XML::SAX.

I XML::DOM to interfejs do drzewiastej struktury dokumentu.

I XML::SAX obsługuje parsery strumieniowe.

(31)

Standardowe sposoby przetwarzania XML

I 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).

I Odpowiadają im moduły XML::DOM oraz XML::SAX.

I XML::DOM to interfejs do drzewiastej struktury dokumentu.

I XML::SAX obsługuje parsery strumieniowe.

(32)

Standardowe sposoby przetwarzania XML

I 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).

I Odpowiadają im moduły XML::DOM oraz XML::SAX.

I XML::DOM to interfejs do drzewiastej struktury dokumentu.

I XML::SAX obsługuje parsery strumieniowe.

(33)

Standardowe sposoby przetwarzania XML

I 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).

I Odpowiadają im moduły XML::DOM oraz XML::SAX.

I XML::DOM to interfejs do drzewiastej struktury dokumentu.

I XML::SAX obsługuje parsery strumieniowe.

(34)

Przykład dokumentu XML (leksykon.xml)

<?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>

<forma p="cel" l="1">analizie</forma>

...

</formy>

</wpis>

...

</leksykon>

(35)

Moduł XML::DOM

1 use XML :: DOM ; use D a t a :: D u m p e r ;

my $ p a r s e r = new XML :: DOM :: P a r s e r ;

my $ d o c = $parser - > p a r s e f i l e (" l e k s y k o n . xml ");

5

my $ n o d e s = $doc - > g e t E l e m e n t s B y T a g N a m e (" f o r m a ");

my $n = $nodes - > g e t L e n g t h ();

for(my $i = 0; $i < $n ; $i ++) {

10 my $ t e x t = $nodes - > i t e m ( $i ) - > g e t F i r s t C h i l d ();

my $ f o r m a = $text - > g e t N o d e V a l u e ();

my $ p r z y = $nodes - > i t e m ( $i ) - > g e t A t t r i b u t e (" p ");

p r i n t " F o r m a : $ f o r m a - P r z y p a d e k : $ p r z y \ n ";

(36)

Moduł XML::SAX

1 use XML : : SAX : : E x p a t ;

my $ p a r s e r = XML : : SAX : : E xpa t−>new ( H a n d l e r => 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 ”) ;

5 p a c k a g e MyHandler ;

sub new {

my $ t y p e =s h i f t; my $ o b j = { d a t a => {} } ; r e t u r n b l e s s $ o b j , $ t y p e ;

10 }

sub s t a r t e l e m e n t { my( $ s e l f , $ p r o p ) = @ ; if( $ p r o p−>{Name} eq ” f o r m a ”) { 15 $ s e l f −>{d a t a}−>{l a s t} =” f o r m a ”;

$ s e l f −>{d a t a}−>{t e x t } =” ”;

$ s e l f −>{d a t a}−>{p r z y p a d e k } = $ p r o p−>{’ A t t r i b u t e s ’}−>{”{}p ”}−>{’ V a l u e ’} ; } }

20 sub c h a r a c t e r s {

my( $ s e l f , $ p r o p ) = @ ;

if ( $ s e l f −>{d a t a}−>{l a s t} eq ” f o r m a ”) {

$ s e l f −>{d a t a}−>{t e x t } .= $ p r o p−>{Data } ; } }

25

sub e n d e l e m e n t {

my( $ s e l f , $ p r o p ) = @ ; if( $ p r o p−>{Name} eq ” f o r m a ”) {

p r i n t ” Forma : $ s e l f −>{d a t a}−>{t e x t } − P r z y p a d e k : $ s e l f −>{d a t a}−>{p r z y p a d e k }\n ”; 30 $ s e l f −>{d a t a}−>{l a s t} =” ”;

} }

(37)

XML::Simple

I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.

I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.

I Jest to interfejs oparty na strukturze drzewiastej dokumentu.

I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.

I Dostęp do węzłów odbywa się za pomocą zwykłych

zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.

I 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.

(38)

XML::Simple

I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.

I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.

I Jest to interfejs oparty na strukturze drzewiastej dokumentu.

I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.

I Dostęp do węzłów odbywa się za pomocą zwykłych

zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.

I 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.

(39)

XML::Simple

I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.

I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.

I Jest to interfejs oparty na strukturze drzewiastej dokumentu.

I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.

I Dostęp do węzłów odbywa się za pomocą zwykłych

zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.

I 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.

(40)

XML::Simple

I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.

I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.

I Jest to interfejs oparty na strukturze drzewiastej dokumentu.

I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.

I Dostęp do węzłów odbywa się za pomocą zwykłych

zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.

I 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.

(41)

XML::Simple

I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.

I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.

I Jest to interfejs oparty na strukturze drzewiastej dokumentu.

I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.

I Dostęp do węzłów odbywa się za pomocą zwykłych

zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.

I 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.

(42)

XML::Simple

I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.

I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.

I Jest to interfejs oparty na strukturze drzewiastej dokumentu.

I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.

I Dostęp do węzłów odbywa się za pomocą zwykłych

zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.

I 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.

(43)

Moduł XML::Simple

1 use XML :: S i m p l e ;

my $ x m l = new XML :: S i m p l e ( F o r c e A r r a y = > 1);

my $ d a t a = $xml - > X M L i n (" l e k s y k o n . xml ");

5

f o r e a c h my $ w p i s ( @ { $data - >{ w p i s }}) {

my $ f o r m y = $wpis - >{ f o r m y } - >[0] - >{ f o r m a };

f o r e a c h my $ f o r m a ( @ $ f o r m y ) { my $f = $forma - >{ c o n t e n t };

10 my $p = $forma - >{ p };

p r i n t " F o r m a : $f - P r z y p a d e k : $p \ n "; }

}

(44)

Wczytywanie dokumentów XML za pomocą XML::Simple

1 $VAR1 = {

’ w p i s ’ => [ {

’ i n f o r m a c j e ’=> [ {

’ s e m a n t y k a ’=> [ ’ p r o c e s s ’ ] ,

5 ’ c z e s c m o w y ’=> [ ’ r z e c z o w n i k ’ ] ,

’ r o d z a j ’=> [ ’ m e s k i ’ ] } ] ,

’ f o r m y ’=> [ {

’ f o r m a ’ => [ {

10 ’ l ’=> ’ 1 ’,

’ p ’=> ’ mian ’,

’ c o n t e n t ’ => ’ a n a l i z a ’ } ,

{

15 ’ l ’=> ’ 1 ’,

’ p ’=> ’ dop ’,

’ c o n t e n t ’ => ’ a n a l i z y ’ } ,

{

20 ’ l ’=> ’ 1 ’,

’ p ’=> ’ c e l ’,

’ c o n t e n t ’ => ’ a n a l i z i e ’ } ]

} ] ,

25 ’ l e m a t ’=> [ ’ a n a l i z a ’ ] ,

’ n r ’=> ’ 1 ’ } ]

} ;

(45)

Tworzenie dokumentów XML za pomocą XML::Simple

1 use XML :: S i m p l e ; use D a t a :: D u m p e r ;

my $ x m l = new XML :: S i m p l e ( F o r c e A r r a y = > 1);

5 my $ d a t a = $xml - > X M L i n (" l e k s y k o n . xml ");

p r i n t D u m p e r ( $ d a t a );

p r i n t $xml - > X M L o u t ( $ d a t a );

(46)

Kontrolowanie działania modułu XML::Simple

1 use XML :: S i m p l e ;

my $ x m l = new XML :: S i m p l e ( F o r c e A r r a y = > [ " w p i s " ] ,

5 G r o u p T a g s = > { " f o r m y " = > " f o r m a " } , );

my $ d a t a = $xml - > X M L i n (" lex . xml ");

10 f o r e a c h my $ w p i s ( @ { $data - >{ w p i s }}) { f o r e a c h my $ f o r m a ( @ { $wpis - >{ f o r m y }}) {

my $f = $forma - >{ c o n t e n t };

my $p = $forma - >{ p };

p r i n t " F o r m a : $f - P r z y p a d e k : $p \ n ";

15 }

}

(47)

Wczytywanie dokumentów XML za pomocą XML::Simple

1 $VAR1 = {

’ w p i s ’ => [ {

’ i n f o r m a c j e ’=> {

’ s e m a n t y k a ’=> ’ p r o c e s s ’,

5 ’ c z e s c m o w y ’=> ’ r z e c z o w n i k ’,

’ r o d z a j ’=> ’ m e s k i ’ } ,

’ f o r m y ’=> [ {

’ l ’ => ’ 1 ’,

10 ’ p ’ => ’ mian ’,

’ c o n t e n t ’ => ’ a n a l i z a ’ } ,

{

’ l ’ => ’ 1 ’,

15 ’ p ’ => ’ dop ’,

’ c o n t e n t ’ => ’ a n a l i z y ’ } ,

{

’ l ’ => ’ 1 ’,

20 ’ p ’ => ’ c e l ’,

’ c o n t e n t ’ => ’ a n a l i z i e ’ } ] ,

’ l e m a t ’=> ’ a n a l i z a ’,

(48)

Inne przydatne moduły do przetwarzanie XML

XML::Twig

I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.

I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.

I 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

I Moduł podobny do Data::Dumper oraz XML::Simple

I Tworzy XML-ową reprezentację struktur danych w Perlu.

I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)

I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.

(49)

Inne przydatne moduły do przetwarzanie XML

XML::Twig

I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.

I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.

I 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

I Moduł podobny do Data::Dumper oraz XML::Simple

I Tworzy XML-ową reprezentację struktur danych w Perlu.

I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)

I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.

(50)

Inne przydatne moduły do przetwarzanie XML

XML::Twig

I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.

I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.

I 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

I Moduł podobny do Data::Dumper oraz XML::Simple

I Tworzy XML-ową reprezentację struktur danych w Perlu.

I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)

I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.

(51)

Inne przydatne moduły do przetwarzanie XML

XML::Twig

I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.

I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.

I 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

I Moduł podobny do Data::Dumper oraz XML::Simple

I Tworzy XML-ową reprezentację struktur danych w Perlu.

I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)

I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.

(52)

Inne przydatne moduły do przetwarzanie XML

XML::Twig

I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.

I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.

I 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

I Moduł podobny do Data::Dumper oraz XML::Simple

I Tworzy XML-ową reprezentację struktur danych w Perlu.

I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)

I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.

(53)

Inne przydatne moduły do przetwarzanie XML

XML::Twig

I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.

I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.

I 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

I Moduł podobny do Data::Dumper oraz XML::Simple

I Tworzy XML-ową reprezentację struktur danych w Perlu.

I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.

(54)

Inne przydatne moduły do przetwarzanie XML

XML::Twig

I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.

I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.

I 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

I Moduł podobny do Data::Dumper oraz XML::Simple

I Tworzy XML-ową reprezentację struktur danych w Perlu.

I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)

I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.

Cytaty

Powiązane dokumenty

I Słowo kluczowe sub poprzedza nazwę funkcji, którą ustalamy sami; nazwy powinny kojarzyć się działaniem tworzonej funkcji. I Polecenie return wewnętrz funkcji, natychmiast

◮ Hasz jest strukturą podobną do tablicy, ale zamiast indeksów liczbowych hasz używa kluczy.?. Co to

Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/24.. póki tablica @pokoj zawiera więcej niż

I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu. I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty

I Wszystkie dane wyjściowe konwertujemy po zakończeniu przetwarzania z kodowania wewnętrznego Perla do kodowania

I Tablica składająca się z samych kluczy tego hasza jest tablicą zawierająca tylko niepowtarzające się elementy z @tablica. Marcin Junczys-Dowmunt Narzędzia informatyczne

Najpierw wykonamy nasz program z poziomu wiersza poleceń komendą (o ile znajdujemy się w tym samym katalogu) perl hello.pl. Marcin Junczys-Dowmunt Narzędzia informatyczne

Każde narzędzie informatyczne działające na danych lingwistycznych musi brać pod uwagę następujące aspekty:. ◮ Wielojęzyczność