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.两种构造方式可以混合使用。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

XQuery应用实例:对双色球的统计及分析(初级版)

早些时候用java写过一个自动更新采集双色球开奖记录并保存相关信息到MySQL的小工具. MySQL支持将表中的内容导出为XML格式. 正好最近在学习XQuery,所以萌生了想用XQuery来统计...

SQL Server XML基础学习之<5>--XQuery(query)

本章写一些SQL Server XML的一些XQuery基础语法,主要讲的query查询语法T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集。 XQuery 基于现有的 XPat...
  • Beirut
  • Beirut
  • 2012-11-19 16:34
  • 5442

JavaCC解析XQuery 代码

本文来自于http://www.360doc.com/content/07/0625/16/13829_578971.shtml 我将向您演示一段非常小的 XQuery 的 BNF 子集,这是 XM...

XQuery

XQueryCamel supports XQuery to allow an Expression or Predicate to be used in the DSL or Xml...

SQL中的XML,XPath,XQuery查询方法

/*sql xml 入门:    --by jinjazz    --http://blog.csdn.net/jinjazz        1、xml:  &...

Xquery 被设计用来查询 XML 数据

http://www.w3school.com.cn/xquery/xquery_intro.asp 解释XQuery最佳方式是这样讲:XQuery 相对于 XML 的关系,等同于 SQL 相对...

sedna在windows和Linux下的xquery区别

源用昨天的例子,把book.xml加载入books数据库的名为novel的collection里。 The Call Of Wild Jack London 32.5$ 201...

XQuery运用

  • 2013-07-18 18:34
  • 42KB
  • 下载

xquery与java使用

XQuery内置函数

存取函数 名称 说明 fn:node-name(node) 返回参数节点的节点名称。 fn:nilled(node) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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