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