我有一个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文件时使用此模板?
提前致谢。
答案 0 :(得分:7)
.html
的文件的请求进行操作,而不是.xq
个文件。正如您所发现的,模板框架将非.html
文件的结果传递给未更改的文件。 (如果您打开应用程序集合中的.html
文件,您将看到controller.xql
文件的特殊处理。)因此,请将表单提交给{ksearch.xq
,而不是.html
。 {1}}文件,它使用模板框架的约定来调用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代码的地方。