Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_prolog_xml [2008/06/06 14:42]
miw
pl:miw:miw08_prolog_xml [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Wojciech Szymański <​wojtek.szym@gmail.com>​ Wojciech Szymański <​wojtek.szym@gmail.com>​
  
Linia 70: Linia 72:
  
 Przetestowano następujące implementacje prologu: SWI-Prolog, BProlog, Amzi! Prolog, MINERVA, JIProlog oraz YAP Prolog. Przetestowano następujące implementacje prologu: SWI-Prolog, BProlog, Amzi! Prolog, MINERVA, JIProlog oraz YAP Prolog.
 +
  
  
Linia 75: Linia 78:
 ==== SWI-Prolog ==== ==== SWI-Prolog ====
  
-SWI-Prolog posiada pakiet //​**sgml2pl**//​ - [[http://​www.swi-prolog.org/​packages/​sgml2pl.html|SWI-Prolog SGML/XML parser]]. Pakiet ten posiada możliwości parsowania dokumentów XML wraz z namespaces oraz plików XML opartych o model DOM. Podstawowym predykatem służącym do parsowania jest: //​**load_xml_file(+File,​-ListOfContents)**//​. Natomiast predykat służący do przetworzenia postaci prologowej na postać xml ma postać: //​**xml_write(+Stream,​ +Term, +Options)**//​.+SWI-Prolog posiada pakiet //​**sgml2pl**//​ - [[http://​www.swi-prolog.org/​packages/​sgml2pl.html|SWI-Prolog SGML/XML parser]]. Pakiet ten posiada możliwości parsowania dokumentów XML wraz z namespaces oraz plików XML opartych o model DOM. Podstawowym predykatem służącym do parsowania jest: //​**load_xml_file(+File,​-ListOfContents)**//​. Natomiast predykat służący do przetworzenia postaci prologowej na dokument XML ma postać: //​**xml_write(+Stream,​ +Term, +Options)**//​.
  
 Po wpisaniu w prologu: Po wpisaniu w prologu:
Linia 552: Linia 555:
  ] ).  ] ).
 </​code>​ </​code>​
 +
 +
  
  
Linia 560: Linia 565:
  
 ==== JIProlog ==== ==== JIProlog ====
-Struktura postaci prologowej ​jest w postaci zagnieżdżonych termów zaczynając od //​xml_document//​ i idąc wgłąb //​xml_element//,​ //​xml_attribute//​ oraz //​xml_text//​.+Dokument XML po sparsowaniu w JIProlog ​jest przedstawiony ​w postaci zagnieżdżonych termów zaczynając od //​xml_document//​ i idąc wgłąb //​xml_element//,​ //​xml_attribute//​ oraz //​xml_text//​.
  
 Charakterystyczne dla postaci prologowej są: Charakterystyczne dla postaci prologowej są:
Linia 798: Linia 803:
  
 Po stworzeniu korzenia dokumentu XML przechodzimy do dodawania kolejnych dzieci. Po stworzeniu korzenia dokumentu XML przechodzimy do dodawania kolejnych dzieci.
 +
 +
 +
 +
 +
 +
  
 ==== Dodawanie dzieci ==== ==== Dodawanie dzieci ====
Linia 806: Linia 817:
 W predykacie tym jako argumenty podajemy kolejno: W predykacie tym jako argumenty podajemy kolejno:
   * Nazwę rodzica   * Nazwę rodzica
-  * Id rodzica - jeśli istnieje wiele elementów o tej samej nazwie, podajemy id rodzica, jeśli nie jest ważne do którego rodzica chcemy dodać dziecko wpisujemy "​_"​ (dziecko zostanie dodane do pierwszego istniejącego rodzica)+  * Id rodzica - jeśli istnieje wiele elementów o tej samej nazwie, podajemy id rodzica, jeśli nie jest ważne do którego rodzica chcemy dodać dziecko wpisujemy "​_"​ (dziecko zostanie dodane do pierwszego istniejącego rodzica) ​ 
 + 
 +:​!::​!:​**//​UWAGA//​**:​!::​!:​ 
 + 
 +Kiedy podajemy **id** rodzica, do którego chcemy przypisać dziecko, podajemy pełny tekst, np. **//​id=prp_1//​**.
   * Nazwa dziecka   * Nazwa dziecka
   * prefiks id dziecka; Podając **ala** zostanie stworzony prefiks **ala_**, któremu automatycznie zostanie przydzielona kolejna liczba, np. **ala_1**.   * prefiks id dziecka; Podając **ala** zostanie stworzony prefiks **ala_**, któremu automatycznie zostanie przydzielona kolejna liczba, np. **ala_1**.
Linia 827: Linia 842:
 W celu dodania za jednym razem większej ilości dzieci używamy predykatu pochodnego: W celu dodania za jednym razem większej ilości dzieci używamy predykatu pochodnego:
 <code prolog> <code prolog>
-app_child(Parent,​P_id,​Child,​ChildIdName,​How_much).+app_child(Parent,​P_id,​Child,​ChildIdName,​How_many).
 </​code>​ </​code>​
-Dodatkowym argumentem jest //**How_much**//, który oznacza ilość dodawanych dzieci.+Dodatkowym argumentem jest //**How_many**//, który oznacza ilość dodawanych dzieci.
  
 Jest to przydatne np, podczas dodawania wielu dzieci **//att//** do rodzica **//​attribute_set//​**. Jest to przydatne np, podczas dodawania wielu dzieci **//att//** do rodzica **//​attribute_set//​**.
Linia 840: Linia 855:
 Podobnie dodajemy: Podobnie dodajemy:
   * dzieci **//​property//​** do rodzica **//​property_set//​** <code prolog> ?- app_child(property_set,​_,​property,​prp,​18)</​code> ​   * dzieci **//​property//​** do rodzica **//​property_set//​** <code prolog> ?- app_child(property_set,​_,​property,​prp,​18)</​code> ​
-  * dzieci **//​trans//​** do rodzica **//tph//** <code prolog> ?- app_child(tph,​_,​trans,​trn,​17).</​code>​  +  * dzieci **//​trans//​** do rodzica **//tph//** <code prolog> ?- app_child(tph,​_,​trans,​tr,​17).</​code>​  
-  * dzieci **//dep//** do rodzica **//ard//** <code prolog> ?- ?- app_child(ard,​_,​dep,​dep,​6).</​code> ​+  * dzieci **//dep//** do rodzica **//ard//** <code prolog> ?- ?- app_child(ard,​_,​dep,​dp,​6).</​code> ​
  
 Następnie pozostaje tylko dodanie odpowiednich dzieci **//​attref//​** do odpowiednich rodziców **//​property//​**. Następnie pozostaje tylko dodanie odpowiednich dzieci **//​attref//​** do odpowiednich rodziców **//​property//​**.
Linia 848: Linia 863:
 dodane zostaną dwoje dzieci **//​attref//​** z id o prefiksie //​**att_r_**//​ do rodzica **//​property//​** o id **//​id=prp_1//​**. dodane zostaną dwoje dzieci **//​attref//​** z id o prefiksie //​**att_r_**//​ do rodzica **//​property//​** o id **//​id=prp_1//​**.
  
-:​!::​!:​UWAGA:​!::​!:​+---- 
 +:!::!:**//UWAGA//**:!::!:
  
 Kiedy podajemy **id** rodzica, do którego chcemy przypisać dziecko, podajemy pełny tekst, np. **//​id=prp_1//​**. Kiedy podajemy **id** rodzica, do którego chcemy przypisać dziecko, podajemy pełny tekst, np. **//​id=prp_1//​**.
 +----
 +
  
 W ten sposób stworzono cały szkielet dokumentu XML o zadanym korzeniu oraz zadanych dzieciach. Każdy element posiada własne, unikalne id. Ostatnią rzeczą będzie dodawanie odpowiednich atrybutów. W ten sposób stworzono cały szkielet dokumentu XML o zadanym korzeniu oraz zadanych dzieciach. Każdy element posiada własne, unikalne id. Ostatnią rzeczą będzie dodawanie odpowiednich atrybutów.
 +
 +
  
 ==== Dodawanie atrybutów ==== ==== Dodawanie atrybutów ====
Linia 864: Linia 884:
   * atrybut (//​nazwa=wartość//​),​ który chcemy dodać   * atrybut (//​nazwa=wartość//​),​ który chcemy dodać
  
-:​!::​!:​UWAGA:​!::​!:​+---- 
 + 
 +:!::!://**UWAGA**//:!::!:
  
 Kiedy podajemy **id** elementu, do którego chcemy dodać atrybut, podajemy pełny tekst, np. **//​id=att_0//​**. Kiedy podajemy **id** elementu, do którego chcemy dodać atrybut, podajemy pełny tekst, np. **//​id=att_0//​**.
  
 Podobnie jest w przypadku podawania atrybutu. Podajemy pełny tekst zawierający znak **//"​="//​** , np. **//​name=thermostat//​** Podobnie jest w przypadku podawania atrybutu. Podajemy pełny tekst zawierający znak **//"​="//​** , np. **//​name=thermostat//​**
 +----
  
 Przykładowo użycie Przykładowo użycie
Linia 877: Linia 900:
  
 W ten sam sposób możemy dodać każdy atrybut do każdego istniejącego elementu w "​prologowej"​ strukturze XML. W ten sam sposób możemy dodać każdy atrybut do każdego istniejącego elementu w "​prologowej"​ strukturze XML.
 +
  
  
Linia 894: Linia 918:
 Możemy też skorzystać z predykatu Możemy też skorzystać z predykatu
 <code prolog> ​ <code prolog> ​
-zapisz(File).+save(File).
 </​code>​ </​code>​
 który zapisze w podanym pliku aktualną "​prologową"​ strukturę XML oraz aktualny stan nadanych id, np. który zapisze w podanym pliku aktualną "​prologową"​ strukturę XML oraz aktualny stan nadanych id, np.
 <code prolog> ​ <code prolog> ​
-zapisz('​wiedza.pl'​).+save('​wiedza.pl'​).
 </​code>​ </​code>​
  
pl/miw/miw08_prolog_xml.1212756167.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
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