最近在做xml的数据迁移工作,需要将符合旧版本xsd的xml字段迁移到新版本上,因此期间查阅了很多相关资料。目前迁移工作已完成,综合所有资料和自己的实际应用,将“SQL Server 2005XML操作”总结为八篇文章,一方面作为自己以后查阅的依据,另一方面也希望对大家有所帮助,其中有借鉴自网络的部分,也有自己总结的部分,总结的比较仓促,难免有疏漏之处,欢迎大家批评指正!

1、xml:   能认识元素、属性和值

2、xpath:    寻址语言【类似windows目录的查找】

语法格式,这些语法可以组合为条件:

"."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,

"name"表示按名字查找,"@name"表示按属性查找

"集合[条件]" 表示根据条件取集合的子集,条件可以是:

数  值:数字,last(),last()-数字 等

布尔值:position()<数字,@name='条件',name='条件'

【条件是布尔值的时候可以合并计算:and or】

3、xquery:    基于xpath标的准查询语言,sqlserver xquery包含如下函数:

      exist(xpath条件):返回布尔值表示节点是否存在
      query(xpath条件):返回由符合条件的节点组成的新的xml文档
      value(xpath条件,数据类型):返回指定的标量值,xpath条件结果必须唯一
      nodes(xpath条件): 返回由符合条件的节点组成的一行一列的结果表,将 xml 数据类型实例拆分为关系数据,则 nodes() 方法非常有用。它允许您标识将映射到新行的节点。

(以上摘自http://blog.csdn.net/jinjazz

[注意]

      本系列中xml示例为不含命名空间的xml形式,若含有命名空间则需要在最前面加上"declare namespace [命名空间缩写]=[命名空间URL]"的字样,

      同时涉及到的节点需要加入命名空间缩写。

例如:

set @data.modify('insert &lt;author>Erik E. Ray</author>

before (/bookstore/book[@category="WEB"]/author)[1]')

--需要改为
set @data.modify(' declare namespace UI=http://schemas.com/sqlserver/BookStore ;

insert <UI:author>Erik E. Ray</UI:author> before (/UI: bookstore/UI:book[@category="WEB"]/UI:author)[1]'