私はexist-dbアプリケーションでRESTXQを使用しようとしています。これを "superapp"と呼ぶことができます。 私は/db/apps/superapp/collection.xconfにrestxqトリガを追加しました:eXist-dbにRESTXQモジュールを登録するには?
<collection xmlns="http://exist-db.org/collection-config/1.0">
<index xmlns:xs="http://www.w3.org/2001/XMLSchema">
<fulltext default="none" attributes="false"/>
</index>
<triggers>
<trigger class="org.exist.extensions.exquery.restxq.impl.RestXqTrigger"/>
</triggers>
</collection>
は、それから私は、フォルダ/ DB /アプリケーション/ superapp /モジュールにファイル "restxq-test.xql" を追加しました:
xquery version "3.0";
module namespace test="http://exist-db.org/apps/restxq/test";
declare namespace rest="http://exquery.org/ns/restxq";
declare namespace output="http://www.w3.org/2010/xslt-xquery-serialization";
declare
%rest:GET
%rest:path("/super")
%output:media-type("text/html")
%output:method("html5")
%rest:query-param("user", "{$user}", "Guest")
function test:hello($user as xs:string*) {
let $title := 'Hello '
return
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$title}</title>
</head>
<body>
<h1>{$title , $user}</h1>
</body>
</html>
};
しかし、この新しいモジュールがrestxqに「知っている」ようにするにはどうすればよいですか?明らかにそれは自動的には行われません。私が呼び出した場合、 "xyz.com:8080/exist/restxq/super?user=Johnは" 私は
HTTP ERROR 405
Problem accessing /exist/restxq/super. Reason:
HTTP method GET is not supported by this URL
は、私が存在し、再起動を取得し、私がチェックの/ var/www /の存在/ webappの/ WEB-INF /ログ/ restxq.logしかしそこにはエントリがありません...私は関数と属性のマッピングが正しいと確信しています。 "/db/apps/demo/examples/templating/restxq-demo.xql"(これは明らかに登録されています)に同じ機能を追加すると、完璧に機能します。だから私は新しいモジュールがちょうど登録されていないと思います。どうやってやるの?
ありがとうございました。これはうまくいった。しかし、私はRESTXQを使っているすべてのデモアプリケーションがなぜ/db/apps/appXYZ/collection.xconfフォルダにトリガーを追加するのか不思議です。それは私のような初心者にとってはちょっと混乱します。 –
申し訳ありませんが、それらのアプリはひどく設計されています。彼らは便宜のために自分のコレクションにそれを持っていて、pre-install.xqlはファイルをコピーするのではなく、 – adamretter
をコピーします.Dのおかげで助けと情報 –