摘要: XQuery规范遵循W3C的标准,Marklogic8遵从了W3C对XQuery1.0的语法建议。为了让Marklogic能最大化的兼容XQuery并通过一个简单的配置就能实现扩充,Marklogic Server支持三种不同的方言。
方言
第一次在编程中接触方言Dialect,是在Hibernate配置中。Hibernate根据你选择的“方言”(DB2Dialect、MySQL5Dialect、OracleDialect),针对每种数据库,作调整,如生成不同的SQL语句等。Marklogic 的方言和这个还是有点不太一样,更像是一种Prologue
XQuery 1.0-ml
Marklogic增强模式方言。可以在xquery文件的第一行用如下声明开启:
xquery version "1.0-ml";
- 声明中分号是必须的
- 可以使用分号隔离事务
- 适用 XQuery 1.0 语法
- 支持所有Marklogic内建函数
- 增加了
try{expression}catch(variable){expression}
语法 - 增加了
validate as
语法 - 简写的定位语法 Positional Predicate Syntax
(1, 2, 3, 4, 5, 5)[1 to 3]
- 支持
private
语法declare private function ....
- 函数映射 function mapping 默认开启
- 预定义命名空间:
cts、dav、dbg、dir、err、error、fn、local、lock、map、match、prof、prop、sec、sem、spell、xdmp、xml、xmlns、xqe、xqterr、xs
XQuery 0.9-ml
MarkLogic Server 3.2兼容性方言。可以在xquery文件的第一行用如下声明开启:
xquery version "0.9-ml"
- 声明不需要分号
- MarkLogic Server 4.0适用
- 不能使用函数映射 function mapping
- 预定义命名空间:
cts、dav、dbg、dir、err、error、fn、lock、map、match、prof、prop、sec、spell、xdt、xdmp、xml、xmlns、xqe、xqterr、xs
XQuery 1.0
严格模式方言。可以在xquery文件的第一行用如下声明开启:
xquery version "1.0";
- 分号是必须的
- 与其他的 XQuery 1.0处理器兼容
- 要使用Marklogic内建函数,需要手动指定命名空间
declare namespace xdmp = "http://marklogic.com/xdmp";
- 函数映射 function mapping 默认关闭,使用
declare option xdmp:mapping "false";
开启 - 预定义命名空间:
err、fn、local、xml、xmlns、xs
在构建APP的时候,我们可以选择默认的xquery版本,默认选择的是1.0-ml