• DB2 9 根蒂根基(730 测验)认证指南,第 7 部分: XQuery 简介(6)


    developerWorks








    XML 数据转换

    XQuery 的一个强年夜功用是能够将 XML 数据从一种情势的 XML 转换为另一种。在本节中,您将体味举办 XML 数据转换是多么方便。

    将 XML 转换为 HTML

    在基于 Web 的运用步伐中,常常须要将扫数或部分 XML 文档转换为 HTML 以便举办体现。操作 XQuery 很方便完成这个进程。请考虑以下查问,它检索客户的地点、按邮政编码对功用举办排序并将输入转换为 XML 元素,这些元素是一个无序 HTML 列表的构成部分:

    清单 29. 查问 DB2 XML 数据并前去 HTML 情势的功用

                        
    xquery 
    <ul> {
    for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client/Address
    order by $y/zip
    return <li>{$y}</li> 
    } </ul>
    


    这个查问以 xquery 枢纽字收尾,从而向 DB2 分析器走漏示意 XQuery 用作重要语言。第二哄骗无序列表的 HTML 符号(<ul>)呈现在功用中。它还引入一个花括号,这是这个盘录取运用的两对花括号中的第一对。花括号让 DB2 策画并处置此中搜罗的表达式,而不是将它作为字符串对待。

    第三行遍历客户的地点,按序将变量 $y 绑定到每个 Address 元素。第四行搜罗一个 order by 子句,它指定功用必须根据客户的邮政编码(即绑定到 $y 的每个 Address 的 zip 子元素)举办升序排序(这是默许顺序)。return 子句走漏示意将 Address 元素困绕在 HTML 列表项符号中,然后再前去。最月朔行完毕查问并完成 HTML 无序列表符号。

    这个查问的部分输入如下:

    清单 30. 前一个查问的 HTML 输入

                        
    <ul>
      <li>
         <Address>
             <street>9407 Los Gatos Blvd.</street>
             <city>Los Gatos</city>
             <state>CA</state>
             <zip>95032</zip>
         </Address>
      </li>
      <li>
         <Address>
             <street>4209 El Camino Real</street>
             <city>Mountain View</city>
             <state>CA</state>
            <zip>95033</zip>
         </Address>
      </li>
    . . . 
    </ul>
    


    运用转换走漏示意 XML 文档中缺失的或反复的元素

    我们来考虑前面提出的一个主题:如何编写 XQuery 在前去的功用中走漏示意缺失的值,以及走漏示意一个 XML 文档(例如一个客户记载)搜罗反复的元素(例如多个电子邮件地点)。一种方法触及到将前去的输入包装在一个新的 XML 元素中,如以下查问所示:

    清单 31. 在 XQuery 功用中走漏示意缺失的值或反复的元素

                        
    xquery 
    for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client
    where $y/Address[zip="95032"] or $y/Address[city="San Jose"]
    return <emailList> {$y/email} </emailList>
    


    运转这个查问会前去一系列 emailList 元素,每个符合前提的客户记载都有一个 emailList 元素。每个 emailList 元素将搜罗电子邮件数据。如果 DB2 在一个客户的记载中只找到一个电子邮件地点,那么它会前去这个元素及其值。如果找到多个电子邮件地点,就会前去扫数 email 元素及其值。最后,如果没有找到电子邮件地点,就会前去一个空的 emailList 元素。

    关于我们的示例数据,这个查问的输入是:

    清单 32. 前一个查问的输入

                        
    <emailList>
       <email>love2shop@yahoo.com</email>
    </emailList>
    <emailList/>
    <emailList/>
    <emailList>
       <email>beatlesfan36@hotmail.com</email>
       <email>lennonfan36@hotmail.com<emailList>
    </emailList>   





    版权声明: 原创作品,容许转载,转载时请务必以超链接情势标明文章 原始来由 、作者信息和本声明。不然将追查功令责任。

  • 相关阅读:
    Linux常用命令1
    Linux常用命令
    java的接口和抽象类区别
    字符串的全排列
    字符串的全组合
    Mysql范式
    同步 异步 阻塞 非阻塞概念区分
    死锁产生的条件以及解决方法
    Mysql存储引擎MyIsAM和InnoDB区别
    SLES documentation
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1972935.html
Copyright © 2020-2023  润新知