html - 如何使用 SWI Prolog 的 http/html_write 库将 HTML 写入文件
问题描述
我正在尝试使用 SWI Prolog 的library(http/html_write)
. 我想生成下面的 HTML 并将其写入名为“mypage.html”的文件中:
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Hello</h1>
<p id="my-id">This is a paragraph.</p>
</body>
</html>
到目前为止,我已经编写了 HTML 的 Prolog 表示:
html(head(title('Hello')),
body([h1('Hello'),
p(id('my-id'), 'This is a paragraph.')]))
怎么办?如何实际将此表示形式转换为字符串,然后将其写入名为“mypage.html”的文件?我已阅读文档(使用 HTML 写入库的示例),但我无法理解如何将 HTML 表示形式转换为字符串。
我尝试使用html_write:print_html/1
,但它所做的只是像我写的那样打印结构:
$ swipl --quiet
?- use_module(library(http/html_write)).
true.
?- print_html([html(head(title('Hello')),
| body([h1('Hello'),
| p(id('my-id'), 'This is a paragraph.')]))]).
html(head(title(Hello)),body([h1(Hello),p(id(my-id),This is a paragraph.)]))
true.
?-
您能否提供一个最小的工作示例,将 HTML 的 Prolog 表示形式转换为字符串,然后写入文件?
更新:我已经交叉发布了这个问题并在 SWi Prolog 的论坛上收到了回复:如何使用 http/html_write 库将 HTML 写入文件
解决方案
您的代码已经写入了一个字符串。要将其写入映射到文件的流,只需使用此 print_html(+Stream, +List)。
也许您想要一个使用 html 响应 http://localhost:8080/hello_world 的网站的最小工作示例
:- use_module(library(http/thread_httpd)).
:- use_module(library(http/http_dispatch)).
:- use_module(library(http/html_write)).
:- http_handler(root(hello_world), say_hi, []).
:- http_server(http_dispatch, [port(8080)]).
say_hi(_Request) :-
reply_html_page(title('Hello World'),
[ h1('Hello World'),
p(['This example demonstrates generating HTML ',
'messages from Prolog'
])
]).
查阅此文件并将浏览器指向给定的 URI。
推荐阅读
- c# - 暮光之声
- DotNetCore - Digits 参数始终为空 - android - fetching data from Firebase with Android Kotlin
- java - 在反应流上递归加载和映射
- javascript - The order of photos in modal windows
- r - Reshape data using pivot_wider function
- amazon-s3 - Kafka连接s3 sink多个分区
- angular - 我可以在当然有 Api 的同一个 FastApi 中提供 Angular 应用程序吗?
- docker - Traefik 2 howto basicauth 非 docker 服务?
- r - 合并R中没有唯一列的两个数据集
- r - Grouping, Selecting, and Mutate using R