===== 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').