1549 lines
55 KiB
Plaintext
1549 lines
55 KiB
Plaintext
|
This is pillow_doc.info, produced by Makeinfo version 3.12h from
|
|||
|
pillow_doc.texi.
|
|||
|
|
|||
|
START-INFO-DIR-ENTRY
|
|||
|
* pillow: (pillow_doc.info).
|
|||
|
The PiLLoW Web Programming Library
|
|||
|
END-INFO-DIR-ENTRY
|
|||
|
|
|||
|
The PiLLoW library ("Programming in Logic Languages on the Web")
|
|||
|
is a public domain Internet/WWW programming library for Logic
|
|||
|
Programming Systems which simplifies the process of writing
|
|||
|
applications for such environment. The library provides facilities
|
|||
|
for generating HTML or XML structured documents by handling them as
|
|||
|
Herbrand terms, producing HTML forms, writing form handlers,
|
|||
|
processing HTML templates, accessing and parsing WWW documents
|
|||
|
(either HTML or XML), accessing code posted at HTTP addresses, etc.
|
|||
|
|
|||
|
The PiLLoW library has been developed in the context of the
|
|||
|
&-Prolog and Ciao systems, but it has been adapted to a number of
|
|||
|
popular Logic Programming systems. Note, however, that this manual is
|
|||
|
written for the Ciao system, so if you use it in other systems, minor
|
|||
|
details in the documentation may not completely agree. For example,
|
|||
|
whereas in Ciao the library is a package which loads modules `html'
|
|||
|
and `http', in the other systems it is just one module `pillow'.
|
|||
|
Thus, do not consider the _Library usage_ information in other
|
|||
|
systems.
|
|||
|
|
|||
|
PiLLoW is distributed under the GNU Library General Public License.
|
|||
|
|
|||
|
Copyright (C) D. Cabeza and M. Hermenegildo
|
|||
|
|
|||
|
This document may be freely read, stored, reproduced,
|
|||
|
disseminated, translated or quoted by any means and on any medium
|
|||
|
provided the following conditions are met:
|
|||
|
|
|||
|
1. Every reader or user of this document acknowledges that is aware
|
|||
|
that no guarantee is given regarding its contents, on any
|
|||
|
account, and specifically concerning veracity, accuracy and
|
|||
|
fitness for any purpose.
|
|||
|
|
|||
|
2. No modification is made other than cosmetic, change of
|
|||
|
representation format, translation, correction of obvious
|
|||
|
syntactic errors, or as permitted by the clauses below.
|
|||
|
|
|||
|
3. Comments and other additions may be inserted, provided they
|
|||
|
clearly appear as such; translations or fragments must clearly
|
|||
|
refer to an original complete version, preferably one that is
|
|||
|
easily accessed whenever possible.
|
|||
|
|
|||
|
4. Translations, comments and other additions or modifications must
|
|||
|
be dated and their author(s) must be identifiable (possibly via
|
|||
|
an alias).
|
|||
|
|
|||
|
5. This licence is preserved and applies to the whole document with
|
|||
|
modifications and additions (except for brief quotes),
|
|||
|
independently of the representation format.
|
|||
|
|
|||
|
6. Any reference to the "official version", "original version" or
|
|||
|
"how to obtain original versions" of the document is preserved
|
|||
|
verbatim. Any copyright notice in the document is preserved
|
|||
|
verbatim. Also, the title and author(s) of the original document
|
|||
|
should be clearly mentioned as such.
|
|||
|
|
|||
|
7. In the case of translations, verbatim sentences mentioned in
|
|||
|
(6.) are preserved in the language of the original document
|
|||
|
accompanied by verbatim translations to the language of the
|
|||
|
traslated document. All translations state clearly that the
|
|||
|
author is not responsible for the translated work. This license
|
|||
|
is included, at least in the language in which it is referenced
|
|||
|
in the original version.
|
|||
|
|
|||
|
8. Whatever the mode of storage, reproduction or dissemination,
|
|||
|
anyone able to access a digitized version of this document must
|
|||
|
be able to make a digitized copy in a format directly usable,
|
|||
|
and if possible editable, according to accepted, and publicly
|
|||
|
documented, public standards.
|
|||
|
|
|||
|
9. Redistributing this document to a third party requires
|
|||
|
simultaneous redistribution of this licence, without
|
|||
|
modification, and in particular without any further condition or
|
|||
|
restriction, expressed or implied, related or not to this
|
|||
|
redistribution. In particular, in case of inclusion in a
|
|||
|
database or collection, the owner or the manager of the database
|
|||
|
or the collection renounces any right related to this inclusion
|
|||
|
and concerning the possible uses of the document after
|
|||
|
extraction from the database or the collection, whether alone or
|
|||
|
in relation with other documents.
|
|||
|
|
|||
|
|
|||
|
Any incompatibility of the above clauses with legal, contractual
|
|||
|
or judiciary decisions or constraints implies a corresponding
|
|||
|
limitation of reading, usage, or redistribution rights for this
|
|||
|
document, verbatim or modified.
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Top, Next: Summary, Prev: (dir), Up: (dir)
|
|||
|
|
|||
|
The PiLLoW Web Programming Library
|
|||
|
**********************************
|
|||
|
|
|||
|
* Menu:
|
|||
|
|
|||
|
* Summary::
|
|||
|
* Introduction::
|
|||
|
* HTML/XML/CGI programming::
|
|||
|
* HTTP conectivity::
|
|||
|
* PiLLoW types::
|
|||
|
* References::
|
|||
|
* Predicate/Method Definition Index::
|
|||
|
* Regular Type Definition Index::
|
|||
|
* Global Index::
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Summary, Next: Introduction, Prev: Top, Up: Top
|
|||
|
|
|||
|
Summary
|
|||
|
*******
|
|||
|
|
|||
|
The PiLLoW library ("Programming in Logic Languages on the Web")
|
|||
|
is a public domain Internet/WWW programming library for Logic
|
|||
|
Programming Systems which simplifies the process of writing
|
|||
|
applications for such environment. The library provides facilities
|
|||
|
for generating HTML or XML structured documents by handling them as
|
|||
|
Herbrand terms, producing HTML forms, writing form handlers,
|
|||
|
processing HTML templates, accessing and parsing WWW documents
|
|||
|
(either HTML or XML), accessing code posted at HTTP addresses, etc.
|
|||
|
|
|||
|
The PiLLoW library has been developed in the context of the
|
|||
|
&-Prolog and Ciao systems, but it has been adapted to a number of
|
|||
|
popular Logic Programming systems. Note, however, that this manual is
|
|||
|
written for the Ciao system, so if you use it in other systems, minor
|
|||
|
details in the documentation may not completely agree. For example,
|
|||
|
whereas in Ciao the library is a package which loads modules `html'
|
|||
|
and `http', in the other systems it is just one module `pillow'.
|
|||
|
Thus, do not consider the _Library usage_ information in other
|
|||
|
systems.
|
|||
|
|
|||
|
PiLLoW is distributed under the GNU Library General Public License.
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Introduction, Next: HTML/XML/CGI programming, Prev: Summary, Up: Top
|
|||
|
|
|||
|
Introduction
|
|||
|
************
|
|||
|
|
|||
|
This package implements the PiLLoW library [CHV96]. The following
|
|||
|
three chapters document, respectively, the predicates for
|
|||
|
HTML/XML/CGI programming, the predicate for HTTP conectivity, and the
|
|||
|
types used in the definition of the predicates (key for fully
|
|||
|
understanding the other predicates). You can find a paper and some
|
|||
|
additional information in the `library/pillow/doc' directory of the
|
|||
|
distribution, and in the WWW at
|
|||
|
`http://clip.dia.fi.upm.es/Software/pillow/pillow.html'. There is
|
|||
|
also a _PiLLoW on-line tutorial_ (slides) at
|
|||
|
`http://clip.dia.fi.upm.es/logalg/slides/C_pillow/C_pillow.html'
|
|||
|
which illustrates the basic features and provides a number of
|
|||
|
examples of PiLLoW use.
|
|||
|
|
|||
|
* Menu:
|
|||
|
|
|||
|
* Installing PiLLoW::
|
|||
|
* Usage and interface (pillow)::
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Installing PiLLoW, Next: Usage and interface (pillow), Prev: Introduction, Up: Introduction
|
|||
|
|
|||
|
Installing PiLLoW
|
|||
|
=================
|
|||
|
|
|||
|
To correctly install PiLLoW, first, make sure you downloaded the
|
|||
|
right version of PiLLoW (there are different versions for different
|
|||
|
LP/CLP systems; the version that comes with Ciao is of course the
|
|||
|
right one for Ciao). Then, please follow these steps:
|
|||
|
|
|||
|
1. Copy the files in the `images' directory to a WWW accessible
|
|||
|
directory in your server.
|
|||
|
|
|||
|
2. Edit the file `icon_address.pl' and change the fact to point to
|
|||
|
the URL to be used to access the images above.
|
|||
|
|
|||
|
3. In the Ciao system the files are in the correct place, in other
|
|||
|
systems copy the files `pillow.pl' and `icon_address.pl' to a
|
|||
|
suitable directory so that your Prolog system will find them.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Usage and interface (pillow), Prev: Installing PiLLoW, Up: Introduction
|
|||
|
|
|||
|
Usage and interface (`pillow')
|
|||
|
==============================
|
|||
|
|
|||
|
* *Library usage:*
|
|||
|
|
|||
|
`:- use_package(pillow).'
|
|||
|
|
|||
|
or
|
|||
|
|
|||
|
`:- module(...,...,[pillow]).'
|
|||
|
|
|||
|
* *New operators defined:*
|
|||
|
|
|||
|
`$/2' [150,xfx], `$/1' [150,fx].
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: HTML/XML/CGI programming, Next: HTTP conectivity, Prev: Introduction, Up: Top
|
|||
|
|
|||
|
HTML/XML/CGI programming
|
|||
|
************************
|
|||
|
|
|||
|
*Author(s):* Daniel Cabeza, Manuel Hermenegildo, Sacha Varma.
|
|||
|
|
|||
|
*Version:* 1.7 (2000/7/12, 19:1:20 CEST)
|
|||
|
|
|||
|
*Version of last change:* 1.5#114 (2000/4/11, 20:23:43 CEST)
|
|||
|
|
|||
|
This module implements the predicates of the PiLLoW package
|
|||
|
related to HTML/ XML generation and parsing, CGI and form handlers
|
|||
|
programming, and in general all the predicates which do not imply the
|
|||
|
use of the HTTP protocol.
|
|||
|
|
|||
|
* Menu:
|
|||
|
|
|||
|
* Usage and interface (html)::
|
|||
|
* Documentation on exports (html)::
|
|||
|
* Documentation on multifiles (html)::
|
|||
|
* Other information (html)::
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Usage and interface (html), Next: Documentation on exports (html), Prev: HTML/XML/CGI programming, Up: HTML/XML/CGI programming
|
|||
|
|
|||
|
Usage and interface (`html')
|
|||
|
============================
|
|||
|
|
|||
|
* *Library usage:*
|
|||
|
|
|||
|
`:- use_module(library(html)).'
|
|||
|
|
|||
|
* *Exports:*
|
|||
|
- _Predicates:_
|
|||
|
|
|||
|
`output_html/1', `html2terms/2', `xml2terms/2',
|
|||
|
`html_template/3', `html_report_error/1',
|
|||
|
`get_form_input/1', `get_form_value/3',
|
|||
|
`form_empty_value/1', `form_default/3', `set_cookie/2',
|
|||
|
`get_cookies/1', `url_query/2', `my_url/1', `url_info/2',
|
|||
|
`url_info_relative/3', `form_request_method/1',
|
|||
|
`icon_address/2', `html_protect/1', `http_lines/3'.
|
|||
|
|
|||
|
- _Multifiles:_
|
|||
|
|
|||
|
`html_expansion/2'.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Documentation on exports (html), Next: Documentation on multifiles (html), Prev: Usage and interface (html), Up: HTML/XML/CGI programming
|
|||
|
|
|||
|
Documentation on exports (`html')
|
|||
|
=================================
|
|||
|
|
|||
|
- PREDICATE: output_html/1:
|
|||
|
`output_html(HTMLTerm)'
|
|||
|
|
|||
|
Outputs `HTMLTerm', interpreted as an `html_term/1', to current
|
|||
|
output stream.
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`HTMLTerm' is a term representing HTML code.
|
|||
|
(`html_term/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: html2terms/2:
|
|||
|
`html2terms(String,Terms)'
|
|||
|
|
|||
|
`String' is a character list containing HTML code and `Terms' is
|
|||
|
its prolog structured representation.
|
|||
|
|
|||
|
*Usage 1:*
|
|||
|
- _Description:_ Translates an HTML-term into the HTML code
|
|||
|
it represents.
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`String' is a free variable. (`var/1')
|
|||
|
|
|||
|
`Terms' is a term representing HTML code. (`html_term/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`String' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
*Usage 2:*
|
|||
|
- _Description:_ Translates HTML code into a structured
|
|||
|
HTML-term.
|
|||
|
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`Terms' is a term representing HTML code in canonical form.
|
|||
|
(`canonic_html_term/1')
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`String' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Terms' is a term representing HTML code in canonical form.
|
|||
|
(`canonic_html_term/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: xml2terms/2:
|
|||
|
`xml2terms(String,Terms)'
|
|||
|
|
|||
|
`String' is a character list containing XML code and `Terms' is
|
|||
|
its prolog structured representation.
|
|||
|
|
|||
|
*Usage 1:*
|
|||
|
- _Description:_ Translates a XML-term into the XML code it
|
|||
|
represents.
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`String' is a free variable. (`var/1')
|
|||
|
|
|||
|
`Terms' is a term representing HTML code. (`html_term/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`String' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
*Usage 2:*
|
|||
|
- _Description:_ Translates XML code into a structured
|
|||
|
XML-term.
|
|||
|
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`Terms' is a term representing XML code in canonical form.
|
|||
|
(`canonic_xml_term/1')
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`String' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Terms' is a term representing XML code in canonical form.
|
|||
|
(`canonic_xml_term/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: html_template/3:
|
|||
|
`html_template(Chars,Terms,Dict)'
|
|||
|
|
|||
|
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:
|
|||
|
* Variables representing page contents. A variable with name
|
|||
|
_name_ is defined with the special tag `<V>'_name_`</V>'.
|
|||
|
|
|||
|
* Variables representing tag attributes. They occur as an
|
|||
|
attribute or an attribute value starting with `_', followed
|
|||
|
by its name, which must be formed by alphabetic characters.
|
|||
|
|
|||
|
|
|||
|
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!"),"
|
|||
|
"]),"
|
|||
|
"]),"
|
|||
|
"] ?
|
|||
|
|
|||
|
yes
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`Terms' is a term representing HTML code in canonical form.
|
|||
|
(`canonic_html_term/1')
|
|||
|
|
|||
|
`Dict' is a list. (`list/1')
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`Chars' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Terms' is a term representing HTML code in canonical form.
|
|||
|
(`canonic_html_term/1')
|
|||
|
|
|||
|
`Dict' is a list. (`list/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: html_report_error/1:
|
|||
|
*Usage:* `html_report_error(Error)'
|
|||
|
- _Description:_ Outputs error `Error' as a standard HTML
|
|||
|
page.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: get_form_input/1:
|
|||
|
`get_form_input(Dict)'
|
|||
|
|
|||
|
Translates input from the form (with either the POST or GET
|
|||
|
methods, and even with CONTENT_TYPE multipart/form-data) to a
|
|||
|
dictionary `Dict' of _attribute_=_value_ pairs. It translates
|
|||
|
empty values (which indicate only the presence of an attribute)
|
|||
|
to the atom `'$empty'', values with more than one line (from
|
|||
|
text areas or files) to a list of lines as strings, the rest to
|
|||
|
atoms or numbers (using `name/2').
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`Dict' is a free variable. (`var/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Dict' is a dictionary of values of the attributes of a
|
|||
|
form. It is a list of `form_assignment' (`form_dict/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: get_form_value/3:
|
|||
|
`get_form_value(Dict,Var,Val)'
|
|||
|
|
|||
|
Unifies `Val' with the value for attribute `Var' in dictionary
|
|||
|
`Dict'. Does not fail: value is `''' if not found (this
|
|||
|
simplifies the programming of form handlers when they can be
|
|||
|
accessed directly).
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`Val' is a value of an attribute of a form.
|
|||
|
(`form_value/1')
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`Dict' is a dictionary of values of the attributes of a
|
|||
|
form. It is a list of `form_assignment' (`form_dict/1')
|
|||
|
|
|||
|
`Var' is an atom. (`atm/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Val' is a value of an attribute of a form.
|
|||
|
(`form_value/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: form_empty_value/1:
|
|||
|
*Usage:* `form_empty_value(Term)'
|
|||
|
- _Description:_ Checks that `Term', a value comming from a
|
|||
|
text area is empty (can have spaces, newlines and
|
|||
|
linefeeds).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: form_default/3:
|
|||
|
*Usage:* `form_default(Val,Default,NewVal)'
|
|||
|
- _Description:_ Useful when a form is only partially filled,
|
|||
|
or when the executable can be invoked either by a link or
|
|||
|
by a form, to set form defaults. If the value of `Val' is
|
|||
|
empty then `NewVal'=`Default', else `NewVal'=`Val'.
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`Val' is currently a term which is not a free variable.
|
|||
|
(`nonvar/1')
|
|||
|
|
|||
|
`Default' is currently a term which is not a free variable.
|
|||
|
(`nonvar/1')
|
|||
|
|
|||
|
`NewVal' is a free variable. (`var/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: set_cookie/2:
|
|||
|
`set_cookie(Name,Value)'
|
|||
|
|
|||
|
Sets a cookie of name `Name' and value `Value'. Must be invoked
|
|||
|
before outputting any data, including the `cgi_reply' html-term.
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`Name' is an atom. (`atm/1')
|
|||
|
|
|||
|
`Value' is an atomic term (an atom or a number).
|
|||
|
(`constant/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: get_cookies/1:
|
|||
|
`get_cookies(Cookies)'
|
|||
|
|
|||
|
Unifies `Cookies' with a dictionary of _attribute_=_value_ pairs
|
|||
|
of the active cookies for this URL.
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`Cookies' is a free variable. (`var/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Cookies' is a dictionary of values. It is a list of pairs
|
|||
|
_atom_=_constant_. (`value_dict/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: url_query/2:
|
|||
|
`url_query(Dict,URLArgs)'
|
|||
|
|
|||
|
Translates a dictionary `Dict' of parameter values into a string
|
|||
|
`URLArgs' for appending to a URL pointing to a form handler.
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`Dict' is a dictionary of values. It is a list of pairs
|
|||
|
_atom_=_constant_. (`value_dict/1')
|
|||
|
|
|||
|
`URLArgs' is a free variable. (`var/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`URLArgs' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: my_url/1:
|
|||
|
`my_url(URL)'
|
|||
|
|
|||
|
Unifies `URL' with the Uniform Resource Locator (WWW address) of
|
|||
|
this cgi executable.
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`URL' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`URL' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: url_info/2:
|
|||
|
`url_info(URL,URLTerm)'
|
|||
|
|
|||
|
Translates a URL `URL' to a Prolog structure `URLTerm' which
|
|||
|
details its various components, and vice-versa. For now non-HTTP
|
|||
|
URLs make the predicate fail.
|
|||
|
|
|||
|
*Usage 1:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`URL' is an atom. (`atm/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
*Usage 2:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`URL' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
*Usage 3:*
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`URL' is a free variable. (`var/1')
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`URL' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: url_info_relative/3:
|
|||
|
`url_info_relative(URL,BaseURLTerm,URLTerm)'
|
|||
|
|
|||
|
Translates a relative URL `URL' which appears in the HTML page
|
|||
|
refered to by `BaseURLTerm' into `URLTerm', a Prolog structure
|
|||
|
containing its absolute parameters. Absolute URLs are translated
|
|||
|
as with `url_info/2'. E.g.
|
|||
|
url_info_relative("dadu.html",
|
|||
|
http('www.foo.com',80,"/bar/scoob.html"), Info)
|
|||
|
gives `Info = http('www.foo.com',80,"/bar/dadu.html")'.
|
|||
|
|
|||
|
*Usage 1:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`URL' is an atom. (`atm/1')
|
|||
|
|
|||
|
`BaseURLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
*Usage 2:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`URL' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
`BaseURLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`URLTerm' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: form_request_method/1:
|
|||
|
*Usage:* `form_request_method(Method)'
|
|||
|
- _Description:_ Unifies `Method' with the method of
|
|||
|
invocation of the form handler (`GET' or `POST').
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Method' is an atom. (`atm/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: icon_address/2:
|
|||
|
`icon_address(Img,IAddress)'
|
|||
|
|
|||
|
The PiLLoW image `Img' has URL `IAddress'.
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`Img' is an atom. (`atm/1')
|
|||
|
|
|||
|
`IAddress' is an atom. (`atm/1')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Img' is an atom. (`atm/1')
|
|||
|
|
|||
|
`IAddress' is an atom. (`atm/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: html_protect/1:
|
|||
|
`html_protect(Goal)'
|
|||
|
|
|||
|
Calls `Goal'. If an error occurs during its execution, or it
|
|||
|
fails, an HTML page is output informing about the incident.
|
|||
|
Normaly the whole execution of a CGI is protected thus.
|
|||
|
|
|||
|
_Meta-predicate_ with arguments: `html_protect(goal)'.
|
|||
|
|
|||
|
*Usage:*
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`Goal' is a term which represents a goal, i.e., an atom or
|
|||
|
a structure. (`callable/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- PREDICATE: http_lines/3:
|
|||
|
*Usage:* `http_lines(Lines,String,Tail)'
|
|||
|
- _Description:_ `Lines' is a list of the lines with occur in
|
|||
|
`String' until `Tail'. The lines may end UNIX-style or
|
|||
|
DOS-style in `String', in `Lines' they have not end of line
|
|||
|
characters. Suitable to be used in DCGs.
|
|||
|
|
|||
|
- _Calls should, and exit will be compatible with:_
|
|||
|
|
|||
|
`Lines' is a list of `string's. (`list/2')
|
|||
|
|
|||
|
`String' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
`Tail' is a string (a list of character codes).
|
|||
|
(`string/1')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Documentation on multifiles (html), Next: Other information (html), Prev: Documentation on exports (html), Up: HTML/XML/CGI programming
|
|||
|
|
|||
|
Documentation on multifiles (`html')
|
|||
|
====================================
|
|||
|
|
|||
|
- PREDICATE: html_expansion/2:
|
|||
|
The predicate is _multifile_.
|
|||
|
|
|||
|
*Usage:* `html_expansion(Term,Expansion)'
|
|||
|
- _Description:_ Hook predicate to define macros. Expand
|
|||
|
occurrences of `Term' into `Expansion', in `output_html/1'.
|
|||
|
Take care to not transform something into itself!
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Other information (html), Prev: Documentation on multifiles (html), Up: HTML/XML/CGI programming
|
|||
|
|
|||
|
Other information (`html')
|
|||
|
==========================
|
|||
|
|
|||
|
The code uses input from from L. Naish's forms and F. Bueno's
|
|||
|
previous Chat interface. Other people who have contributed is (please
|
|||
|
inform us if we leave out anybody): Markus Fromherz, Samir Genaim.
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: HTTP conectivity, Next: PiLLoW types, Prev: HTML/XML/CGI programming, Up: Top
|
|||
|
|
|||
|
HTTP conectivity
|
|||
|
****************
|
|||
|
|
|||
|
*Author(s):* Daniel Cabeza.
|
|||
|
|
|||
|
*Version:* 1.7 (2000/7/12, 19:1:20 CEST)
|
|||
|
|
|||
|
*Version of last change:* 1.3#114 (1999/11/24, 0:57:16 MET)
|
|||
|
|
|||
|
This module implements the HTTP protocol, which allows retrieving
|
|||
|
data from HTTP servers.
|
|||
|
|
|||
|
* Menu:
|
|||
|
|
|||
|
* Usage and interface (http)::
|
|||
|
* Documentation on exports (http)::
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Usage and interface (http), Next: Documentation on exports (http), Prev: HTTP conectivity, Up: HTTP conectivity
|
|||
|
|
|||
|
Usage and interface (`http')
|
|||
|
============================
|
|||
|
|
|||
|
* *Library usage:*
|
|||
|
|
|||
|
`:- use_module(library(http)).'
|
|||
|
|
|||
|
* *Exports:*
|
|||
|
- _Predicates:_
|
|||
|
|
|||
|
`fetch_url/3'.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Documentation on exports (http), Prev: Usage and interface (http), Up: HTTP conectivity
|
|||
|
|
|||
|
Documentation on exports (`http')
|
|||
|
=================================
|
|||
|
|
|||
|
- PREDICATE: fetch_url/3:
|
|||
|
`fetch_url(URL,Request,Response)'
|
|||
|
|
|||
|
Fetches the document pointed to by `URL' from Internet, using
|
|||
|
request parameters `Request', and unifies `Response' with the
|
|||
|
parameters of the response. Fails on timeout. Note that
|
|||
|
redirections are not handled automatically, that is, if
|
|||
|
`Response' contains terms of the form
|
|||
|
`status(redirection,301,_)' and `location(NewURL)', the program
|
|||
|
should in most cases access location `NewURL'.
|
|||
|
|
|||
|
*Usage:* `fetch_url(URL,Request,Response)'
|
|||
|
- _The following properties should hold at call time:_
|
|||
|
|
|||
|
`URL' specifies a URL. (`url_term/1')
|
|||
|
|
|||
|
`Request' is a list of `http_request_param's. (`list/2')
|
|||
|
|
|||
|
- _The following properties hold upon exit:_
|
|||
|
|
|||
|
`Response' is a list of `http_response_param's. (`list/2')
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: PiLLoW types, Next: References, Prev: HTTP conectivity, Up: Top
|
|||
|
|
|||
|
PiLLoW types
|
|||
|
************
|
|||
|
|
|||
|
*Author(s):* Daniel Cabeza.
|
|||
|
|
|||
|
Here are defined the regular types used in the documentation of
|
|||
|
the predicates of the PiLLoW package.
|
|||
|
|
|||
|
* Menu:
|
|||
|
|
|||
|
* Usage and interface (pillow_types)::
|
|||
|
* Documentation on exports (pillow_types)::
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Usage and interface (pillow_types), Next: Documentation on exports (pillow_types), Prev: PiLLoW types, Up: PiLLoW types
|
|||
|
|
|||
|
Usage and interface (`pillow_types')
|
|||
|
====================================
|
|||
|
|
|||
|
* *Library usage:*
|
|||
|
|
|||
|
`:- use_module(library(pillow_types)).'
|
|||
|
|
|||
|
* *Exports:*
|
|||
|
- _Regular Types:_
|
|||
|
|
|||
|
`canonic_html_term/1', `canonic_xml_term/1', `html_term/1',
|
|||
|
`form_dict/1', `form_assignment/1', `form_value/1',
|
|||
|
`value_dict/1', `url_term/1', `http_request_param/1',
|
|||
|
`http_response_param/1', `http_date/1', `weekday/1',
|
|||
|
`month/1', `hms_time/1'.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Documentation on exports (pillow_types), Prev: Usage and interface (pillow_types), Up: PiLLoW types
|
|||
|
|
|||
|
Documentation on exports (`pillow_types')
|
|||
|
=========================================
|
|||
|
|
|||
|
- REGTYPE: canonic_html_term/1:
|
|||
|
A term representing HTML code in canonical, structured way. It
|
|||
|
is a list of terms defined by the following predicate:
|
|||
|
canonic_html_item(comment(S)) :-
|
|||
|
string(S).
|
|||
|
canonic_html_item(declare(S)) :-
|
|||
|
string(S).
|
|||
|
canonic_html_item(env(Tag,Atts,Terms)) :-
|
|||
|
atm(Tag),
|
|||
|
list(Atts,tag_attrib),
|
|||
|
canonic_html_term(Terms).
|
|||
|
canonic_html_item($(Tag,Atts)) :-
|
|||
|
atm(Tag),
|
|||
|
list(Atts,tag_attrib).
|
|||
|
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:
|
|||
|
*env(*_tag_*,*_attribs_*,*_terms_*)*
|
|||
|
An HTML environment, with name _tag_, list of attributes
|
|||
|
_attribs_ and contents _terms_.
|
|||
|
|
|||
|
*$(*_tag_*,*_attribs_*)*
|
|||
|
An HTML element of name _tag_ and list of attributes
|
|||
|
_attribs_. `($)/2' is defined by the pillow package as an
|
|||
|
infix, binary operator.
|
|||
|
|
|||
|
*comment(*_string_*)*
|
|||
|
An HTML comment (translates to/from `<!--'_string_`-->').
|
|||
|
|
|||
|
*declare(*_string_*)*
|
|||
|
An HTML declaration, they are used only in the header
|
|||
|
(translates to/from `<!'_string_`>').
|
|||
|
|
|||
|
_string_
|
|||
|
Normal text is represented as a list of character codes.
|
|||
|
|
|||
|
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)'
|
|||
|
- _Description:_ `HTMLTerm' is a term representing HTML code
|
|||
|
in canonical form.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: canonic_xml_term/1:
|
|||
|
A term representing XML code in canonical, structured way. It is
|
|||
|
a list of terms defined by the following predicate (see
|
|||
|
`tag_attrib/1' definition in `canonic_html_term/1'):
|
|||
|
canonic_xml_item(Term) :-
|
|||
|
canonic_html_item(Term).
|
|||
|
canonic_xml_item(xmldecl(Atts)) :-
|
|||
|
list(Atts,tag_attrib).
|
|||
|
canonic_xml_item(env(Tag,Atts,Terms)) :-
|
|||
|
atm(Tag),
|
|||
|
list(Atts,tag_attrib),
|
|||
|
canonic_xml_term(Terms).
|
|||
|
canonic_xml_item(elem(Tag,Atts)) :-
|
|||
|
atm(Tag),
|
|||
|
list(Atts,tag_attrib).
|
|||
|
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(*_tag_*,*_atts_*)*
|
|||
|
Specifies an XML empty element of name _tag_ and list of
|
|||
|
attributes _atts_. For example, the term
|
|||
|
elem(arc,[weigh="3",begin="n1",end="n2"])
|
|||
|
is output to (or parsed from):
|
|||
|
<arc weigh="3" begin="n1" end="n2"/>
|
|||
|
|
|||
|
*xmldecl(*_atts_*)*
|
|||
|
Specifies an XML declaration with attributes _atts_
|
|||
|
(translates to/from `<?xml '_atts_`?>')
|
|||
|
|
|||
|
*Usage:* `canonic_xml_term(XMLTerm)'
|
|||
|
- _Description:_ `XMLTerm' is a term representing XML code in
|
|||
|
canonical form.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: html_term/1:
|
|||
|
A term which represents HTML or XML code in a structured way. In
|
|||
|
addition to the structures defined by `canonic_html_term/1' or
|
|||
|
`canonic_xml_term/1', the following structures can be used:
|
|||
|
*begin(*_tag_*,*_atts_*)*
|
|||
|
It translates to the start of an HTML environment of name
|
|||
|
_tag_ and attributes _atts_. There exists also a
|
|||
|
*begin(_tag_)* structure. Useful, in conjunction with the
|
|||
|
next structure, when including in a document output
|
|||
|
generated by an existing piece of code (e.g. _tag_ =
|
|||
|
`pre'). Its use is otherwise discouraged.
|
|||
|
|
|||
|
*end(*_tag_*)*
|
|||
|
Translates to the end of an HTML environment of name _tag_.
|
|||
|
|
|||
|
*start*
|
|||
|
Used at the beginning of a document (translates to
|
|||
|
`<html>').
|
|||
|
|
|||
|
*end*
|
|||
|
Used at the end of a document (translates to `</html>').
|
|||
|
|
|||
|
`--'
|
|||
|
Produces a horizontal rule (translates to `<hr>').
|
|||
|
|
|||
|
*\\*
|
|||
|
Produces a line break (translates to `<br>').
|
|||
|
|
|||
|
*$*
|
|||
|
Produces a paragraph break (translates to `<p>').
|
|||
|
|
|||
|
*image(*_address_*)*
|
|||
|
Used to include an image of address (URL) _address_
|
|||
|
(equivalent to `img$[src='_address_`]').
|
|||
|
|
|||
|
*image(*_address_*,*_atts_*)*
|
|||
|
As above with the list of attributes _atts_.
|
|||
|
|
|||
|
*ref(*_address_*,*_text_*)*
|
|||
|
Produces a hypertext link, _address_ is the URL of the
|
|||
|
referenced resource, _text_ is the text of the reference
|
|||
|
(equivalent to `a([href='_address_`],'_text_`)').
|
|||
|
|
|||
|
*label(*_name_*,*_text_*)*
|
|||
|
Labels _text_ as a target destination with label _name_
|
|||
|
(equivalent to `a([name='_name_`],'_text_`)').
|
|||
|
|
|||
|
*heading(*_n_*,*_text_*)*
|
|||
|
Produces a heading of level _n_ (between 1 and 6), _text_
|
|||
|
is the text to be used as heading. Useful when one wants a
|
|||
|
heading level relative to another heading (equivalent to
|
|||
|
`h'_n_`('_text_`)').
|
|||
|
|
|||
|
*itemize(*_items_*)*
|
|||
|
Produces a list of bulleted items, _items_ is a list of
|
|||
|
corresponding HTML terms (translates to a `<ul>'
|
|||
|
environment).
|
|||
|
|
|||
|
*enumerate(*_items_*)*
|
|||
|
Produces a list of numbered items, _items_ is a list of
|
|||
|
corresponding HTML terms (translates to a `<ol>'
|
|||
|
environment).
|
|||
|
|
|||
|
*description(*_defs_*)*
|
|||
|
Produces a list of defined items, _defs_ is a list whose
|
|||
|
elements are definitions, each of them being a Prolog
|
|||
|
sequence (composed by `','/2' operators). The last element
|
|||
|
of the sequence is the definition, the other (if any) are
|
|||
|
the defined terms (translates to a `<dl>' environment).
|
|||
|
|
|||
|
*nice_itemize(*_img_*,*_items_*)*
|
|||
|
Produces a list of bulleted items, using the image _img_ as
|
|||
|
bullet. The predicate `icon_address/2' provides a colored
|
|||
|
bullet.
|
|||
|
|
|||
|
*preformatted(*_text_*)*
|
|||
|
Used to include preformatted text, _text_ is a list of HTML
|
|||
|
terms, each element of the list being a line of the
|
|||
|
resulting document (translates to a `<pre>' environment).
|
|||
|
|
|||
|
*verbatim(*_text_*)*
|
|||
|
Used to include text verbatim, special HTML characters
|
|||
|
(`<,>,&,"' and space) are translated into its quoted HTML
|
|||
|
equivalent.
|
|||
|
|
|||
|
*prolog_term(*_term_*)*
|
|||
|
Includes any prolog term _term_, represented in functional
|
|||
|
notation. Variables are output as `_'.
|
|||
|
|
|||
|
*nl*
|
|||
|
Used to include a newline in the HTML source (just to
|
|||
|
improve human readability).
|
|||
|
|
|||
|
*entity(*_name_*)*
|
|||
|
Includes the entity of name _name_ (ISO-8859-1 special
|
|||
|
character).
|
|||
|
|
|||
|
*start_form(*_addr_*,*_atts_*)*
|
|||
|
Specifies the beginning of a form. _addr_ is the address
|
|||
|
(URL) of the program that will handle the form, and _atts_
|
|||
|
other attributes of the form, as the method used to invoke
|
|||
|
it. If _atts_ is not present (there is only one argument)
|
|||
|
the method defaults to POST.
|
|||
|
|
|||
|
*start_form*
|
|||
|
Specifies the beginning of a form without assigning address
|
|||
|
to the handler, so that the form handler will be the
|
|||
|
cgi-bin executable producing the form.
|
|||
|
|
|||
|
*end_form*
|
|||
|
Specifies the end of a form.
|
|||
|
|
|||
|
*checkbox(*_name_*,*_state_*)*
|
|||
|
Specifies an input of type `checkbox' with name _name_,
|
|||
|
_state_ is `on' if the checkbox is initially checked.
|
|||
|
|
|||
|
*radio(*_name_*,*_value_*,*_selected_*)*
|
|||
|
Specifies an input of type `radio' with name _name_
|
|||
|
(several radio buttons which are interlocked must share
|
|||
|
their name), _value_ is the the value returned by the
|
|||
|
button, if _selected_=_value_ the button is initially
|
|||
|
checked.
|
|||
|
|
|||
|
*input(*_type_*,*_atts_*)*
|
|||
|
Specifies an input of type _type_ with a list of attributes
|
|||
|
_atts_. Possible values of _type_ are `text', `hidden',
|
|||
|
`submit', `reset', ldots
|
|||
|
|
|||
|
*textinput(*_name_*,*_atts_*,*_text_*)*
|
|||
|
Specifies an input text area of name _name_. _text_
|
|||
|
provides the default text to be shown in the area, _atts_ a
|
|||
|
list of attributes.
|
|||
|
|
|||
|
*option(*_name_*,*_val_*,*_options_*)*
|
|||
|
Specifies a simple option selector of name _name_,
|
|||
|
_options_ is the list of available options and _val_ is the
|
|||
|
initial selected option (if _val_ is not in _options_ the
|
|||
|
first item is selected by default) (translates to a
|
|||
|
`<select>' environment).
|
|||
|
|
|||
|
*menu(*_name_*,*_atts_*,*_items_*)*
|
|||
|
Specifies a menu of name _name_, list of attributes _atts_
|
|||
|
and list of options _items_. The elements of the list
|
|||
|
_items_ are marked with the prefix operator `$' to indicate
|
|||
|
that they are selected (translates to a `<select>'
|
|||
|
environment).
|
|||
|
|
|||
|
*form_reply*
|
|||
|
|
|||
|
*cgi_reply*
|
|||
|
This two are equivalent, they do not generate HTML, rather,
|
|||
|
the CGI protocol requires this content descriptor to be
|
|||
|
used at the beginning by CGI executables (including form
|
|||
|
handlers) when replying (translates to `Content-type:
|
|||
|
text/html').
|
|||
|
|
|||
|
*pr*
|
|||
|
Includes in the page a graphical logo with the message
|
|||
|
"Developed using the PiLLoW Web programming library", which
|
|||
|
points to the manual and library source.
|
|||
|
|
|||
|
_name_*(*_text_*)*
|
|||
|
A term with functor _name_/1, different from the special
|
|||
|
functors defined herein, represents an HTML environment of
|
|||
|
name _name_ and included text _text_. For example, the term
|
|||
|
address('clip@clip.dia.fi.upm.es')
|
|||
|
is translated into the HTML source
|
|||
|
<address>clip@clip.dia.fi.upm.es</address>
|
|||
|
|
|||
|
_name_*(*_atts_*,*_text_*)*
|
|||
|
A term with functor _name_/2, different from the special
|
|||
|
functors defined herein, represents an HTML environment of
|
|||
|
name _name_, attributes _atts_ and included text _text_.
|
|||
|
For example, the term
|
|||
|
|
|||
|
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)'
|
|||
|
- _Description:_ `HTMLTerm' is a term representing HTML code.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: form_dict/1:
|
|||
|
*Usage:* `form_dict(Dict)'
|
|||
|
- _Description:_ `Dict' is a dictionary of values of the
|
|||
|
attributes of a form. It is a list of `form_assignment'
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: form_assignment/1:
|
|||
|
*Usage:* `form_assignment(Eq)'
|
|||
|
- _Description:_ `Eq' is an assignment of value of an
|
|||
|
attribute of a form. It is defined by:
|
|||
|
form_assignment(A=V) :-
|
|||
|
atm(A),
|
|||
|
form_value(V).
|
|||
|
|
|||
|
form_value(A) :-
|
|||
|
atm(A).
|
|||
|
form_value(N) :-
|
|||
|
num(N).
|
|||
|
form_value(L) :-
|
|||
|
list(L,string).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: form_value/1:
|
|||
|
*Usage:* `form_value(V)'
|
|||
|
- _Description:_ `V' is a value of an attribute of a form.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: value_dict/1:
|
|||
|
*Usage:* `value_dict(Dict)'
|
|||
|
- _Description:_ `Dict' is a dictionary of values. It is a
|
|||
|
list of pairs _atom_=_constant_.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: url_term/1:
|
|||
|
A term specifying an Internet Uniform Resource Locator.
|
|||
|
Currently only HTTP URLs are supported. Example:
|
|||
|
`http('www.clip.dia.fi.upm.es',80,"/Software/Ciao/")'. Defined as
|
|||
|
url_term(http(Host,Port,Document)) :-
|
|||
|
atm(Host),
|
|||
|
int(Port),
|
|||
|
string(Document).
|
|||
|
|
|||
|
*Usage:* `url_term(URL)'
|
|||
|
- _Description:_ `URL' specifies a URL.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: http_request_param/1:
|
|||
|
A parameter of an HTTP request:
|
|||
|
* *head:* Specify that the document content is not wanted.
|
|||
|
|
|||
|
* *timeout(*_T_*):* _T_ specifies the time in seconds to wait
|
|||
|
for the response. Default is 300 seconds.
|
|||
|
|
|||
|
* *if_modified_since(*_Date_*):* Get document only if newer
|
|||
|
than _Date_. _Date_ has the format defined by `http_date/1'.
|
|||
|
|
|||
|
* *user_agent(*_Agent_*):* Provides a user-agent field,
|
|||
|
_Agent_ is an atom. The string `"PiLLoW/1.1"' (or whatever
|
|||
|
version of PiLLoW is used) is appended.
|
|||
|
|
|||
|
* *authorization(*_Scheme_,_Params_*):* To provide
|
|||
|
credentials. See RFC 1945 for details.
|
|||
|
|
|||
|
* *_option_(*_Value_*):* Any unary term, being _Value_ an
|
|||
|
atom, can be used to provide another valid option (e.g.
|
|||
|
`from('user@machine')').
|
|||
|
|
|||
|
*Usage:* `http_request_param(Request)'
|
|||
|
- _Description:_ `Request' is a parameter of an HTTP request.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: http_response_param/1:
|
|||
|
A parameter of an HTTP response:
|
|||
|
* *content(*_String_*):* _String_ is the document content
|
|||
|
(list of bytes). If the `head' parameter of the HTTP
|
|||
|
request is used, an empty list is get here.
|
|||
|
|
|||
|
* *status(*_Type,Code,Reason_*):* _Type_ is an atom denoting
|
|||
|
the response type, _Code_ is the status code (an integer),
|
|||
|
and _Reason_ is a string holding the reason phrase.
|
|||
|
|
|||
|
* *message_date(*_Date_*):* _Date_ is the date of the
|
|||
|
response, with format defined by `http_date/1'.
|
|||
|
|
|||
|
* *location(*_Loc_*):* This parameter appears when the
|
|||
|
document has moved, _Loc_ is an atom holding the new
|
|||
|
location.
|
|||
|
|
|||
|
* *http_server(*_Server_*):* _Server_ is the server
|
|||
|
responding, as a string.
|
|||
|
|
|||
|
* *authenticate(*_Params_*):* Returned if document is
|
|||
|
protected, _Params_ is a list of chagenges. See RFC 1945
|
|||
|
for details.
|
|||
|
|
|||
|
* *allow(*_Methods_*):* _Methods_ are the methods allowed by
|
|||
|
the server, as a list of atoms.
|
|||
|
|
|||
|
* *content_encoding(*_Encoding_*):* _Encoding_ is an atom
|
|||
|
defining the encoding.
|
|||
|
|
|||
|
* *content_length(*_Length_*):* _Length_ is the length of the
|
|||
|
document (an integer).
|
|||
|
|
|||
|
* *content_type(*_Type,Subtype,Params_*):* Specifies the
|
|||
|
document content type, _Type_ and _Subtype_ are atoms,
|
|||
|
_Params_ a list of parameters (e.g.
|
|||
|
`content_type(text,html,[])').
|
|||
|
|
|||
|
* *expires(*_Date_*):* _Date_ is the date after which the
|
|||
|
entity should be considered stale. Format defined by
|
|||
|
`http_date/1'.
|
|||
|
|
|||
|
* *last_modified(*_Date_*):* _Date_ is the date at which the
|
|||
|
sender believes the resource was last modified. Format
|
|||
|
defined by `http_date/1'.
|
|||
|
|
|||
|
* *pragma(*_String_*):* Miscellaneous data.
|
|||
|
|
|||
|
* *_header_(*_String_*):* Any other functor _header_/1 is an
|
|||
|
extension header.
|
|||
|
|
|||
|
*Usage:* `http_response_param(Response)'
|
|||
|
- _Description:_ `Response' is a parameter of an HTTP
|
|||
|
response.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: http_date/1:
|
|||
|
`http_date(Date)'
|
|||
|
|
|||
|
`Date' is a term defined as
|
|||
|
http_date(date(WeekDay,Day,Month,Year,Time)) :-
|
|||
|
weekday(WeekDay),
|
|||
|
int(Day),
|
|||
|
month(Month),
|
|||
|
int(Year),
|
|||
|
hms_time(Time).
|
|||
|
.
|
|||
|
|
|||
|
*Usage:* `http_date(Date)'
|
|||
|
- _Description:_ `Date' is a term denoting a date.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: weekday/1:
|
|||
|
A regular type, defined as follows:
|
|||
|
weekday('Monday').
|
|||
|
weekday('Tuesday').
|
|||
|
weekday('Wednesday').
|
|||
|
weekday('Thursday').
|
|||
|
weekday('Friday').
|
|||
|
weekday('Saturday').
|
|||
|
weekday('Sunday').
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: month/1:
|
|||
|
A regular type, defined as follows:
|
|||
|
month('January').
|
|||
|
month('February').
|
|||
|
month('March').
|
|||
|
month('April').
|
|||
|
month('May').
|
|||
|
month('June').
|
|||
|
month('July').
|
|||
|
month('August').
|
|||
|
month('September').
|
|||
|
month('October').
|
|||
|
month('November').
|
|||
|
month('December').
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- REGTYPE: hms_time/1:
|
|||
|
*Usage:* `hms_time(Time)'
|
|||
|
- _Description:_ `Time' is an atom of the form `hh:mm:ss'
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: References, Next: Predicate/Method Definition Index, Prev: PiLLoW types, Up: Top
|
|||
|
|
|||
|
References
|
|||
|
**********
|
|||
|
|
|||
|
*[CHV96]*
|
|||
|
D. Cabeza, M. Hermenegildo, and S. Varma.
|
|||
|
The PiLLoW/CIAO Library for INTERNET/WWW Programming using
|
|||
|
Computational Logic Systems.
|
|||
|
In _Proceedings of the 1st Workshop on Logic Programming Tools
|
|||
|
for INTERNET Applications_, pages 72-90, JICSLP'96, Bonn,
|
|||
|
September 1996.
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Predicate/Method Definition Index, Next: Regular Type Definition Index, Prev: References, Up: Top
|
|||
|
|
|||
|
Predicate/Method Definition Index
|
|||
|
*********************************
|
|||
|
|
|||
|
* Menu:
|
|||
|
|
|||
|
* fetch_url/3: Documentation on exports (http).
|
|||
|
* form_default/3: Documentation on exports (html).
|
|||
|
* form_empty_value/1: Documentation on exports (html).
|
|||
|
* form_request_method/1: Documentation on exports (html).
|
|||
|
* get_cookies/1: Documentation on exports (html).
|
|||
|
* get_form_input/1: Documentation on exports (html).
|
|||
|
* get_form_value/3: Documentation on exports (html).
|
|||
|
* html2terms/2: Documentation on exports (html).
|
|||
|
* html_expansion/2: Documentation on multifiles (html).
|
|||
|
* html_protect/1: Documentation on exports (html).
|
|||
|
* html_report_error/1: Documentation on exports (html).
|
|||
|
* html_template/3: Documentation on exports (html).
|
|||
|
* http_lines/3: Documentation on exports (html).
|
|||
|
* icon_address/2: Documentation on exports (html).
|
|||
|
* my_url/1: Documentation on exports (html).
|
|||
|
* output_html/1: Documentation on exports (html).
|
|||
|
* set_cookie/2: Documentation on exports (html).
|
|||
|
* url_info/2: Documentation on exports (html).
|
|||
|
* url_info_relative/3: Documentation on exports (html).
|
|||
|
* url_query/2: Documentation on exports (html).
|
|||
|
* xml2terms/2: Documentation on exports (html).
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Regular Type Definition Index, Next: Global Index, Prev: Predicate/Method Definition Index, Up: Top
|
|||
|
|
|||
|
Regular Type Definition Index
|
|||
|
*****************************
|
|||
|
|
|||
|
* Menu:
|
|||
|
|
|||
|
* canonic_html_term/1: Documentation on exports (pillow_types).
|
|||
|
* canonic_xml_term/1: Documentation on exports (pillow_types).
|
|||
|
* form_assignment/1: Documentation on exports (pillow_types).
|
|||
|
* form_dict/1: Documentation on exports (pillow_types).
|
|||
|
* form_value/1: Documentation on exports (pillow_types).
|
|||
|
* hms_time/1: Documentation on exports (pillow_types).
|
|||
|
* html_term/1: Documentation on exports (pillow_types).
|
|||
|
* http_date/1: Documentation on exports (pillow_types).
|
|||
|
* http_request_param/1: Documentation on exports (pillow_types).
|
|||
|
* http_response_param/1: Documentation on exports (pillow_types).
|
|||
|
* month/1: Documentation on exports (pillow_types).
|
|||
|
* url_term/1: Documentation on exports (pillow_types).
|
|||
|
* value_dict/1: Documentation on exports (pillow_types).
|
|||
|
* weekday/1: Documentation on exports (pillow_types).
|
|||
|
|
|||
|
|
|||
|
File: pillow_doc.info, Node: Global Index, Prev: Regular Type Definition Index, Up: Top
|
|||
|
|
|||
|
Global Index
|
|||
|
************
|
|||
|
|
|||
|
This is a global index containing pointers to places where
|
|||
|
concepts, predicates, modes, properties, types, applications, etc.,
|
|||
|
are referred to in the text of the document. Note that due to
|
|||
|
limitations of the `info' format unfortunately only the first
|
|||
|
reference will appear in online versions of the document.
|
|||
|
|
|||
|
* Menu:
|
|||
|
|
|||
|
* $/1: Usage and interface (pillow).
|
|||
|
* $/2: Usage and interface (pillow).
|
|||
|
* CGI <1>: HTML/XML/CGI programming.
|
|||
|
* CGI: Introduction.
|
|||
|
* GNU Library General Public License <1>: Summary.
|
|||
|
* GNU Library General Public License: (none).
|
|||
|
* HTML <1>: HTML/XML/CGI programming.
|
|||
|
* HTML: Introduction.
|
|||
|
* HTTP <1>: HTTP conectivity.
|
|||
|
* HTTP: Introduction.
|
|||
|
* PiLLoW on-line tutorial: Introduction.
|
|||
|
* WWW, interfacing with: Introduction.
|
|||
|
* XML <1>: HTML/XML/CGI programming.
|
|||
|
* XML: Introduction.
|
|||
|
* canonic_html_term/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* canonic_html_term/1: Usage and interface (pillow_types).
|
|||
|
* canonic_xml_term/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* canonic_xml_term/1: Usage and interface (pillow_types).
|
|||
|
* fetch_url/3 <1>: Documentation on exports (http).
|
|||
|
* fetch_url/3: Usage and interface (http).
|
|||
|
* form_assignment/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* form_assignment/1: Usage and interface (pillow_types).
|
|||
|
* form_default/3 <1>: Documentation on exports (html).
|
|||
|
* form_default/3: Usage and interface (html).
|
|||
|
* form_dict/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* form_dict/1: Usage and interface (pillow_types).
|
|||
|
* form_empty_value/1 <1>: Documentation on exports (html).
|
|||
|
* form_empty_value/1: Usage and interface (html).
|
|||
|
* form_request_method/1 <1>: Documentation on exports (html).
|
|||
|
* form_request_method/1: Usage and interface (html).
|
|||
|
* form_value/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* form_value/1: Usage and interface (pillow_types).
|
|||
|
* get_cookies/1 <1>: Documentation on exports (html).
|
|||
|
* get_cookies/1: Usage and interface (html).
|
|||
|
* get_form_input/1 <1>: Documentation on exports (html).
|
|||
|
* get_form_input/1: Usage and interface (html).
|
|||
|
* get_form_value/3 <1>: Documentation on exports (html).
|
|||
|
* get_form_value/3: Usage and interface (html).
|
|||
|
* hms_time/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* hms_time/1: Usage and interface (pillow_types).
|
|||
|
* html2terms/2 <1>: Documentation on exports (html).
|
|||
|
* html2terms/2: Usage and interface (html).
|
|||
|
* html_expansion/2 <1>: Documentation on multifiles (html).
|
|||
|
* html_expansion/2: Usage and interface (html).
|
|||
|
* html_protect/1 <1>: Documentation on exports (html).
|
|||
|
* html_protect/1: Usage and interface (html).
|
|||
|
* html_report_error/1 <1>: Documentation on exports (html).
|
|||
|
* html_report_error/1: Usage and interface (html).
|
|||
|
* html_template/3 <1>: Documentation on exports (html).
|
|||
|
* html_template/3: Usage and interface (html).
|
|||
|
* html_term/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* html_term/1 <2>: Usage and interface (pillow_types).
|
|||
|
* html_term/1: Documentation on exports (html).
|
|||
|
* http_date/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* http_date/1: Usage and interface (pillow_types).
|
|||
|
* http_lines/3 <1>: Documentation on exports (html).
|
|||
|
* http_lines/3: Usage and interface (html).
|
|||
|
* http_request_param/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* http_request_param/1: Usage and interface (pillow_types).
|
|||
|
* http_response_param/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* http_response_param/1: Usage and interface (pillow_types).
|
|||
|
* icon_address.pl: Installing PiLLoW.
|
|||
|
* icon_address/2 <1>: Documentation on exports (pillow_types).
|
|||
|
* icon_address/2 <2>: Documentation on exports (html).
|
|||
|
* icon_address/2: Usage and interface (html).
|
|||
|
* library/pillow/doc: Introduction.
|
|||
|
* month/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* month/1: Usage and interface (pillow_types).
|
|||
|
* my_url/1 <1>: Documentation on exports (html).
|
|||
|
* my_url/1: Usage and interface (html).
|
|||
|
* name/2: Documentation on exports (html).
|
|||
|
* output_html/1 <1>: Documentation on multifiles (html).
|
|||
|
* output_html/1 <2>: Documentation on exports (html).
|
|||
|
* output_html/1: Usage and interface (html).
|
|||
|
* pillow.pl: Installing PiLLoW.
|
|||
|
* set_cookie/2 <1>: Documentation on exports (html).
|
|||
|
* set_cookie/2: Usage and interface (html).
|
|||
|
* tag_attrib/1: Documentation on exports (pillow_types).
|
|||
|
* url_info/2 <1>: Documentation on exports (html).
|
|||
|
* url_info/2: Usage and interface (html).
|
|||
|
* url_info_relative/3 <1>: Documentation on exports (html).
|
|||
|
* url_info_relative/3: Usage and interface (html).
|
|||
|
* url_query/2 <1>: Documentation on exports (html).
|
|||
|
* url_query/2: Usage and interface (html).
|
|||
|
* url_term/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* url_term/1: Usage and interface (pillow_types).
|
|||
|
* value_dict/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* value_dict/1: Usage and interface (pillow_types).
|
|||
|
* weekday/1 <1>: Documentation on exports (pillow_types).
|
|||
|
* weekday/1: Usage and interface (pillow_types).
|
|||
|
* xml2terms/2 <1>: Documentation on exports (html).
|
|||
|
* xml2terms/2: Usage and interface (html).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Tag Table:
|
|||
|
Node: Top4321
|
|||
|
Node: Summary4681
|
|||
|
Node: Introduction5915
|
|||
|
Node: Installing PiLLoW6801
|
|||
|
Node: Usage and interface (pillow)7648
|
|||
|
Node: HTML/XML/CGI programming7989
|
|||
|
Node: Usage and interface (html)8702
|
|||
|
Node: Documentation on exports (html)9500
|
|||
|
Node: Documentation on multifiles (html)24047
|
|||
|
Node: Other information (html)24607
|
|||
|
Node: HTTP conectivity24998
|
|||
|
Node: Usage and interface (http)25459
|
|||
|
Node: Documentation on exports (http)25796
|
|||
|
Node: PiLLoW types26836
|
|||
|
Node: Usage and interface (pillow_types)27195
|
|||
|
Node: Documentation on exports (pillow_types)27836
|
|||
|
Node: References44475
|
|||
|
Node: Predicate/Method Definition Index44926
|
|||
|
Node: Regular Type Definition Index46696
|
|||
|
Node: Global Index48051
|
|||
|
|
|||
|
End Tag Table
|