以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 XML 与 数据库 』 (http://bbs.xml.org.cn/list.asp?boardid=17) ---- XQL内部函数介绍 (http://bbs.xml.org.cn/dispbbs.asp?boardid=17&rootid=&id=8387) |
-- 作者:hsower -- 发布时间:6/19/2004 2:30:00 PM -- XQL内部函数介绍 XQL提供了一些内部的函数用来加强对条件表达式的表示。 例如:text()方法返回节点内包含的文字,不包括所有结构,也就是说,是包含在元素及其后代的所有文字节点的连接。下列表达式将返回所有名为'Bob'的author: author[text() = Bob ] 而下面的例子将返回包含first-name子节点,且该子节点的文字为'Bob'的所有author: author[first-name!text() = Bob ] 下例将返回包含名为'Bob'的子节点的所有author: author[*!text() = Bob ] 实际上,除了Text()函数外,XQL还内建了一系列的函数: textNode():该函数返回文字节点的集合,比如查找当前上下文中每一个p元素中的第二个文本节点可以用下面的代码表示: p/textNode()[1] 类似的函数有Comment()(注释节点的集合),Pi()(处理指示节点的集合)等等 Value():当两个项目进行比较时,比较在两个项目的值之间进行。在没有类型信息时,value()返回文字。 下面的两个例子是等价的: author[last-name!value() = Bob $and$ first-name!value() = Joe ] author[last-name = Bob $and$ first-name = Joe ] 下面的两个例子也是等价的: price[@intl!value() = canada ] price[@intl = canada ] NodeType():返回一个指示节点类型的数字,其中1表示元素,2表示属性,3表示文字,7表示处理指令,8表示注释,9表示文档。 NodeName():表示节点的标记名称,包括名字空间的前缀。 Index():该函数用来返回父节点内该节点的索引号,注意索引号是从0开始的。比如查找前三个degree可以用下面的代码表示: degree[index() $lt$ 3],这里用$lt$来表示符号"<" end():用来表示最后一个对象,比如下面的代码: book[end()] 表示查找每一个book元素的最后的author: book/author[end()] 在book的所有author构成的集合中,查找最后的author: (book/author)[end()] count():返回集合中的节点数目。 用@*可以返回元素的所有属性,可以用@*表示查找所有当前元素上下文的所有属性。用@*:style表示查找所有命名空间下的所有style属性:查找命名空间'my'下的所有属性,包括命名空间'my'下元素的未加限定的属性,可以用@my:*表示。 二进制比较操作符集合可以用于比较数字和字符串,结果返回布尔值。$lt$、 $le$、 $gt$、 $ge$分别用于小于、小于或等于、大于、大于或等于。这些操作符也可用于大小写不敏感的形式:$ieq$, $ine$, $ilt$, $ile$, $igt$, $ige$。<、<=、>和>=是$lt$, $le$, $gt$和$ge$的简写方式。单引号或双引号可以用于在表达式中分隔字符串,使得在脚本语言中创建或传递XQL变得更为容易。 比如,查找last name是'Bob'而且price>50的所有author元素可以用下面的代码表示: author[last-name = Bob $and$ price $gt$ 50] 查找from属性值不等于'Harvard'的所有author可以用下面的代码表示: author[@from != Harvard ] 查找前两个book元素可以用下面的代码表示: book[index() $le$ 2] 下面的例子是表示在文档根部查找所有book元素的style属性值与bookstore元素specialty属性值相等的 所有book元素。 book[/bookstore/@specialty = @style] 值得注意的是,XQL在IE 5.0中已得到部分应用。另外一种查询语句就是XML_QL,XML_QL是由AT& T实验室为首的研究机构提出的XML查询语言。与XQL不一样,XML_QL是面向SQL的,与SQL语言中的SELECT 语句中的WHERE子句格式比较相像,并借鉴了一些半结构化数据查询语言的思想。在XML_QL中,将XML文档集看作数据库,以半结构化数据模型作为数据模型,将DTD(Document Type Definition)文档看作数据库模式。XML_QL中XML文档用图作数据结构来描述,有一个根结点,每条边上都标有元素标记,每个叶子结点都标有值,并且每个结点有一唯一的对象标识符。XML_QL中主要是针对以下几个方面而提出的: 1.能从大量XML文档中析取数据。无论是对关系数据库,面向对象数据库,还是对Web"数据库"而言,一种查询语言都必须具有这种特性。 2.能对XML数据进行转换。例如,将附有某一DTD文档的XML文档转换成为具有不同的DTD文档的XML文档。 3.将XML数据在多个XML数据源中进行集成。这对于XML数据仓储,数据挖掘等均很重要。 4.客户端通过发送查询到XML数据源(可以是一个Web站点,也可以是多个Web站点)存取大量的数据。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |