1:- module(xml, [xml_element/2, modify_element/3]). 2
4xml_element(Element, E) :-
5 is_list(E) ->
6 member(Child, E),
7 xml_element(Element, Child);
8
9 Element = E.
10xml_element(Element, element(_Name, _Attrs, Children)) :-
11 member(Child, Children),
12 xml_element(Element, Child).
13
16modify_element(Pred, Element, NewElement) :-
17 is_list(Element) ->
18 select(Child, Element, TempElement),
19 modify_element(Pred, Child, NewChild),
20 select(NewChild, NewElement, TempElement);
21
22 call(Pred, Element, NewElement).
23modify_element(Pred, element(Name, Attrs, Children), element(Name, Attrs, NewChildren)) :-
24 select(Child, Children, TempChildren),
25
26 (
27 call(Pred, Child, NewElement) -> true;
28
29 modify_element(Pred, Child, NewElement)
30 ),
31
32 select(NewElement, NewChildren, TempChildren)