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:45]
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.
 +
 +
 +
 +
  
  
Linia 808: 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 829: 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 850: 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.
 +
  
  
Linia 866: Linia 883:
   * id elementu, do którego chcemy dodać atrybut   * id elementu, do którego chcemy dodać atrybut
   * atrybut (//​nazwa=wartość//​),​ który chcemy dodać   * atrybut (//​nazwa=wartość//​),​ który chcemy dodać
 +
 +----
  
 :​!::​!://​**UWAGA**//:​!::​!:​ :​!::​!://​**UWAGA**//:​!::​!:​
Linia 872: Linia 891:
  
 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 880: 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 897: 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.1212756330.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