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 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ę 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').
pl/miw/miw08_prolog_xml/przyklad.txt · ostatnio zmienione: 2019/06/27 15:50 (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