跳轉到內容

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:///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>

執行本地驅動器中儲存的 XQuery

[編輯 | 編輯原始碼]

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:///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://:8080/exist/xmlrpc/db(針對預設安裝路徑)

華夏公益教科書