===== 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 ====
Korzen dokumentu xml tworzymy wykorzystując predykat:
create_root(Name,ID_name).
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:
?- create_root(hml,hml).
Yes
?- listing(element).
:- dynamic element/3.
element(hml, [id=hml_0], []).
==== Dodawanie dzieci ====
Dzieci do istniejących rodziców dodaje się za pomocą predykatu:
app_child(Parent,P_id,Child,ChildIdName).
W predykacie tym jako argumenty podajemy kolejno:
* 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 "_"
* Nazwa dziecka
* 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//** i id **//typ_s//** do rodzica **//hml//** (korzeń)
?- app_child(hml,_,type_set,typ_s).
Powstaje następująca struktura, korzeń **//hml//** ma na liście dziecko **//type_set//** z id o podanym prefiksie i przydzielonym numerze.
element(hml, [id=hml_0], [element(type_set, [id=typ_s_0], [])]).
W podobny sposób dodajemy dzieci:
* attribute_set ?- app_child(hml,_,attribute_set,att_s).
* property_set ?- app_child(hml,_,property_set,prp_s).
* tph ?- app_child(hml,_,tph,tph).
* ard ?- app_child(hml,_,ard,ard).
W celu dodania za jednym razem większej ilości dzieci używamy predykatu pochodnego:
app_child(Parent,P_id,Child,ChildIdName,How_much).
Jest to przydatne np, podczas dodawania dzieci **//att//** do rodzica **//attribute_set//**.
Po użyciu predykatu:
app_child(attribute_set,_,att,att,12).
zostanie dodanych dwanaście dzieci do rodzica **//attribute_set//**.
Podobnie dodajemy:
* dzieci **//property//** do rodzica **//property_set//** ?- app_child(property_set,_,property,prp,18)
* dzieci **//trans//** do rodzica **//tph//** ?- app_child(tph,_,trans,trn,17).
* dzieci **//dep//** do rodzica **//ard//** ?- ?- app_child(ard,_,dep,dep,6).
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:
?- app_child(property,id=prp_1,attref,att_r,2)
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 ====
Atrybuty do wybranego elementu dodaje się przy użyciu predykatu,
add_attribute(Parent,P_id,Attr).
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
?- add_attribute(att,id=att_0,name=thermostat).
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 ====
Plik xml tworzymy przy użyciu predykatu
prolog2xml(File).
Po wpisaniu:
?- prolog2xml('test.xml').
zostanie utworzony plik xml o nazwie test.
Możemy też skorzystać z predykatu
zapisz(File).
który zapisze w podanym pliku aktualną "prologową" strukturę xml oraz aktualny stan nadanych id, np.
zapisz('wiedza.pl').