我如何通过 eXist-db 的 REST api 传递 xquery?
How do I pass xquery through eXist-db's REST api?
我了解如何使用 Xpath
http://localhost:8080/exist/rest/db/movies?_query=//movie[title=%22Spider-Man%22]/node()
但是如何传递一个xquery查询呢?我一直在到处阅读 REST api 适用于 xpath 和 xquery 但我无法让我的查询工作。这是我试图作为示例传递的内容(我已经在 xquery 沙箱中对此进行了测试并且它有效):
for $movie in doc("movies/movies.xml")/movies/movie[year > 2002]
return <movie> { ($movie/title, $movie/year) } </movie>
如何在 URL 中传递它?我真的不知道从哪里开始,所以我尝试将上面的查询粘贴为 GET 参数,类似于 xpath 查询。所以我传递的 url 是
http://localhost:8080/exist/rest/db/movies/?_query=for%20$movie%20in%20doc(%22movies/movies.xml%22)/movies/movie[year%20%3E%202002]%20return%20%3Cmovie%3E%20{%20($movie/title,%20$movie/year)%20}%20%3C/movie%3E
我返回的页面是这个
我是不是完全错了? "movies" 是我数据库中的一个集合。
看起来您的查询已成功执行。 <exist:result/>
元素看起来很正确,但它根本没有找到任何符合您筛选条件的电影。这也可能是命名空间问题。你应该在本地尝试你的查询,看看它是否 returns 东西。
你的<script id="tinyhippos-injected"/>
元素有点奇怪,我没想到这里有小河马。不过,这好像是due to some Chrome extension you use.
此外,如果您的 XQuery 稍长一点,URL 参数将不起作用,并且编码无论如何都难以阅读和维护。你可能想看看 at the eXist documentation about how to submit a POST
request with an XQuery.
我了解如何使用 Xpath
http://localhost:8080/exist/rest/db/movies?_query=//movie[title=%22Spider-Man%22]/node()
但是如何传递一个xquery查询呢?我一直在到处阅读 REST api 适用于 xpath 和 xquery 但我无法让我的查询工作。这是我试图作为示例传递的内容(我已经在 xquery 沙箱中对此进行了测试并且它有效):
for $movie in doc("movies/movies.xml")/movies/movie[year > 2002]
return <movie> { ($movie/title, $movie/year) } </movie>
如何在 URL 中传递它?我真的不知道从哪里开始,所以我尝试将上面的查询粘贴为 GET 参数,类似于 xpath 查询。所以我传递的 url 是
http://localhost:8080/exist/rest/db/movies/?_query=for%20$movie%20in%20doc(%22movies/movies.xml%22)/movies/movie[year%20%3E%202002]%20return%20%3Cmovie%3E%20{%20($movie/title,%20$movie/year)%20}%20%3C/movie%3E
我返回的页面是这个
我是不是完全错了? "movies" 是我数据库中的一个集合。
看起来您的查询已成功执行。 <exist:result/>
元素看起来很正确,但它根本没有找到任何符合您筛选条件的电影。这也可能是命名空间问题。你应该在本地尝试你的查询,看看它是否 returns 东西。
你的<script id="tinyhippos-injected"/>
元素有点奇怪,我没想到这里有小河马。不过,这好像是due to some Chrome extension you use.
此外,如果您的 XQuery 稍长一点,URL 参数将不起作用,并且编码无论如何都难以阅读和维护。你可能想看看 at the eXist documentation about how to submit a POST
request with an XQuery.