如何使用SWI-Prolog';s http/html_write library将html写入文件
我正在尝试使用SWI Prolog生成一个HTML文件。我想生成下面的HTML并将其写入名为“mypage.HTML”的文件:如何使用SWI-Prolog';s http/html_write library将html写入文件,html,prolog,swi-prolog,Html,Prolog,Swi Prolog,我正在尝试使用SWI Prolog生成一个HTML文件。我想生成下面的HTML并将其写入名为“mypage.HTML”的文件: 你好 你好 这是一个段落 到目前为止,我已经编写了HTML的Prolog表示: html(head(title('Hello')), body([h1('Hello'), p(id('my-id'), 'This is a paragraph.')])) 现在怎么办?如何将这个表示转换成字符串,然后将其写入名为“mypage.htm
你好
你好
这是一个段落
到目前为止,我已经编写了HTML的Prolog表示:
html(head(title('Hello')),
body([h1('Hello'),
p(id('my-id'), 'This is a paragraph.')]))
现在怎么办?如何将这个表示转换成字符串,然后将其写入名为“mypage.html”的文件?我已经阅读了文档(),但我无法理解如何将HTML表示转换为字符串
我尝试使用html\u write:print\u 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论坛上收到了回复:您的代码已经写入了一个字符串。要将其写入映射到文件的流,只需使用这个print_html(+流,+列表) 也许您需要一个使用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。我按照您的建议尝试了
print_html/2
:open('mypage.html',write,Stream),print_html(Stream,[html(head(title('Hello'))),body([h1('Hello'),p(id('my-id'),'this is a paragration'))))])。
,但是Prolog结构是写在mypage.html
而不是html中的,我已经知道如何在localhost上提供html页面。这不是问题所在。问题在于提供一个将HTML的Prolog表示形式转换为字符串并写入文件的最小示例。