日期:2013-01-29  浏览次数:20553 次

  XML 数据修正

  SQL Server 2005 提供了用于数据修正的结构作为对 XQuery 的一个扩展。子树可以在指定的节点之前或之后插入,或者作为最左边或最左边的子节点插入。此外,子树也可以插入到父节点,在这种情况下,它成为父节点最左边的子节点。属性、元素和文本节点插入都支持。

  支持删除子树。在这种情况下,整个子树就从 XML 实例中被移除。

  标量值可以用新的标量值进行替换。

  例:将子树插入 XML 实例

  这个示例显示了 modify() 方法的使用,它将一个新的<section> 元素插入编号为 1 的 元素的左边。

UPDATE docs SET xCol.modify('
 insert
  <section num="2">
     <heading>Background</heading>
</section>        
 after (/doc/section[@num=1])[1]')

  例:将这本书的价格更新为 $49.99

  下面的更新语句将 ISBN 为 1-8610-0311-0 的书的<price> 替换为 $49.99。该 XML 实例是通过 XML 架构 http://myBooksinstance 进行类型化的,因此就有了 XML 数据修正语句中的命名空间声明。

UPDATE XmlCatalog
SET  Document.modify ('
  default namespace = "http://myBooks"
  replace value of (/bookstore/book[@ISBN=
"1-8610-0311-0"]/price)[1] with 49.99')
类型检查和静态错误

  XQuery 引入了类型检查。编译阶段检查 XQuery 表达式和数据修正语句的静态类型正确性,并且将 XML 架构用于类型推理(在类型化 XML 的情况下)。如果表达式在运转时由于类型安全冲突而失败,则会产生静态类型错误。静态错误的例子有:将一个字符串与一个整数相加、在操作需求单值的地方接收一个值序列,以及查询不存在的节点来查找类型化数据。对于因类型不婚配而导致的静态错误,显式转换到正确的类型是一种变通方法。XQuery 运转时错误被转换成空序列。