gpt4 book ai didi

html - 我不知道如何在带有 eXist 数据库的 html 文件中使用 xqueries

转载 作者:搜寻专家 更新时间:2023-10-30 20:29:31 27 4
gpt4 key购买 nike

这可能真的很简单,但我不知道该怎么做。我有这些东西:

  • 一个 HTML 文件
  • 一个 eXist 数据库,其集合只包含一个带有名称的 XML 文件
  • 还有一个非常基本的 xquery 文件,其中包含命令 count(//name)

当然,当我在 eXist 客户端中执行 xqy 文件时,它运行良好,但我想做的只是在我的 HTML 文件中打印:

Names in the file : 49 // 49 is the result of the count(//name)

我该怎么办?

最佳答案

传统上,在 eXist-db (*) 中,XQuery 没有嵌入到您的 .html 文件中。 XQuery 文件本身组装您的结果并将它们序列化到浏览器。所以你可能有一个像这样的 .xqy 文件(通过,比如说 http://yourserver.com:8080/exist/apps/myapp/get-names.xqy 调用):

xquery version "1.0";

declare option exist:serialize "method=xhtml media-type=text/html";

let $count := count(//name)
return
<html>
<head/>
<body>
<div><p>There are {$count} names in the database</p></div>
</body>
</html>

如果您想将 HTML 的静态片段(例如标题)放入此文件中,只需将它们嵌入 XQuery 中或使用 doc() 函数调用它们并插入它们,就像我在上面对 $count 所做的那样:

let $header := doc('/db/myapp/header.html')

您还可以扩展此模式并开发您自己的模板模块,以将应用程序的内容提供给模板,即 template:assemble-page($title, $content) 将返回一个完整的 HTML 页面,其中 $title 在head/title 和 body/h1 以及正文中的内容 -- 带有静态页眉、页脚等,如函数中指定的那样。

(*) 从 eXist-db 2.0(目前作为候选发布版提供)开始,有一个新的模板框架可以让您在 HTML 模板中嵌入函数调用。这意味着更少的 XQuery 和 HTML 混合/嵌套,以及更清晰的关注点分离。要了解更多信息,请阅读这篇文章,Getting Started with Web Application Development in eXist-db .它真的非常优雅,我认为您可能会发现它比我上面描述的方法更可取。在此框架中,您将保持 .html 文件不变,并按以下方式引用 count(//name) 例程:

<p>There are <span class="app:count-names"/> names in the database</p>

框架将 span/@class 视为对您已注册的模块中的函数 count-names() 的引用,例如/db/apps/myapp/modules/app.xql。因此,假设您已经创建了该模块和函数 app:count-names(),那么当您调用 get-names.html 页面时,数据库会动态地将上面的元素转换为 app:count-names() 的结果,例如,42。

希望对您有所帮助。

关于html - 我不知道如何在带有 eXist 数据库的 html 文件中使用 xqueries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com