我是 BaseX 新手,正在尝试设置一个简单的 Web 应用程序。以 DBA 为例,我可以看到有一个文件
webapp/dba/static/style.css
,在 HTML 中被引用为 <link rel='stylesheet' type='text/css' href='static/style.css'/>
,XQuery 模块中的 HTML 输出位于 webapp/dba/lib/html.xqm
。在我自己的项目中,我希望在 webapp/first/second/third/default.xqm
等路径中拥有一个 XQuery 模块,并使用 RESTXQ 函数返回包含 link
的 HTML 文档,但我无法确定 @href
使用哪个路径
.
查看 GET 请求标头,我可以看到浏览器正在寻找
/first/second/third/static/style.css
。但是当我将 CSS 文件放入该路径时,浏览器会为 CSS 文件返回 404。我尝试了 CSS 文件位置和 @href 中路径的几种不同组合。看来我误解了路径是如何解析的。
使用RESTXQ时,您的应用程序中需要有一个函数,其路径注释与浏览器请求路径匹配。该函数可以创建任何响应。它可以根据您的代码选择从任何地方返回文件内容。
以 DBA 应用程序为例。此 function 匹配以
dba/static/...
开头的任何路径,并从磁盘返回“static/”|| 处的文件内容。 $file 相对于 common.xqm 模块文件路径。您需要在您的应用程序中编写类似的内容。
或者,更简单但不太灵活,在默认的 BaseX 配置浏览器中,请求从
webapp/static
文件夹内的路径自动读取以 '/static/.. 开头的路径,而无需编写额外的代码。