Xquery实例演示

原创 2007年09月19日 21:56:00
Xquery实例演示
本文将重点演示两个Xquery实例,以此来说明Xquery的使用:

 1.FLOW的使用
 2.Xquery构造器

本文示例代码均在Eclipse  oXygen插件下通过测试!

1.xml源文件:
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="users.xsl"?>
<!-- 用户列表 XML文件 -->
<users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation
="users.xsd">
  
<user id="0">
    
<usertype>admin</usertype>
    
<username>tony</username>
    
<password>23456-adm-4578</password>
    
<userphone>13241470658</userphone>
    
<email>tony@newtech.net</email>
    
<introduction>管理员</introduction>
  
</user>
  
<user id="1">
    
<usertype>prof</usertype>
    
<username>mark king</username>
    
<password>11111-sdf-3333</password>
    
<userphone>13423456789</userphone>
    
<email>mark@yahoo.com</email>
    
<introduction>知名的XXXXXX</introduction>
  
</user>
  
<user id="2">
    
    
<usertype>prof</usertype>
    
<username>tom</username>
    
<password>22223-ffk-3333</password>
    
<userphone>13501234567</userphone>
    
<email>tomash@csdn.net</email>
    
<introduction>国内著名的XXXXX</introduction>
  
</user>
<user id="3">
    
<usertype>pro</usertype>
    
<username>gate</username>
    
<password>33334-huj-3456</password>
    
<userphone>13634567890</userphone>
    
<email>gate@gmail.com</email>
    
<introduction>全球著名的XXXXX</introduction>
  
</user>
  ........(略...)
</users>

实例1(XQ1) :for 与let的比较
<results>
<!--for let 比较-->
{
    
 for $user in  doc("users.xml")/users/user
 return
   
<userInfo>
     { $user/username }
   
</userInfo>

}
{
 let $userlet := doc("users.xml")/users/user
 return
     
<userInfomation>
     { $userlet/username }
    
</userInfomation>
   }
   
   {
 let $userlet := doc("users.xml")/users/user
 return
     
<userInfomation>
      
<username>
     { $userlet/username/text()}
     
</username>
    
</userInfomation>
   }
</results>

-----------------------------------------------------------------
results:

<?xml version="1.0" encoding="UTF-8"?>
<results>
   
<!-- 使用for 对于每一个uesr都会生成一个userInfo-->
   
<userInfo>
      
<username xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">tony</username>
   
</userInfo>
   
<userInfo>
      
<username xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">mark king</username>
   
</userInfo>
   
<userInfo>
      
<username xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">tom</username>
   
</userInfo>
   
<userInfo>
      
<username xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">gate</username>
   
</userInfo>
 
<!-- 使用let 对所有的uesr都只生成一个userInfo-->
   
<userInfomation>
      
<username xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">tony</username>
      
<username xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">mark king</username>
      
<username xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">tom</username>
      
<username xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">gate</username>
   
</userInfomation>
<!-- 同样即使是嵌套使用了username 也仅仅生成一组。。。-->
   
<userInfomation>
      
<username>tonymark kingtomgate</username>
   
</userInfomation>
</results>

实例2(XQ2):构造器演示
<results>
{
<!-- 构造器。。。即xquery的输出格式(XML)
   1.直接构造,参考例1:直接手写xml标记
   2.计算式构造(本例):使用element 以及 attribute 。
  
-->
    
 for $user in  doc("users.xml")/users/user
 let $name:=$user/username,
     $introduction:=$user/introduction,
     $email:=$user/email
 where 
      $user/@id="3"
 return
  element user{
      element a{
      attribute href {"www.google.com/search?q=tony"},
      $name/text()
      },
      element introduction{
       $introduction/text()
      },
      element email{
      /users/user[@id="3"]/email/text() //即$email/text()
      },
      
<usertype>
        { /users/user[@id="3"]/usertype/text()}
      
</usertype>
      
      
      }
      
 }

</results>

///////////////////////////////////////////////////////////////////////////

results:

<?xml version="1.0" encoding="UTF-8"?>
<results>
   
<user>
      
<href="www.google.com/search?q=tony">gate</a>
      
<introduction>全球著名的XXXXX</introduction>
      
<email>gate@gmail.com</email>
   
</user>
</results>


总结:1.return子句以xml格式返回.
      2.两种构造方式可以混合使用。

5、使用XQuery

这一节开始将介绍专用于XML数据的标准查询XQuery。XQuery是W< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:of...
  • pengxuan
  • pengxuan
  • 2011年10月08日 22:39
  • 4345

java使用xquery

在使用关系数据库时,我们通过sql语句来检索数据源,这没有任何问题,但是关系数据也存在着一定的局限性,只能存储结构化的数据 当数据集是非结构化的时候该怎样存储呢,最简单的办法就是封装成xml。 应...
  • JavaMan_chen
  • JavaMan_chen
  • 2013年03月04日 11:11
  • 5541

XQuery 注入的介绍与代码防御

0x01 介绍       XQuery是XPath的超集,如果Xpath只是一个查询语言,XQuery是一个程序语言,可以声明自定义的功能、变量等等。类似XPath注入,XQuery注入在没有验证...
  • qq_29277155
  • qq_29277155
  • 2016年10月07日 15:27
  • 604

各类XQuery引擎的比较

这篇文档翻译自Wei Ren(weiren@dstc.edu.au),写作时间是2001,距今已有3年,其间XQuery的发展突飞猛进,文中的很多内容已经不再准确了。翻译的目的也只是给对XQuery,...
  • superlmj
  • superlmj
  • 2004年11月26日 22:49
  • 1923

T-SQL XQUERY.MODIFY

UPDATE XmlsampleDB.dbo.Arthur SET BooksXML.modify(' insert into /books[1]') WHERE re...
  • incognito007
  • incognito007
  • 2012年08月28日 05:04
  • 1208

XQuery学习笔记(一)

数据模型是查询语言的基础。XQuery数据模型定义了包含在XSLT或XQuery处理器输入中的信息,以及所有被允许出现在XSLT、XQuery、XPath表达式中的值。也就是说,XQuery数据模型规...
  • yuanjingyan
  • yuanjingyan
  • 2006年12月19日 19:35
  • 423

XQuery表达式之FLWOR表达式(FLWOR Expression)

[如需转载请注明出处http://blog.csdn.net/superlmj/archive/2006/04/25/676744.aspx]FLWOR表达式应该是XQuery最重要的表达式之一了。F...
  • superlmj
  • superlmj
  • 2006年04月25日 14:45
  • 3441

Xquery编辑中字符串的拼接

Xquery编辑中字符串的拼接   学OSB以来,对于消息管道中的Xquery的使用一直停留在能看懂但是不会写的程度,导致这种现象的原因就是我一直搞不明白这种在Xquery中的字符串的拼接规则。最近终...
  • xiaopucao
  • xiaopucao
  • 2017年09月18日 17:24
  • 191

XQuery与XQJ的介绍与使用

1.XQuery XQuery is to XML what SQL is to database tables. XQuery was designed to query XML d...
  • KimmKing
  • KimmKing
  • 2012年12月13日 13:42
  • 3052

xquery 除法 和节点个数

/表示路径,所以无法再表示除法 (count( $Purposes) + 1) idiv 2 ) 表示$Purposes 的节点个数加1再除2 idiv 整除 div 除法 mod 求余...
  • he_zhidan
  • he_zhidan
  • 2015年08月12日 10:47
  • 678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Xquery实例演示
举报原因:
原因补充:

(最多只允许输入30个字)