Skip to content

Commit

Permalink
DOC: convert library(sgml) documentation to DocLog format
Browse files Browse the repository at this point in the history
  • Loading branch information
triska committed Jan 24, 2023
1 parent 26d39c3 commit af9f0f8
Showing 1 changed file with 47 additions and 34 deletions.
81 changes: 47 additions & 34 deletions src/lib/sgml.pl
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,69 @@
Predicates for parsing HTML and XML documents.
Written 2020-2022 by Markus Triska ([email protected])
Part of Scryer Prolog.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

Currently, two predicates are provided:
/** Predicates for parsing HTML and XML documents.
- load_html(+Source, -Es, +Options)
- load_xml(+Source, -Es, +Options)
Currently, two predicates are provided:
These predicates parse HTML and XML documents, respectively.
- `load_html(+Source, -Es, +Options)`
- `load_xml(+Source, -Es, +Options)`
Source must be one of:
These predicates parse HTML and XML documents, respectively.
- a list of characters with the document contents
- stream(S), specifying a stream S from which to read the content
- file(Name), where Name is a list of characters specifying a file name.
Source must be one of:
Es is unified with the abstract syntax tree of the parsed document,
represented as a list of elements where each is of the form:
- a list of characters with the document contents
- `stream(S)`, specifying a stream S from which to read the content
- `file(Name)`, where Name is a list of characters specifying a file name.
* a list of characters, representing text
* element(Name, Attrs, Children)
- Name, an atom, is the name of the tag
- Attrs is a list of Key=Value pairs:
Key is an atom, and Value is a list of characters
- Children is a list of elements as specified here.
Es is unified with the abstract syntax tree of the parsed document,
represented as a list of elements where each is of the form:
Currently, Options are ignored. In the future, more options may be
provided to control parsing.
* a list of characters, representing text
Example:
* `element(Name, Attrs, Children)`
?- load_html("<html><head><title>Hello!</title></head></html>", Es, []).
- `Name`, an atom, is the name of the tag
Yielding:
- `Attrs` is a list of `Key=Value` pairs:
`Key` is an atom, and `Value` is a list of characters
Es = [element(html,[],
[element(head,[],
[element(title,[],
["Hello!"])]),
element(body,[],[])])].
- `Children` is a list of elements as specified here.
library(xpath) provides convenient reasoning about parsed documents.
For example, to fetch the title of the document above, we can use:
Currently, Options are ignored. In the future, more options may be
provided to control parsing.
?- load_html("<html><head><title>Hello!</title></head></html>", Es, []),
xpath(Es, //title(text), T).
Example:
Yielding T = "Hello!".
```
?- load_html("<html><head><title>Hello!</title></head></html>", Es, []).
```
Use http_open/3 from library(http/http_open) to read answers from
web servers via streams.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Yielding:
```
Es = [element(html,[],
[element(head,[],
[element(title,[],
["Hello!"])]),
element(body,[],[])])].
```
`library(xpath)` provides convenient reasoning about parsed documents.
For example, to fetch the title of the document above, we can use:
```
?- load_html("<html><head><title>Hello!</title></head></html>", Es, []),
xpath(Es, //title(text), T).
```
Yielding `T = "Hello!"`.
Use `http_open/3` from `library(http/http_open)` to read answers from
web servers via streams.
*/

:- module(sgml, [load_html/3,
load_xml/3]).
Expand Down

0 comments on commit af9f0f8

Please sign in to comment.