时间:2022-12-06 14:30:01 | 来源:信息时代
时间:2022-12-06 14:30:01 来源:信息时代
与XML相关的规范 : SQL标准的一个重要组成部分,其标准编号为ISO/IEC 9075-14。该标准定义了如何在SQL数据库系统中使用XML。采用SQL/XML,可以在数据库中存储XML文档,也可以用专门的查询语言XPath和XQuery来操纵数据库中的XML文档,还可以将数据库中的数据转换为XML文档发布出来。在SQL:2008中,SQL/XML标准的全称为:Information Technology—Database Languages—SQL—Part 14:XML-Related Specifications(SQL/XML)。
SQL/XML是随着因特网和XML的发展而逐步发展出来的,它在SQL:2003中正式成为SQL标准的一部分,并在SQL:2008中得到了大幅度的改进。SQL/XML定义了一种新的SQL数据类型: XML,并且为之增加了操作函数,包括:XMLCOMMENT、XMLCONCAT、XMLDOCUMENT、XMLELEMENT、XMLFOREST、XMLPARSE、XMLPI、XMLQUERY、XMLTEXT、XMLVALIDATE,谓词: IS [NOT]CONTENT、IS[NOT] DOCUMENT、XMLEXISTS、IS [NOT]VALID。SQL/XML还定义了XML类型的宿主语言绑定支持,SQL标识符与XML名称的映射,SQL数据和XML数据的映射,也定义了相关的标准符合性要求。
从数据类型的角度看,XML为关系数据库增加了一种数据类型以及其上的操作。从数据模型的角度看,XML在层次数据库、网状数据库、关系数据库、对象数据库等模型之外,又为数据管理增加了XML数据库这一新的模型。从数据交换的角度看,XML为数据库管理系统增加了一种和其他数据管理系统之间交换数据的一种手段。
SQL/XML定义了一种新的内置数据类型:XML类型。既然是一种内置的数据类型,它就和其他的内置数据类型一样,可以用于定义表的列、例程的参数、用户自定义类型的属性、行的字段或SQL变量。同样的,XML类型也是强类型的,用XML类型定义的一段文本和用字符类型定义的一段文本是不同的。XML类型的值的内部表示是一个树状结构,可以包含有多种形式的XML信息项,是在XML信息集建议(information set recommendation,infoset)的基础上的定义的。XML类型的值可以是空值或SQL/XML信息项的集合。
函数XMLPARSE则能将输入的SQL字符串表达式转换为一个XML类型的值,从而可以将关系表中的数据发布为XML数据。XMLSERIALIZE能将输入的XML值表达式转换为字符串类型或二进制串类型的值,从而可以将XML数据转换并存放到关系表中。函数XMLQUERY用来执行一个XQuery表达式。
谓词IS [NOT] DOCUMENT用来检测一个XML值是不是有效的,也就是检查其是否为一个有且仅有一个XQuery元素结点,0个或多个XQuery注释结点,0个或多个XQuery处理指令结点的XQuery文档结点。
SQL/XML定义了SQL标识符到XML名称的映射规则。之所以需要这些映射,是因为SQL标识符的字符集是实现者定义的,不同的实现可能采用不同的字符集。而XML名称是有明确规定的,必须采用UCS字符集。SQL标识符是不区分大小写的,而XML名称是区分大小写的。SQL中的标识符允许包含任何字符,而XML名称中的字符是有一定限制的。为了解决这个映射问题,SQL/XML要求采用SQL字符集到UCS的映射,并且对SQL标识符中用到的那些在XML名称中非法的字符做转义处理。
SQL/XML定义了SQL数据类型到XML模式类型之间的映射。SQL标准中的数据类型分为SQL预定义的数据类型、SQL用户自定义类型、SQL构造类型。而XML模式类型分为数值型、字符型、布尔型、日期时间型以及List、Union、Simple、Complex等多种复杂类型。SQL类型和XML模式类型之间不可能一对一的精确映射。SQL/XML还定义了SQL类型的值到XML类型的值之间的映射。首先把SQL类型映射到XML模式类型,预定义SQL类型的值首先被转换为字符类型,然后映射为对应的XML类型的值。SQL中的数值如果没有小数部分,则被映射为没有小数点的XML字符串。空值要么被映射为xsi:nil=“true”,要么是空元素。字符值中的<、>、&和回车等被映射为实体化形式。
SQL/XML还定义了SQL中的目录、模式、表到XML文档的映射关系。映射时会产生两个文档,一个是XML模式文档,一个是XML文档。表既可以被映射到一个元素,也可以被映射为一系列的元素。
为了在嵌入式 SQL 中支持XML类型。SQL/XML还定义了XML类型在宿主语言中的绑定方式。在从SQL环境中将XML类型的值传递到宿主语言中时,XML 类型的值要先被函数XMLSERIALIZE 处理。反之,则要被函数XMLPARSE处理。宿主语言变量在定义时不仅要指明XML类型,还要指明期望的字符串类型、DOCUMENT或CONTENT选项。SQL实现要保证传递到宿主语言的XML文档采用的字符集是符合宿主变量定义的。
SQL/XML还定义了标准的特性划分以及具体的SQL实现支持哪些特性才可能被称为符合标准的。