Dzieci do istniejących rodziców dodaje się za pomocą predykatu:
app_child(Parent,P_id,Child).
W predykacie tym jako argumenty podajemy kolejno:
Id dziecka zostanie nadane automatycznie.
A więc dodanie dziecka o nazwie type_set do rodzica hml (korzeń)
4 ?- app_child(hml,_,type_set).
Powstaje następująca struktura, korzeń hml ma na liście dziecko type_set o automatycznie nadanym id.
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).
property_set
?- app_child(hml,_,property_set).
tph
?- app_child(hml,_,tph).
ard
?- app_child(hml,_,ard).
W celu dodania za jednym razem większej ilości dzieci używamy predykatu pochodnego:
app_child(Parent,P_id,Child,How_much).
Jest to przydatne np, podczas dodawania dzieci att do rodzica attribute_set.
Po użyciu predykatu:
app_child(attribute_set,_,att,12).
zostanie dodanych dwanaście dzieci do rodzica attribute_set.
Podobnie dodajemy:
dzieci
property do rodzica
property_set ?- app_child(property_set,_,property,18)
dzieci
trans do rodzica
tph ?- app_child(tph,_,trans,17).
dzieci
dep do rodzica
ard ?- ?- app_child(ard,_,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,2)
dodane zostaną dwoje dzieci attref do rodzica property o id 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 argumentów.