forked from mthom/scryer-prolog
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DOC: convert library(sgml) documentation to DocLog format
- Loading branch information
Showing
1 changed file
with
47 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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]). | ||
|