[[
✎ pl:miw:miw08_prolog_xml:przyklad
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
===== 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: <code prolog> create_root(Name,ID_name). </code> 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> ?- create_root(hml,hml). Yes ?- listing(element). :- dynamic element/3. element(hml, [id=hml_0], []). </code> ==== Dodawanie dzieci ==== Dzieci do istniejących rodziców dodaje się za pomocą predykatu: <code prolog> app_child(Parent,P_id,Child,ChildIdName). </code> 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ń) <code prolog> ?- app_child(hml,_,type_set,typ_s). </code> Powstaje następująca struktura, korzeń **//hml//** ma na liście dziecko **//type_set//** z id o podanym prefiksie i przydzielonym numerze. <code prolog> element(hml, [id=hml_0], [element(type_set, [id=typ_s_0], [])]). </code> W podobny sposób dodajemy dzieci: * attribute_set <code prolog> ?- app_child(hml,_,attribute_set,att_s). </code> * property_set <code prolog> ?- app_child(hml,_,property_set,prp_s). </code> * tph <code prolog> ?- app_child(hml,_,tph,tph). </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 ==== 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 ==== 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.txt
· ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry