WEB开发网
开发学院数据库DB2 在 DB2 中管理 XML Schemas,第 2 部分: XML Sche... 阅读

在 DB2 中管理 XML Schemas,第 2 部分: XML Schemas 演变和 XML 数据管理

 2010-04-12 00:00:00 来源:WEB开发网   
核心提示: ID 为 1、2 和 22 的 XML 数据遵守 清单 3中的 XML schema cust2.xsd,(关系 ID 为 SAMPLE2.CUST1 的 XML schema 被 清单 3中的 cust2.xsd 替换,在 DB2 中管理 XML Schemas,第 2 部分: XML Sch

ID 为 1、2 和 22 的 XML 数据遵守 清单 3中的 XML schema cust2.xsd。(关系 ID 为 SAMPLE2.CUST1 的 XML schema 被 清单 3中的 cust2.xsd 替换,cust2.xsd 被注册为 schema 位置 cust1.xsd。)那些 XML 数据集需要按如下方式更改以适合 cust3.xsd。

home和 cell元素需要被添加到 /customer/phone下面。

/customer/phone的值被移动到 /customer/phone/home。

如果定义了 /customer/cell-phone,那么它被移动到 /customer/phone/cell,并且 /customer/cell-phone被删除。

xsi:noNamespaceSchemaLocation属性的值被更改为 cust3.xsd。(如果验证 XML 数据时使用的是关系 ID,那么这个步骤不是必要的。)

发出以下 SQL 语句将更改应用到 XML 数据(这个 XML 数据已经通过使用关系 ID SAMPLE2.CUST1 的 XML schema 的验证),然后使用 schema 位置为 cust3.xsd 的 XML schema 验证更改后的 XML 数据。

 UPDATE T1 
 SET XMLDATA=XMLVALIDATE(XMLQUERY( 
 'declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance"; 
 copy $new := $XMLDATA 
 modify ( 
  do replace $new/customer/phone with 
   <phone> 
    <home>{$new/customer/phone/text()}</home> 
    <cell>{$new/customer/cell-phone/text()}</cell> 
   </phone>, 
  do replace value of $new/customer/@xsi:noNamespaceSchemaLocation with "cust3.xsd", 
  do delete $new/customer/cell-phone ) 
 return $new')) 
 WHERE XMLXSROBJECTID(XMLDATA)=(SELECT OBJECTID FROM SYSCAT.XSROBJECTS WHERE 
 OBJECTSCHEMA='SAMPLE2' AND OBJECTNAME='CUST1') 

上一页  5 6 7 8 9 10 

Tags:DB 管理 XML

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接