新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Oracle, SQL Server与XML,XML在数据挖掘中的应用, PMML.
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 数据库 』 → XQL内部函数介绍 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6326 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: XQL内部函数介绍 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     hsower 帅哥哟,离线,有人找我吗?狮子座1983-8-21
      
      
      威望:7
      等级:大四寒假(收到IBM的Offer啦)
      文章:72
      积分:1606
      门派:XML.ORG.CN
      注册:2004/4/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hsower发送一个短消息 把hsower加入好友 查看hsower的个人资料 搜索hsower在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hsower的博客楼主
    发贴心情 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站点)存取大量的数据。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/6/19 14:30:00
     
     GoogleAdSense狮子座1983-8-21
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 数据库 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/29 8:23:33

    本主题贴数1,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  XQL内部函数介绍(3792字) - hsower,2004年6月19日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms