eXist-db 在 .xq 数据中包含 html 模板

Posted

技术标签:

【中文标题】eXist-db 在 .xq 数据中包含 html 模板【英文标题】:eXist-db include html template in .xq data 【发布时间】:2014-01-29 08:03:21 【问题描述】:

我有一个 index.html 数据,我通过以下方式包含了模板:

<div xmlns="http://www.w3.org/1999/xhtml" data-template="templates:surround" data-template-with="templates/page.html" data-template-at="content">

在 index html 网站上,我包含了一个关键字搜索表单,其想法是当我单击搜索按钮时,它应该调用一个 .xq 文件来请求搜索结果:

<form method="GET" action="ksearch.xq">

当我提交表单时,ksearch.xq 页面打开,但即使我包含与上面相同的模板 div:

<div xmlns="http://www.w3.org/1999/xhtml" data-template="templates:surround" data-template-with="templates/page.html" data-template-at="content">

ksearch.xq 页面没有应用模板。

似乎当我调用 .xq 文件时没有应用模板,但是当我调用纯 HTML 文件时,应用了模板。

所以问题是如何在 .xq 文件的输出中也使用此模板?

提前致谢。

【问题讨论】:

【参考方案1】:

默认情况下,eXist-db 的模板框架对带有.html 文件扩展名的文件的请求进行操作,而不是对.xq 文件的请求。如您所见,模板框架将来自非.html 文件的结果原封不动地传递。 (如果您在应用程序的集合中打开 controller.xql 文件,您将看到对 .html 文件的特殊处理。)因此,不是 ksearch.xq,而是让您的表单将搜索参数提交到使用模板框架调用 XQuery 代码的约定,例如,

<div xmlns="http://www.w3.org/1999/xhtml" data-template="templates:surround" data-template-with="templates/page.html" data-template-at="content">
    <div class="app:show-search-results"/>
</div>

这个app:show-search-results 类(我编造的)将指向app 模块(在/db/apps/myapp/modules/app.xqm 中)中称为show-search-results() 的函数,使用模板中其他地方使用的常规参数职能。这是您放置搜索 XQuery 代码的地方。

【讨论】:

以上是关于eXist-db 在 .xq 数据中包含 html 模板的主要内容,如果未能解决你的问题,请参考以下文章

当首先使用带有数据注释的 MVC 代码时,如何在显示名称中包含 html 标记?

在 Jekyll 标签中包含 HTML

Handlebars JS:在数据中包含 <li>、<br> 和其他 HTML 标签

Ajax异步获取html数据中包含js方法无效的解决方法

Ajax异步获取html数据中包含js方法无效的解决方法

在 Jquery mobile 的一个页面中包含几页