我有一个index.html数据,其中包括模板,通过:
<div xmlns="http://www.w3.org/1999/xhtml" data-template="templates:surround" data-template-with="templates/page.html" data-template-at="content">
在索引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文件的输出中也使用这个模板?
提前谢谢。
最佳答案
默认情况下,exist db的模板框架对文件扩展名为.html
的文件的请求进行操作,而不是对.xq
的文件进行操作。正如您所发现的,模板化框架将非-.html
文件的结果传递给unchanged。(如果在应用程序集合中打开.html
文件,您将看到对controller.xql
文件的特殊处理。)因此,让表单将搜索参数提交到使用模板化框架的约定调用xquery代码的ksearch.xq
文件,而不是.html
,例如,
<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代码的地方。关于html - eXist-db在.xq数据中包含html模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21042783/