
This module implements predicates for HTML/XML generation and parsing.
canonic_html_item(comment(S)) :-
string(S).
canonic_html_item(declare(S)) :-
string(S).
canonic_html_item(env(Tag,Atts,Terms)) :-
atm(Tag),
list(tag_attrib,Atts),
canonic_html_term(Terms).
canonic_html_item($(Tag,Atts)) :-
atm(Tag),
list(tag_attrib,Atts).
canonic_html_item(S) :-
string(S).
tag_attrib(Att) :-
atm(Att).
tag_attrib(Att=Val) :-
atm(Att),
string(Val).
Each structure represents one HTML construction: For example, the term
env(a,[href="www.therainforestsite.com"],
["Visit ",img$[src="TRFS.gif"]]) is output to (or parsed from): <a href="www.therainforestsite.com">Visit <img src="TRFS.gif"></a>
Usage:canonic_html_term(HTMLTerm)
HTMLTerm is a term representing HTML code in canonical form.
canonic_xml_item(Term) :-
canonic_html_item(Term).
canonic_xml_item(xmldecl(Atts)) :-
list(tag_attrib,Atts).
canonic_xml_item(env(Tag,Atts,Terms)) :-
atm(Tag),
list(tag_attrib,Atts),
canonic_xml_term(Terms).
canonic_xml_item(elem(Tag,Atts)) :-
atm(Tag),
list(tag_attrib,Atts).
In addition to the structures defined by canonic_html_term/1 (the ($)/2 structure appears only in malformed XML code), the following structures can be used: elem(arc,[weigh="3",begin="n1",end="n2"])is output to (or parsed from):
<arc weigh="3" begin="n1" end="n2"/>
Usage:canonic_xml_term(XMLTerm)
XMLTerm is a term representing XML code in canonical form.
address('clip@clip.dia.fi.upm.es')is translated into the HTML source: <address>clip@clip.dia.fi.upm.es</address>
a([href='http://www.clip.dia.fi.upm.es/'],"Clip home")represents the HTML source
<a href="http://www.clip.dia.fi.upm.es/">Clip home</a>
Usage:html_term(HTMLTerm)
HTMLTerm is a term representing HTML code.
Outputs HTMLTerm, interpreted as an html_term/1, to current output stream.
Usage:
String is a character list containing HTML code and Terms is its prolog structured representation.
Usage 1:
Translates an HTML-term into the HTML code it represents.
Usage 2:
Translates HTML code into a structured HTML-term.
String is a character list containing XML code and Terms is its prolog structured representation.
Usage 1:
Translates a XML-term into the XML code it represents.
Usage 2:
Translates XML code into a structured XML-term.
Interprets Chars as an HTML template returning in Terms the corresponding structured HTML-term, which includes variables, and unifying Dict with a dictionary of those variables (an incomplete list of name=Var pairs). An HTML template is standard HTML code, but in which ``slots'' can be defined and given an identifier. These slots represent parts of the HTML code in which other HTML code can be inserted, and are represented in the HTML-term as free variables. There are two kinds of variables in templates:
As an example, suposse the following HTML template:
<html> <body bgcolor=_bgcolor> <v>content</v> </body> </html>
The following query in the Ciao toplevel shows how the template is parsed, and the dictionary returned:
?- file_to_string('template.html',_S), html_template(_S,Terms,Dict).
Dict = [bgcolor=_A,content=_B|_],
Terms = [env(html,[],["
",env(body,[bgcolor=_A],["
",_B,"
"]),"
"]),"
"] ?
yes If a dictionary with values is supplied at call time, then variables are unified accordingly inside the template:
?- file_to_string('template.html',_S),
html_template(_S,Terms,[content=b("hello world!"),bgcolor="white"]).
Terms = [env(html,[],["
",env(body,[bgcolor="white"],["
",b("hello world!"),"
"]),"
"]),"
"] ?
yesUsage:
Usage:html_expansion(Term,Expansion)
Hook predicate to define macros. Expand occurrences of Term into Expansion, in output_html/1. Take care to not transform something into itself!