教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> 编程基地 >> VC++ >> XML的QL查询语言及其实现 RSS订阅
XML的QL查询语言及其实现
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   
   (3)用嵌套查询进行结果分组

上述XML-QL查询不会将结果分组,同一本书的作者会出现在不同的<result>中,如果将同一本书的作者放在一个<result>中就好了。要将结果进行分组,可以使用嵌套查询。将以上的例子稍许改动,可以得到我们想要的结果:

WHERE  <book>

                     $p

                 </book> IN “lib.xml”

              <title> $t </title>,

              <publisher><name>高等教育出版社</name></publisher> IN $p

CONSTRUCT    <result>

                            <title> $t </title>

                                   WHERE      <author> $a </author> IN $p

                                   CONSTRUCT <author> $a </author>

                            </result>

上述XML-QL语句中,首先指定p变量为<book>元素的内容,然后逐个判断<book>元素的内容是否包含一个<title>元素和一个<name>为“高等教育出版社”的<publisher>元素,如果符合条件,则构造结果。结果由该<book>元素的<title>子元素和一个嵌套查询的结果所组成。而嵌套查询的结果由符合条件的<book>元素中所有<author>元素所组成。

如果P变量的内容已被指定,它可以被后边的XML-QL使用。也可以通过使用CONTENT_AS关键字把p变量指定为<book>元素的内容,这样XML-QL查询就简化为:

WHERE      <book>

                     <title> $t </title>

                     <publisher><name>高等教育出版社</name></publisher>

                     </book>       CONTENT_AS  $p   IN “lib.xml”

CONSTRUCT    <result>

                                   <title> $t </title>

                                   WHERE <author> $a </author>        IN $p

                                   CONSTRUCT <author> $a </author>

                            </result>

执行以上两个查询,得到的结果是一样的:

<result>

       <title>数据库系统概论</title>

       <author><lastname>萨师煊</lastname></author>

       <author><lastname>王珊</lastname></author>

</result>

(4)根据值连接元素

XML-QL可以把两个或者两个以上包含相同值的元素连接起来。例如,查询所有2000年后写过书的作者的<article>元素:

WHERE <article>

                     <author>

                            <firstname> $f </firstname>

                            <lastname> $l </lastname>

                     </author>

               </article>   CONTENT_AS $a   IN “lib.xml”

               <book year=$y>

                      <author>

                            <firstname> $f </firstname>

                            <lastname> $l </lastname>

                      </author>

               </book>     IN “lib.xml”

               y>2000

CONSTRUCT    <article> $a </>

在上面的查询中,我们使用了变量f和l实现连接。我们首先把f和l指定为<author>元素中的<firstname>和<lastname>子元素的内容,同时把a元素指定为<article>元素的内容。然后判断在<article>中是否 存在一个<book>元素,其year属性大于2000,并包含<firstname>和<lastname>分别等于f和l变量<author>元素,只有在这个<book>中时,<article>元素才符合WHERE语句的条件。

上面的XML-QL中,CONSTRUCT语句中的内容在WHERE语句中出现过一次。那么,可以使用ELEMENT_AS语句来避免这样的重复。

       WHERE <article>

                     <author>

                            <firstname> $f </firstname>

                            <lastname> $l </lastname>

                     </author>

               </article>   CONTENT_AS $a   IN “lib.xml”

               <book year=$y>

                      <author>

                            <firstname> $f </firstname>

                            <lastname> $l </lastname>

                      </author>

               </book>     ELEMENT_AS $e IN “lib.xml”

               y>2000

CONSTRUCT    $e

(5)在不同的XML文档中抽取数据

XML-QL可以对多个XML文档进行查询,并且把查询到的数据结合起来。以下例子是从data.xml 和taxpayers.xml两个文档中分别取得姓名(<name>元素)和收入(<income>元素)信息,然后把它们结合起来。而这两个元素是以<ssn>元素进行联系的。

WHERE <person>

            <name> </> ELEMENT_AS $n

            <ssn>  $ssn  </>

</>  IN data.xml,

        <taxpayer>

            <ssn>  $ssn </>

            <income> </> ELEMENT_AS $i

        </> IN taxpayers.xml

        CONSTRUCT <result>  $n $i   </>

除了以上方法外,还可以使用Skolem函数实现上述查询(在W3C文档中查阅)。具体的方法如下所示:

{ WHERE <person>

<name></>  ELEMENT_AS $n

<ssn> $ssn </>

</>  IN data.xml

CONSTRUCT  <result ID=SSNID($ssn)> $n </> 

}

{ WHERE  <taxpayer>

<ssn>  $ssn  </>

<income>  </>  ELEMENT_AS $i

</>  IN taxpayers.xml

CONSTRUCT  <result ID=SSNID($ssn)> $i   </>      

}

来源:编程技术-十度教育
作者:
关键字:XML,QL查询语言,其实现
发表日期:2006-10-18 13:47:55

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:在VC中使用Automation操纵Word和Excel   下一篇:在VC++通过汇编实现获取代码运行时间


2008-8-30 6:15:38
本文的相类似文章
  • 内置XML能成为oracle的救世主吗?
  • 高效解析XML
  • Oracle开发人员的 JDOM 和 XML 分析
  • 使用XMLTransform和XSL-FO格式化报表
  • Oracle XML Publisher与JDeveloper 10g集成
  • Oracle和IBM将XML索引能力加入数据库
  • 使XML本地化和关系化
  • 选择和识别 XML 字符编码的方式
  • 如何使SQL Server数据库支持XML
  • CFD数值模拟的系统误差反馈及其实现
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com