Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SWI-Prolog';s http/html_write library将html写入文件_Html_Prolog_Swi Prolog - Fatal编程技术网

如何使用SWI-Prolog';s http/html_write library将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

我正在尝试使用SWI Prolog生成一个HTML文件。我想生成下面的HTML并将其写入名为“mypage.HTML”的文件:


你好
你好
这是一个段落

到目前为止,我已经编写了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表示形式转换为字符串并写入文件的最小示例。