Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
pl:miw:miw08_prolog_xml:parsowanie [2008/06/02 19:36]
miw
pl:miw:miw08_prolog_xml:parsowanie [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +===== Parsowanie prostych plików xml =====
  
 +==== Plik '​cd.xml'​ ====
 +<code xml>
 +<​!DOCTYPE CD SYSTEM "​cd.dtd">​
 +<CD>
 +    <​TITLE>​Empire Burlesque</​TITLE>​
 +    <​ARTIST>​Bob Dylan</​ARTIST>​
 +    <​COUNTRY>​USA</​COUNTRY>​
 +    <​COMPANY>​Columbia</​COMPANY>​
 +    <​PRICE>​10.90</​PRICE>​
 +    <​YEAR>​1985</​YEAR>​
 +    <​TITLE>​Hide your heart</​TITLE>​
 +    <​ARTIST>​Bonnie Tylor</​ARTIST>​
 +    <​COUNTRY>​UK</​COUNTRY>​
 +    <​COMPANY>​CBS Records</​COMPANY>​
 +    <​PRICE>​9.90</​PRICE>​
 +    <​YEAR>​1988</​YEAR>​
 +    <​TITLE>​Greatest Hits</​TITLE>​
 +    <​ARTIST>​Dolly Parton</​ARTIST>​
 +    <​COUNTRY>​USA</​COUNTRY>​
 +    <​COMPANY>​RCA</​COMPANY>​
 +    <​PRICE>​9.90</​PRICE>​
 +    <​YEAR>​1982</​YEAR>​
 +    <​TITLE>​Still got the blues</​TITLE>​
 +    <​ARTIST>​Gary More</​ARTIST>​
 +    <​COUNTRY>​UK</​COUNTRY>​
 +    <​COMPANY>​Virgin redords</​COMPANY>​
 +    <​PRICE>​10.20</​PRICE>​
 +    <​YEAR>​1990</​YEAR>​
 +</​code>​
 +
 +
 +
 +==== Plik cd.dtd ====
 +<code xml>
 +<​!ELEMENT ​ CD (TITLE, ARTIST, COUNTRY, COMPANY, PRICE, YEAR?)*>
 +<​!ELEMENT TITLE (#​PCDATA)>​
 +<​!ELEMENT ARTIST (#​PCDATA)>​
 +<​!ELEMENT COUNTRY (#​PCDATA)>​
 +<​!ELEMENT COMPANY (#​PCDATA)>​
 +<​!ELEMENT PRICE (#​PCDATA)>​
 +<​!ELEMENT YEAR (#​PCDATA)>​
 +</​code>​
 +
 +
 +
 +==== SWI-Prolog ====
 +    * SGML/XML, interpret XML Namespaces, Validate an SGML/XML DOM-term
 +Jeśli chodzi o SWI-Prolog udało sie zrobić następujące rzeczy:
 +Ze strony [[http://​www.swi-prolog.org/​]] pobrano przykładowe użycie predykatów korzystających z biblioteki sgml2pl. Użyto predykatu xml2pro('​cd.xml','​cd.dtd',​X) i pod X otrzymano postać prologową pliku cd.xml. W drugą stronę użyto predykatu pro2xml(postac_w_prologu,'​plik.xml'​). Poniżej przedstawiono postać w prologu wygenerowaną przez predykat xml2pro: ​
 +<code prolog> cd([], [title([], '​Empire Burlesque'​), ​
 +artist([], 'Bob Dylan'​),​
 +country([], '​USA'​), ​
 +company([], Columbia'​), ​
 +price([], '​10.90'​), ​
 +year([], '​1985'​), ​
 +title([], 'Hide your heart'​), ​
 +artist([], '​halo'​), ​
 +country([], '​Polska'​), ​
 +company([], '​EMI'​), ​
 +price([], '​23.90'​), ​
 +year([], '​1999'​)|...])</​code>​
 +Podobnie działa predykat load_xml_file('​cd.xml',​T). PO jego użyciu otrzymano:
 +<code prolog>
 +T = [element('​CD',​ [], [
 +element('​TITLE',​ [], ['​Empire Burlesque'​]), ​
 +element('​ARTIST',​ [], ['Bob Dylan'​]), ​
 +element('​COUNTRY',​ [], ['​USA'​]), ​
 +element('​COMPANY',​ [], ['​Columbia'​]), ​
 +element('​PRICE',​ [], ['​10.90'​]), ​
 +element('​YEAR',​ [], [...]), ​
 +element(...,​ ..., ...)|...])]
 +</​code>​
 +
 +
 +
 +==== BProlog ====
 +Udało się zainstalować BProlog oraz załadować biblioteke '​xml.pl'​. Po sparsowaniu pliku '​cd.xml'​ otrzymano reprezentacje tego pliku xml w postaci termu w prologu.
 +Sposób działania:
 +  * Komenda cd(Dir) ustala ścieżke w której pracujemy, np. cd('​C:/​BProlog/​Tools'​). Tam muszą znajdować sie zarówno pilik xml jak i plik biblioteki '​xml.pl'​.
 +  * Komenda cl(File) kompiluje i ładuje program, np. cl('​xml.pl'​) kompiluje i ładuje biblioteke '​xml.pl'​
 +  * Dalej posługujemy się predykatami zawartymi w biblotece, np. xml2pl('​cd.xml','​nowy.pl'​) tworzy plik nowy.pl zawierający postać prologową pliku cd.xml.
 +
 +Poniżej przedstawiono wygenerowaną postać w prologu:
 +<code prolog>
 +xml( [version="​1.0",​ encoding="​ISO-8859-1",​ standalone="​no"​],​
 + [
 + doctype( '​CD',​ system( "​cd.dtd"​ ) ),
 + element( '​CD',​
 + [],
 + [
 + element( '​TITLE',​[],​[pcdata("​Empire Burlesque"​)] ),
 + element( '​ARTIST',​[],​[pcdata("​Bob Dylan"​)] ),
 + element( '​COUNTRY',​[],​[pcdata("​USA"​)] ),
 + element( '​COMPANY',​[],​[pcdata("​Columbia"​)] ),
 + element( '​PRICE',​[],​[pcdata("​10.90"​)] ),
 + element( '​YEAR',​[],​[pcdata("​1985"​)] ),
 + element( '​TITLE',​[],​[pcdata("​Hide your heart"​)] ),
 + element( '​ARTIST',​[],​[pcdata("​Bonnie Tylor"​)] ),
 + element( '​COUNTRY',​[],​[pcdata("​UK"​)] ),
 + element( '​COMPANY',​[],​[pcdata("​CBS Records"​)] ),
 + element( '​PRICE',​[],​[pcdata("​9.90"​)] ),
 + element( '​YEAR',​[],​[pcdata("​1988"​)] ),
 + element( '​TITLE',​[],​[pcdata("​Greatest Hits"​)] ),
 + element( '​ARTIST',​[],​[pcdata("​Dolly Parton"​)] ),
 + element( '​COUNTRY',​[],​[pcdata("​USA"​)] ),
 + element( '​COMPANY',​[],​[pcdata("​RCA"​)] ),
 + element( '​PRICE',​[],​[pcdata("​9.90"​)] ),
 + element( '​YEAR',​[],​[pcdata("​1982"​)] ),
 + element( '​TITLE',​[],​[pcdata("​Still got the blues"​)] ),
 + element( '​ARTIST',​[],​[pcdata("​Gary More"​)] ),
 + element( '​COUNTRY',​[],​[pcdata("​UK"​)] ),
 + element( '​COMPANY',​[],​[pcdata("​Virgin redords"​)] ),
 + element( '​PRICE',​[],​[pcdata("​10.20"​)] ),
 + element( '​YEAR',​[],​[pcdata("​1990"​)] )
 + ] )
 + ] ).
 +</​code>​
 +
 +==== Amzi! Prolog ====
 +Wersja prologu Amzi! jest możliwa do ściągnięcia jako wersja "Free (Never Expires)"​. Za inne wersje trzeba płacić. Do tej pory nie udało się skorzystać z biblioteki podanej w [[http://​www.amzi.com/​manuals/​amzi7/​libs/​xml.htm|XML.pro]].
 +
 +==== EZY Prolog ====
 +Udało sie zainstalować EZY Prolog Suite. Jest to wersja darmowa tzw. EZY Prolog for students. Przetestowano program ezy_zml_laboratory.ezy. Program pozwala na wczytanie pliku xml i jego sparsowanie.
 +
 +
 +==== MINERVA ====
 +Minerva jest licencjonowanym produktem firmy IF Computer Japan. Jest możliwe posiadanie licencji ewaluacyjnej (wolnej od opłaty) ważnej na okres 2 miesięcy. Minerva może być nazwana jako Java Prolog ponieważ dostarcza funkcjonalności Prologu jako klasa Javy. 
 +
 +
 +
 +
 +
 +==== JIProlog ====
 +Po zainstalowaniu i uruchomieniu lub po uruchomieniu apletu na stronie parser zadziałał. Wersja tego prologu była bezpłatna, podczas działania wyświetlał sie tylko napis informujący użytkownika,​ że posiada wersje shareware unregistered. Zgodnie z przykładem udało sie otrzymać postać prologową po sparsowaniu pliku xml. Poszczególne kroki:
 +  * load_library('​jipxxml.jar'​). - ładowanie biblioteki do obsługi plików xml
 +  * load_library('​jipxio.jar'​). - ładowanie biblioteki do i/o dla plików
 +  * see('​cd.xml'​). - otworzenie pliku xml
 +  * xml_read_document(X) - przetworzenie dokumentu xml do postaci prologu
 +
 +Istnieje też predykat create_xml_file(X) który zawarty jest w przykładowym programie xml_sample.pl. Predykat ten tworzy plik xml na podstawie termu prologowego. Istnieje też predykat xml_write_document(Handle,​Term).
 +
 +Poniżej przedstawiono wygenerowany plik w postaci prologowej:
 +<code prolog>
 +X = xml_document([[version = 1.0, encoding = UTF-8], ​
 +xml_doctype(CD,​ [SYSTEM = cd.dtd], [])], 
 +xml_element(CD,​ [], 
 +[xml_element(TITLE,​ [], [xml_text(Empire Burlesque)]), ​
 +xml_element(ARTIST,​ [], [xml_text(Bob Dylan)]), ​
 +xml_element(COUNTRY,​ [], [xml_text(USA)]), ​
 +xml_element(COMPANY,​ [], [xml_text(Columbia)]), ​
 +xml_element(PRICE,​ [], [xml_text(10.90)]), ​
 +xml_element(YEAR,​ [], [xml_text(1985)]), ​
 +xml_element(TITLE,​ [], [xml_text(Hide your heart)]), ​
 +xml_element(ARTIST,​ [], [xml_text(Bonnie Tylor)]), ​
 +xml_element(COUNTRY,​ [], [xml_text(UK)]), ​
 +xml_element(COMPANY,​ [], [xml_text(CBS Records)]), ​
 +xml_element(PRICE,​ [], [xml_text(9.90)]), ​
 +xml_element(YEAR,​ [], [xml_text(1988)]), ​
 +xml_element(TITLE,​ [], [xml_text(Greatest Hits)]), ​
 +xml_element(ARTIST,​ [], [xml_text(Dolly Parton)]), ​
 +xml_element(COUNTRY,​ [], [xml_text(USA)]), ​
 +xml_element(COMPANY,​ [], [xml_text(RCA)]), ​
 +xml_element(PRICE,​ [], [xml_text(9.90)]), ​
 +xml_element(YEAR,​ [], [xml_text(1982)]), ​
 +xml_element(TITLE,​ [], [xml_text(Still got the blues)]), ​
 +xml_element(ARTIST,​ [], [xml_text(Gary More)]), ​
 +xml_element(COUNTRY,​ [], [xml_text(UK)]), ​
 +xml_element(COMPANY,​ [], [xml_text(Virgin redords)]), ​
 +xml_element(PRICE,​ [], [xml_text(10.20)]), ​
 +xml_element(YEAR,​ [], [xml_text(1990)])
 +]))
 +</​code>​
 +
 +
 +==== YAP Prolog ====
 +Wersja YAP Prolog jest bezpłatna ​ użyciu w środowiskach akademickich. Istnieje biblioteka posiadająca możliwości związane z plikami XML/HTML (parsowanie plików XML lub HTML) - [[http://​www.clip.dia.fi.upm.es/​Software/​pillow/​pillow.html|The PiLLoW Web Programming Library ]].
 +
 +Wersje tej biblioteki są dostępne zarówno dla YAP Prolog jak i dla SWI Prolog oraz Ciao Prolog.
 +
 +Jeśli chodzi o predykaty związane z XML jest dostępny [[http://​www.clip.dia.fi.upm.es/​Software/​pillow/​pillow_doc_html/​pillow_doc_3.html#​SEC5|xml2terms/​2]]
 +
 +Predykat ten wykorzystuje się na dwa sposoby:
 +  - translacja XML-term do kodu XML
 +  - translacja kodu XML do strukturalnego termu XML'​owego
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0