Altova XMLSpy 2024 Professional Edition

本部分包含的内容如下

 

引擎符合性

Schema感知力

编码

命名空间

XML源和验证

静态和动态类型检查

库模块

外部函数

排序规则

数值数据的精度

XQuery指令支持

特定于实现的行为

 

符合项

XMLSpy的XQuery 1.0引擎符合万维网联盟(W3C)2010年12月14日的XQuery 1.0建议。XQuery标准给出了有关如何实现许多功能的信息。下方给出了一个列表,其中解释了XQuery 1.0引擎是如何实现这些功能的。

 

Schema感知力

XQuery 1.0引擎是Schema感知的

 

编码

支持UTF-8和UTF-16字符编码。

 

命名空间

以下命名空间URI及其关联的绑定是预定义的。

 

命名空间名称

前缀

命名空间URI

XML Schema types

xs:

http://www.w3.org/2001/XMLSchema

Schema instance

xsi:

http://www.w3.org/2001/XMLSchema-instance

Built-in functions

fn:

http://www.w3.org/2005/xpath-functions

Local functions

local:

http://www.w3.org/2005/xquery-local-functions

 

请注意以下几点:

 

XQuery 1.0引擎将上方列出的前缀识别为与相应的命名空间绑定的。

由于上方列出的内置函数命名空间(参见fn:)是XQuery中的默认函数命名空间,因此在调用内置函数时,不需要使用fn:前缀(例如,string("Hello")将调用fn:string函数)。然而,fn:可用于调用内置函数,而无需在查询prolog中声明命名空间(例如:fn:string("Hello"))。

您可以通过在查询prolog中声明default function namespace表达式来更改默认函数命名空间。

在使用XML Schema命名空间中的类型时,可以使用xs:前缀,而无需在查询prolog中明确声明命名空间并将这些前缀绑定到它们。(示例:xs:datexs:yearMonthDuration。)如果您希望为XML Schema命名空间使用其他前缀,则必须在查询prolog中明确声明它。(示例:declare namespace alt = "http://www.w3.org/2001/XMLSchema"; alt:date("2004-10-04")。)

请注意,untypedAtomicdayTimeDurationyearMonthDuration数据类型,连同2007年1月23日的CR,已从XPath Datatypes命名空间移至XML Schema命名空间,因此:xs:yearMonthDuration

 

如果函数、类型构造器、节点测试等的命名空间被错误分配,则会报告错误。请注意,某些函数与Schema数据类型具有相同的名称,例如fn:stringfn:boolean。(xs:stringxs:boolean都有被定义。)命名空间前缀决定了是使用函数,还是类型构造函数。

 

XML源文档和验证

用于使用XQuery 1.0引擎执行XQuery文档的XML文档必须是格式正确的。但是,它们不需要根据XML Schema有效。如果文件无效,则加载无效文件,不含Schema信息。如果XML文件与外部Schema相关联,并根据它是有效的,则会为XML数据生成Schema后验证信息,并用于查询评估。

 

静态和动态类型检查

静态分析阶段会检查查询的各个方面,例如语法、是否存在外部引用(例如,模块)、是否定义了调用的函数和变量等。如果在静态分析阶段检测到错误,则会报告错误,并停止执行。

 

动态类型检查是在运行时执行的,在实际执行查询时。如果类型与操作的要求不符,则会报告错误。例如,xs:string("1") + 1表达式会返回一个错误,因为无法在xs:string类型的操作数上进行加法运算。

 

库模块

库模块存储函数和变量,因此它们可以被复用。XQuery 1.0引擎支持存储在单个外部XQuery文件中的模块。这类模块文件必须在其prolog中包含一个module声明,它与目标命名空间相关联。以下是一个示例模块:

 

module namespace libns="urn:module-library";

declare variable \$libns:company := "Altova";

declare function libns:webaddress() { "https://www.altova.com" };

 

所有在模块中声明的函数和变量都属于与该模块相关联的命名空间。该模块通过在查询prolog中使用import module语句将其导入XQuery文件来使用。import module语句仅导入在库模块文件中直接声明的函数和变量。如下所示:

 

import module namespace modlib = "urn:module-library" at "modulefilename.xq";  

if        (\$modlib:company = "Altova")  
then modlib:webaddress()  
else error("No match found.")

 

外部函数

不支持外部函数,即在那些使用external关键词的表达式中,如下所示:

 

declare function hoo(\$param as xs:integer) as xs:string external;  

 

排序规则

默认排序规则是Unicode代码点排序规则,字符串会基于其Unicode代码点进行比较。其他支持的排序规则是此处列出的ICU排序规则。要使用特定的排序规则,请提供其支持的排序规则列表中给出的URI。任何字符串比较,包括fn:maxfn:min函数,都将根据特定的排序规则进行。如果未指定排序规则,则使用默认的Unicode代码点排序规则。

 

数值类型的精度

 

xs:integer数据类型是任意精度的,即它可以代表任意数量的位数。

xs:decimal数据类型在小数点之后有20位的限制。

xs:floatxs:double数据类型有15位的精度限制。

 

XQuery指令支持

不支持Pragma指令。如果遇到这种情况,它将被忽略,并对回退表达式进行计算。

 

特定于实现的行为

下方给出了XQuery和XQuery Update 1.0引擎如何处理某些函数的具体实现方面的说明。

 

unparsed-text

href参数接受(i) base-uri文件夹中文件的相对路径,以及(ii) 带或不带file://协议的绝对路径。额外支持的编码是(Altova特定的):x-binarytobase16x-binarytobase64。示例:xs:base64Binary(unparsed-text('chart.png', 'x-binarytobase64')).

 

unparsed-text-available

href参数接受(i) base-uri文件夹中文件的相对路径,以及(ii) 带或不带file://协议的绝对路径。额外支持的编码是(Altova特定的):x-binarytobase16x-binarytobase64

 

提示:以下编码值是在RaptorXML的前身产品AltovaXML的早期版本中实现的,现已被弃用:base16tobinarybase64tobinarybinarytobase16binarytobase64

 

© 2017-2023 Altova GmbH