XQuery/eXist 速查表
外观
< XQuery
xquery version "1.0";
import module namespace geo="http://www.cems.uwe.ac.uk/exist/coord" at "coord.xqm";
declare namespace exist = "http://exist.sourceforge.net/NS/exist";
在 XQuery 脚本中是可选的,但在 1.2 版本中的模块中是必需的,但在 1.3 版本中不是必需的。
import module namespace xmldb = "http://exist-db.org/xquery/xmldb"; import module namespace util = "http://exist-db.org/xquery/util"; import module namespace request = "http://exist-db.org/xquery/request"; import module namespace response = "http://exist-db.org/xquery/response"; import module namespace session = "http://exist-db.org/xquery/session"; import module namespace transform = "http://exist-db.org/xquery/transform"; import module namespace text = "http://exist-db.org/xquery/text"; import module namespace system = "http://exist-db.org/xquery/system";
declare namespace tx="http://www.transxchange.org.uk/";
declare default element namespace "http://www.w3.org/1999/xhtml";
如果你使用默认命名空间,请务必小心。这意味着没有命名空间前缀的所有内容都会自动序列化到此命名空间中。它还阻止你使用空命名空间,除非你明确地将其声明为 xmlns=""。请注意,你没有将前缀与默认命名空间相关联。
declare default function namespace "http://www.transxchange.org.uk/";
declare namespace math="java:java.lang.Math";
请注意,由于安全问题,Java 绑定默认情况下是禁用的。现在可以通过数学扩展模块调用数学函数。
这是默认值,但可以明确声明。
declare option exist:serialize "method=xml media-type=text/xml omit-xml-declaration=no indent=yes";
declare option exist:serialize "method=svg media-type=application/svg+xml omit-xml-declaration=no indent=yes";
declare option exist:serialize "method=xhtml media-type=text/html omit-xml-declaration=no indent=yes doctype-public=-//W3C//DTD XHTML 1.0 Transitional//EN doctype-system=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";
如果你的代码包含许多位于空命名空间 (xmlns="") 中的 XML 片段,则有一种方法可以自动将空命名空间中的所有内容转换为自动放入 XHTML 命名空间。
declare option exist:serialize "method=xhtml enforce-xhtml=yes";
declare option exist:serialize "method=xhtml media-type=text/html omit-xml-declaration=no indent=yes doctype-public=-//W3C//DTD HTML 4.01 Transitional//EN doctype-system=http://www.w3.org/TR/loose.dtd";
declare option exist:serialize "method=html5 media-type=text/html omit-xml-declaration=yes indent=yes";
declare option exist:serialize "method=html media-type=text/html omit-xml-declaration=yes indent=yes";
declare option exist:serialize "method=xhtml media-type=text/html omit-xml-declaration=yes indent=yes";
declare option exist:serialize "method=text media-type=text/plain omit-xml-declaration=yes";
declare option exist:serialize "method=xhtml media-type=application/vnd.google-earth.kml+xml highlight-matches=none";
declare option exist:serialize "method=xhtml media-type=text/xml indent=yes";
module namespace c="http://www.cems.uwe.ac.uk/exist/coord";
- 在 XQuery 脚本中的默认命名空间中
declare function local:times($tt, $dt) { if (exists($dt)) then local:times(($tt, $tt[last()]+ $dt[1]), remove($dt,1)) else $tt };
- 在模块的命名空间中
module namespace time = 'http://www.cems.uwe.ac.uk/fold/time'; declare function time:times($tt, $dt) { if (exists($dt)) then time:times(($tt, $tt[last()]+ $dt[1]), remove($dt,1)) else $tt };
declare variable $pi as xs:double := 3.14159265;
在具有命名空间前缀 fxx 的模块中
declare variable $fxx:file := doc('/db/me/file.xml');
<style language="text/css"> <![CDATA[ .good {background-color: green;} .bad {background-color:red;} ]]> </style>
从 HTTP POST 中获取两个 URL 参数
https://127.0.0.1:8080/exist/rest/db/my-collection/my-xquery.xq?color=blue&shape=circle
添加以下内容
let $my-color := request:get-parameter('color', 'red') let $my-shape := request:get-parameter('shape', '')
如果没有提供颜色参数,将使用默认颜色“红色”。
要获取 HTTP POST 中的所有 XML 数据
let $my-data := request:get-data()
默认情况下,输出大小为 10,000 字节。您可以通过添加以下内容来扩展它
declare option exist:output-size-limit "new-size";
例如,要将输出的大小限制提高三倍,请使用以下行
declare option exist:output-size-limit "30000";