Apache Ant/执行 XQuery
外观
您想要执行存储在 eXist 数据库中的 XQuery。
<target name="run-one-inline-test-local">
<description>Execute a single xUnit test on a local system</description>
<echo message="Run an inline XQuery"/>
<xdb:xquery uri="xmldb:exist://127.0.0.1/xmlrpc/db" user="${user}" password="${password}"
outputproperty="result">
xquery version "1.0";
let $message := 'Hello World!'
return $message
</xdb:xquery>
<echo message="Result = ${result}"/>
</target>
请注意,您只能在此示例中返回字符串。查询中的任何 XML 内容都会导致错误。
如果您想将 XML 文件返回到属性中,您需要将查询包装在 CDATA 结构中
<!-- This version uses CDATA to put an XML file into the result property -->
<target name="run-xquery-cdata">
<xdb:xquery user="admin" password="" uri="${test-server}/db" outputproperty="result"><![CDATA[
xquery version "1.0";
let $message := 'Hello World'
return
<result>{$message}</result>
]]></xdb:xquery>
<echo message="Result = ${result}"/>
</target>
hello-world.xq
xquery version "1.0";
let $message := 'Hello World'
return
<result>{$message}</result>
这与上面的版本类似,但您会注意到添加了 queryfile 属性。
<target name="run-in-database-query" depends="load-test-resources">
<xdb:xquery user="${user}" password="${password}"
uri="xmldb:exist://127.0.0.1/xmlrpc/db" queryfile="hello-world.xq"
outputproperty="result"/>
<echo message="Result = ${result}"/>
</target>
请注意,要使上述操作正常工作,文件 hello-word.xq 必须与构建脚本位于同一目录中。
<target name="add-execute">
<!-- make the controller.xql file executable -->
<xdb:chmod uri="${local-uri}/apps/myapp" resource="controller.xql" permissions="group=+execute,other=+execute"/>
</target>
其中 local-uri 类似于:xmldb:exist://127.0.0.1:8080/exist/xmlrpc/db(针对默认安装路径)