我目前正在做一个项目,需要一些用prolog编写的web应用程序,我选择使用著名的swi prolog pwp库。它解析ascript with prolog queries inside an HTML file
我有一个页面响应以下请求示例:

/user?id=N

其中N是整数值。
但是我很难读取html文件中请求的查询字符串ID
我有.pl文件:
showUser(UserId, Request) :-
    reply_pwp_file(mydir('user_page.html'), [mime_type('text/html')], Request).

我不知道如何读取UserIdRequest来再次检索查询字符串中的用户id。
我在html标记中尝试了这种方法:
<span pwp:ask="http_parameters(Request, [id(UserId, [optional(true)])])." pwp:use="UserId" />

以前有人遇到过这种麻烦吗?
非常感谢。
这里有一些有趣的链接可以帮助我们:
PWP/SGML Pages
SWI-Prolog HTTP Library

最佳答案

我花了一些时间,但至少我已经能够运行在~/pl devel/packages/http/examples中找到的demo_pwp.pl。现在,以后

?- server(1234).

我打开URL
http://localhost:1234/user_id.pwp?user_id=1&user_name=carlo

我在~/pl-devel/packages/http/examples/pwp/user_id.pwp文件中写的
<?xml version="1.0"?>
<!DOCTYPE html>

<html xmlns:pwp="http://www.cs.otago.ac.nz/staffpriv/ok/pwp.pl">

<head>
  <title>Context variables for PWP scripts</title>
</head>
<body>
  <p>This PWP demo lists the context-parameters that are passed into
     the script.
  </p>
  <ul>
    <li pwp:ask="member(Name=Value, CONTEXT)">
      <span class=name pwp:use="Name"/>
      =
      <span class=value pwp:use="writeq(Value)"/>
    </li>
  </ul>
  <!-- here is the specific part for my answer -->
  <p pwp:ask="memberchk('QUERY'=Q, CONTEXT),memberchk(user_id=UID,Q),memberchk(user_name=NAME,Q)">
     UID : <span pwp:use="UID"/> / NAME : <span pwp:use="NAME"/>
  </p>
  <!-- nested access is well thought -->
  <p pwp:ask="member('QUERY'=Q,CONTEXT)">
     UID : <span pwp:use="UID" pwp:ask="member(user_id=UID,Q)"/>
   / NAME : <span pwp:use="NAME" pwp:ask="member(user_name=NAME,Q)"/>
  </p>
</body>

</html>

(这是context.pwp的副本,底部添加了我的信息)
我得到了
This PWP demo lists the context-parameters that are passed into the script.
...
-   QUERY = [user_id='1',user_name=carlo]
...
UID : 1 / NAME : carlo
UID : 1 / NAME : carlo

然后我可以确认朱利奥建议的指导方针是正确的。

关于http - 在Prolog中处理PWP HTML页面内的http查询字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15887958/

10-13 07:50