【译文】《XQuery 1.0: An XML Query Language 2004-7-23 草案 第四章》

** 4 ** ** 模块与序言 ** ** Modules and Prologs ** ** **

[1]

|

Module

|

::=

|

VersionDecl ? ( MainModule | LibraryModule )

---|---|---|---

[3]

|

MainModule

|

::=

|

Prolog QueryBody

[4]

|

LibraryModule

|

::=

|

ModuleDecl Prolog

[6]

|

Prolog

|

::=

|

( Setter Separator )* (( Import | NamespaceDecl | VarDecl | FunctionDecl ) Separator )*

[7]

|

Setter

|

::=

|

XMLSpaceDecl | DefaultCollationDecl | BaseURIDecl | ConstructionDecl | DefaultNamespaceDecl | DefaultOrderingDecl

[8]

|

Import

|

::=

|

SchemaImport | ModuleImport

[9]

|

Separator

|

::=

|

";"

[25]

|

QueryBody

|

::=

|

Expr

[ 定义:一个查询可以由一个或多个称为 模块 ( ** modules ** )的片断装配而成。 每个模块是一个主模块( _ main module _ )或者库模块( _ library module _ )。 ] 每个模块依次由一个或多个称为模块资源( _ module resources _ )的部分组成。 [ 定义:每个 模块资源 ( ** module resource ** )是一段 XQuery 代码,符合模块( _ Module _ )语法并且能独立地经过 **_ 2.2.3 Expression Processing _ ** 中说明的静态分析阶段( _ static analysis phase _ )。 ]

[ 定义:一个 主模块 ( ** main module ** )由包含一个序言( _ Prolog _ )及其后的一个查询体( _ Query Body _ )的单个模块资源构成。 ] 一个查询有一个确定的主模块。在一个主模块中,查询体( _ Query Body _ )能被计算,其值是查询的结果。

[ 定义:不包含查询体( _ Query Body _ )的模块称为库模块( ** library module ** )。 ] 一个库模块可能由多个模块资源( _ module resources _ )组成,每个模块资源包含一个模块声明( _ module declaration _ )及其后的序言( _ Prolog _ )。多个模块资源如果在其模块声明中命名同样的目标名字空间( _ target namespace _ ),则被被视为同一库模块的部分。一个库模块不能直接被计算;相反的,它提供可以被导入到其他模块的函数和变量声明。

没有模块资源( _ module resource _ )能既包含模块声明( _ module declaration _ )又包含查询体( _ Query Body _ )。

[ 定义: 序言 ( ** Prolog ** )是一连串的声明和导入,为包含序言的模块资源( _ module resource _ )定义处理环境 ] 每个声明或者导入跟着一个分号。 [ 定义:序言中的某些声明称为 给定器 ( ** setters ** ),因为他们设置某些影响查询处理的性质的值 ,例如构造模式、排序模式、或者缺省校对。 ] 这些给定器如果存在,必须出现在序言的开始,以任何次序。一个序言也可以包含模式和模块导入,和名字空间前缀、变量和函数的声明。 [ 定义:每个导入模式或模块由其 目标命名空间 ( ** target namespace ** )识别, 就是由模式或模块定义的对象(如元素或函数)的命名空间。 ]

[ 定义: 查询体 ( ** Query Body ** )如果存在,由一个规定查询结果的表达式组成。 ] 表达式的计算在中 **_ 3 Expressions _ ** 说明。一个模块只有当它有查询体时才被计算。

** 4.1 ** ** 版本声明 ** ** Version Declaration ** ** **

[2]

|

VersionDecl

|

::=

|

"xquery" "version" StringLiteral Separator

---|---|---|---

[ 定义:任意模块资源( _ module resource _ )可以包含一个 版本声明 ( ** version declaration ** )。如果存在,版本声明出现在模块资源( _ module resource _ )的开始,且为模块资源( _ module resource _ )识别可用的 XQuery 语法和语义。 ] 版本号“ 1.0 ”表明模块资源( _ module resource _ )必须由一个 XQuery 版本 1.0 处理器来处理的需求。如果版本声明不存在,则版本被假设为“ 1.0 ”。当一个 XQuery 实现处理一个用其不支持的版本标志的模块资源( _ module resource _ )时,必须返回一个静态错误( _ static error _ )。 [ _ err:XQ0031 _ ] XQuery 工作组这样做的意图是给出这个规范数字不同于“ 1.0 ”的随后的版本,但是这个意图不表明承诺提出任何 XQuery 的未来版本,如果提出来也不一定使用任一特定的数字模式。

下面是一个版本声明的例子:

xquery version "1.0";

** 4.2 ** ** 模块声明 ** ** Module Declaration ** ** **

[5]

|

_ ModuleDecl _

|

::=

|

"module" "namespace" _ NCName _ "=" _ StringLiteral _ Separator

---|---|---|---
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt;

Published At
Categories with Web编程
Tagged with
comments powered by Disqus