Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
Nowa wersja
Both sides next revision
|
pl:miw:miw08_prolog_xml:przyklad [2008/05/28 16:10] miw |
pl:miw:miw08_prolog_xml:przyklad [2008/06/02 00:08] miw |
===== Przykład ===== | ===== Przykład ===== |
| |
| |
| |
Jako parametry podajemy kolejno: | Jako parametry podajemy kolejno: |
* nazwę korzenia | * nazwę korzenia |
* prefiks, np. podając **cd**, zostanie stworzony **id=cd_0** gdzie **0** będzie kolejno nadawaną liczbą, startując od zera. | * 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. | Po użyciu tego predykatu pojawi się nam główny element struktury prologowej stanowiący korzeń dokumentu xml. |
element(hml, [id=hml_0], []). | element(hml, [id=hml_0], []). |
</code> | </code> |
| |
| |
| |
| |
| |
| |
| |
Dzieci do istniejących rodziców dodaje się za pomocą predykatu: | Dzieci do istniejących rodziców dodaje się za pomocą predykatu: |
<code prolog> | <code prolog> |
app_child(Parent,P_id,Child). | app_child(Parent,P_id,Child,ChildIdName). |
</code> | </code> |
W predykacie tym jako argumenty podajemy kolejno: | W predykacie tym jako argumenty podajemy kolejno: |
* 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 "_" | * 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 | * Nazwa dziecka |
Id dziecka zostanie nadane automatycznie. | * 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//** do rodzica **//hml//** (korzeń) | A więc dodanie dziecka o nazwie **//type_set//** i id **//typ_s//** do rodzica **//hml//** (korzeń) |
<code prolog> | <code prolog> |
4 ?- app_child(hml,_,type_set). | ?- app_child(hml,_,type_set,typ_s). |
</code> | </code> |
Powstaje następująca struktura, korzeń **//hml//** ma na liście dziecko **//type_set//** o automatycznie nadanym id. | Powstaje następująca struktura, korzeń **//hml//** ma na liście dziecko **//type_set//** z id o podanym prefiksie i przydzielonym numerze. |
<code prolog> | <code prolog> |
element(hml, [id=hml_0], [element(type_set, [id=typ_s_0], [])]). | element(hml, [id=hml_0], [element(type_set, [id=typ_s_0], [])]). |
| |
W podobny sposób dodajemy dzieci: | W podobny sposób dodajemy dzieci: |
* attribute_set <code prolog> ?- app_child(hml,_,attribute_set). </code> | * attribute_set <code prolog> ?- app_child(hml,_,attribute_set,att_s). </code> |
* property_set <code prolog> ?- app_child(hml,_,property_set). </code> | * property_set <code prolog> ?- app_child(hml,_,property_set,prp_s). </code> |
* tph <code prolog> ?- app_child(hml,_,tph). </code> | * tph <code prolog> ?- app_child(hml,_,tph,tph). </code> |
* ard <code prolog> ?- app_child(hml,_,ard). </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: | W celu dodania za jednym razem większej ilości dzieci używamy predykatu pochodnego: |
<code prolog> | <code prolog> |
app_child(Parent,P_id,Child,How_much). | app_child(Parent,P_id,Child,ChildIdName,How_much). |
</code> | </code> |
| |
Po użyciu predykatu: | Po użyciu predykatu: |
<code prolog> | <code prolog> |
app_child(attribute_set,_,att,12). | app_child(attribute_set,_,att,att,12). |
</code> | </code> |
zostanie dodanych dwanaście dzieci do rodzica **//attribute_set//**. | zostanie dodanych dwanaście dzieci do rodzica **//attribute_set//**. |
| |
Podobnie dodajemy: | Podobnie dodajemy: |
* dzieci **//property//** do rodzica **//property_set//** <code prolog> ?- app_child(property_set,_,property,18)</code> | * 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,17).</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,6).</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//**. | 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: | 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,2)</code> | <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//**. | 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. | 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. |
| |
| |
| |
| |
| |
* jego id | * jego id |
* atrybut, który chcemy dodać | * 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 | Przykładowo użycie |