查询包含名称空间的XML数据

http://tech.ddvip.com   2007年07月03日    社区交流

内容摘要:如果想学习关于 XQuery 与 SQL/XML 的基础以外的更多知识,那么必须理解文档和消息中的 XML 名称空间对查询的语义的影响。否则,就可能收到意外的结果。幸运的是,学习如何查询包含名称空间的 XML 文档并不难。本文提供了一些例子来帮助您起步。

  示例环境

  在考虑如何查询包含名称空间的 XML 数据之前,需要一些示例数据。为此,我将使用 DB2 V9 来存储和查询关于业务伙伴的 XML 数据,将在一个 PARTNERS 表中维护该数据。如果您打算跟随我进行实践,那么就需要在一个 DB2 UTF-8 数据库中创建该表。

  清单 4 中的脚本创建 PARTNERS 表,并插入一些行到该表中(每个行包含一个 XML 文档):

  清单 4. 创建一个示例表并为之填充数据的脚本create table partners (id int primary key not null, status varchar(10), details xml);
insert into partners values (111, 'Gold',
'<company type="public">
 <name>Acme Tech</name>
 <specialty>Technology</specialty>
 <contact>  
  <name>John Smith</name>
  <title> VP, Business Development </title>  
  <email>js@us.acme_tech.com</email>
 </contact>
</company>');
insert into partners values (200, 'Silver',
'<company xmlns="urn:xmlns:saracco-sample:company1.0" type="public">
 <name>Saturnia Ltd</name>
 <specialty>Technology</specialty>
 <contact>
  <name>Klaus Fischer</name>
  <title>Alliance Manager</title>
  <email>klausfischer@uk.saturnia.com</email>
 </contact>
</company>');
insert into partners values (222, 'Gold',
'<co:company xmlns:co="urn:xmlns:saracco-sample:company1.0" type="private">
 <name>Maribel Enterprises</name>
 <specialty>Public relations</specialty>
 <contact>
   <name>Maribel Payton</name>
   <title>CEO</title>
   <email>mpayton@maribelent.com</email>
 </contact>
</co:company>');
insert into partners values (333, 'Silver',
'<co:company xmlns:co="urn:xmlns:saracco-sample:company1.0" type="public">
 <co:name>Credo International Corp.</co:name>
 <co:specialty>Manufacturing</co:specialty>
 <person:contact xmlns:person=
    "http://www.ibm.com/bogus/saracco-sample/person1.0">    
   <person:name>Helen Rakai</person:name>
   <person:title>Director of Marketing</person:title>
   <person:email>helen_rakai@credointcorp.com</person:email>
 </person:contact>
</co:company>');
insert into partners values (444, 'Silver',
'<co:company xmlns:co="urn:xmlns:saracco-sample:company1.0" type="private">
 <co:name>Raymond Associates</co:name> 
 <co:specialty>Consulting</co:specialty>
 <person:contact xmlns:person=
    "http://www.ibm.com/bogus/saracco-sample/person2.0">    
   <person:name>Raymond Sanchez</person:name>
   <person:title>Dr.</person:title>
   <job:title xmlns:job=
    "http://www.ibm.com/bogus/saracco-sample/job1.0">President</job:title>
   <person:email>drsanchez@ca.rrs.com</person:email>
  <person:comments>Prefers short-term projects</person:comments> 
 </person:contact>
</co:company>');

来源:ibm.com    作者:C. M. Saracco    责编:豆豆技术应用

正在加载评论...