2014-01-10 30 views
2

我已經在那裏我包括通過模板index.html的數據的HTML模板:存在,但DB包括.xq數據

<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 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文件?

在此先感謝。

回答

6

默認情況下,eXist-db的模板框架對文件擴展名爲.html的文件的請求進行操作,而不是對.xq文件進行操作。如您所見,模板框架通過未更改的文件傳遞非.html文件的結果。 (如果您在應用程序集合中打開controller.xql文件,您將看到.html文件的特殊處理。)因此,您的表單將搜索參數提交給.html文件,該文件使用模板框架的約定來調用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)稱爲秀 - 搜索結果(),與傳統的參數功能。這是您將要放置搜索XQuery代碼的位置。