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:przyklad [2008/05/25 22:57]
miw
pl:miw:miw08_prolog_xml:przyklad [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ===== Przykład ===== ===== Przykład =====
 +Poniżej pokazano przykład tworzenia dokumentu xml z wykorzystaniem stworzonego API. W przykładzie pokazano sposób tworzenia pliku xml otrzymanego z systemu [[pl:​miw:​miw08_prolog_xml:​plik_varda|VARDA-M_1]]
  
 ==== Tworzenie korzenia ==== ==== Tworzenie korzenia ====
 Korzen dokumentu xml tworzymy wykorzystując predykat: Korzen dokumentu xml tworzymy wykorzystując predykat:
 <code prolog> <code prolog>
-create_root(hml).+create_root(Name,​ID_name).
 </​code>​ </​code>​
-Po jego użyciu pojawi się nam główny element struktury prologowej stanowiący korzeń dokumentu xml.+Jako parametry podajemy kolejno: 
 +  * nazwę korzenia 
 +  * prefiks id, np. podając **cd**, zostanie stworzony **id=cd_0** gdzie **0** będzie kolejno nadawaną liczbą, startując od zera. 
 + 
 +Po użyciu ​tego predykatu ​pojawi się nam główny element struktury prologowej stanowiący korzeń dokumentu xml. 
 + 
 +Przykład:
 <code prolog> <code prolog>
-?- listing(element).+?- create_root(hml,​hml). 
 + 
 +Yes 
 +?- listing(element).
  
 :- dynamic element/3. :- dynamic element/3.
Linia 15: Linia 24:
 element(hml,​ [id=hml_0], []). element(hml,​ [id=hml_0], []).
 </​code>​ </​code>​
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
Linia 21: Linia 43:
 Dzieci do istniejących rodziców dodaje się za pomocą predykatu: ​ Dzieci do istniejących rodziców dodaje się za pomocą predykatu: ​
 <code prolog> <code prolog>
-app_child(Parent,​P_id,​Child).+app_child(Parent,​P_id,​Child,​ChildIdName).
 </​code>​ </​code>​
 W predykacie tym jako argumenty podajemy kolejno: W predykacie tym jako argumenty podajemy kolejno:
Linia 27: Linia 49:
   * 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 "​_"​   * 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 "​_"​
   * Nazwa dziecka   * Nazwa dziecka
-Id dziecka zostanie ​nadane ​automatycznie. +  * prefix nazwy id dziecka; Podając **ala** ​zostanie ​stworzony prefik **ala_**, któremu ​automatycznie ​zostanie przydzielona kolejna liczba, np. **ala_1**
-A więc dodanie dziecka o nazwie //​type_set//​ do rodzica //hml// (korzeń)+A więc dodanie dziecka o nazwie ​**//​type_set//​** i id **//​typ_s//​** ​do rodzica ​**//hml//** (korzeń)
 <code prolog> <code prolog>
-?- app_child(hml,​_,​type_set).+?- app_child(hml,​_,​type_set,typ_s).
 </​code>​ </​code>​
-Powstaje następująca struktura, korzeń //hml// ma na liście dziecko //​type_set// ​o automatycznie nadanym ​id.+Powstaje następująca struktura, korzeń ​**//hml//** ma na liście dziecko ​**//​type_set//​** z id o podanym prefiksie i przydzielonym numerze.
 <code prolog> <code prolog>
 element(hml,​ [id=hml_0], [element(type_set,​ [id=typ_s_0],​ [])]). element(hml,​ [id=hml_0], [element(type_set,​ [id=typ_s_0],​ [])]).
Linia 38: Linia 60:
  
 W podobny sposób dodajemy dzieci: W podobny sposób dodajemy dzieci:
-  * attribute_set <code prolog> ?- app_child(hml,​_,​attribute_set). </​code>​ +  * attribute_set <code prolog> ?- app_child(hml,​_,​attribute_set,att_s). </​code>​ 
-  * property_set <code prolog> ​ ?- app_child(hml,​_,​property_set). </​code>​ +  * property_set <code prolog> ​ ?- app_child(hml,​_,​property_set,prp_s). </​code>​ 
-  * tph <code prolog> ?- app_child(hml,​_,​tph). </​code>​ +  * tph <code prolog> ?- app_child(hml,​_,tph,tph). </​code>​ 
-  * ard <code prolog> ?- app_child(hml,​_,​ard). </​code>​+  * ard <code prolog> ?- app_child(hml,​_,ard,ard). </​code>​ 
 + 
 +W celu dodania za jednym razem większej ilości dzieci używamy predykatu pochodnego:​ 
 +<code prolog>​ 
 +app_child(Parent,​P_id,​Child,​ChildIdName,​How_much). 
 +</​code>​ 
 + 
 +Jest to przydatne np, podczas dodawania dzieci **//att//** do rodzica **//​attribute_set//​**. 
 +Po użyciu predykatu:​ 
 +<code prolog>​ 
 +app_child(attribute_set,​_,​att,​att,​12). 
 +</​code>​ 
 +zostanie dodanych dwanaście dzieci do rodzica **//​attribute_set//​**. 
 + 
 +Podobnie dodajemy: 
 +  * 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 **//dep//** do rodzica **//ard//** <code prolog> ?- ?- app_child(ard,​_,​dep,​dep,​6).</​code>​  
 + 
 +Następnie pozostaje tylko dodanie odpowiednich dzieci **//​attref//​** do odpowiednich rodziców **//​property//​**. 
 +Tu ponownie wykorzystujemy wyżej wymieniany predykat, ale już z podaniem ID rodzica. Przykładowo,​ po wpisaniu: 
 +<code prolog> ?- app_child(property,​id=prp_1,​attref,​att_r,​2)</​code>​ 
 +dodane zostaną dwoje dzieci **//​attref//​** do rodzica **//​property//​** o id **//​id=prp_1//​**. 
 + 
 +:​!::​!:​UWAGA:​!::​!:​ 
 + 
 +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. Powstały szkielet bez atrybutów znajduje się [[pl:​miw:​miw08_prolog_xml:​przyklad:​p1|tutaj]]. Ostatnią rzeczą będzie dodawanie odpowiednich atrybutów. 
 + 
 + 
 + 
 + 
 + 
  
 ==== Dodawanie atrybutów ==== ==== Dodawanie atrybutów ====
 +Atrybuty do wybranego elementu dodaje się przy użyciu predykatu,
 +<code prolog>
 +add_attribute(Parent,​P_id,​Attr).
 +</​code>​
 +gdzie jako argument podajemy kolejno:
 +  * nazwę elementu, do którego chcemy dodać atrybut
 +  * jego id
 +  * atrybut, który chcemy dodać
 +
 +:​!::​!:​UWAGA:​!::​!:​
 +
 +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//​**
 +
 +Przykładowo użycie
 +<code prolog>
 +?- add_attribute(att,​id=att_0,​name=thermostat).
 +</​code>​
 +spowoduje dodanie atrybutu **//​name=thermostat//​** do elementu **//att//** o id **//​id=att_0//​**.
 +
 +W ten sam sposób możemy dodać każdy atrybut do każdego istniejącego elementu w "​prologowej"​ strukturze xml.
 +
 +
  
 ==== Tworzenie pliku xml ==== ==== Tworzenie pliku xml ====
 +
 +Plik xml tworzymy przy użyciu predykatu
 +<code prolog>
 +prolog2xml(File).
 +</​code>​
 +Po wpisaniu: ​
 +<code prolog>
 +?- prolog2xml('​test.xml'​).
 +</​code>​
 +zostanie utworzony plik xml o nazwie test.
 +
 +Możemy też skorzystać z predykatu
 +<code prolog> ​
 +zapisz(File).
 +</​code>​
 +który zapisze w podanym pliku aktualną "​prologową"​ strukturę xml oraz aktualny stan nadanych id, np.
 +<code prolog> ​
 +zapisz('​wiedza.pl'​).
 +</​code>​
pl/miw/miw08_prolog_xml/przyklad.1211749041.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (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