2.3 SQL Server 2008中的XML功能
XML功能是在SQL Server 2000和SQL Server 2005中推出的,在SQL Server 2008中得到了增強。在SQL Server 2008中主要的與XML相關的改進包括:
· 改進了schema 驗證能力
· 增強了對XQuery 的支持
· 增強了XML數據操縱語言(DML)的插入功能
本篇白皮書的其余部分描述了這些增強之處,並介紹了你怎樣在SQL Server 2008中使用它們來實現更好的XML解決方案。
3 增強了XML Schema驗證功能
你可以使用一個或多個XSD schema執行遵從性檢查,以此來驗證XML數據。一個schema為某個特定的XML數據結構定義被允許的XML元素和屬性,並通常用於確保XML文檔按正確的結構包含進了所要求的所有數據元素。
SQL Server 2005推出了通過使用XML schema 集合來進行XML數據驗證。一般的方法是使用CREATE XML SCHEMA COLLECTION語句創建包含了針對你的XML數據的schema 規則的schema集合,然後當你要定義一個必須符合這個schema 集合中的schema 規則的XML字段或變量時參照這個schema集合名稱。然後SQL Server會按照這個schema集合中的schema規則來驗證插入或更新進這個字段或變量的所有數據。
在SQL Server 2005中的XML Schema支持實現了一個廣泛的純XML Schema規格的子集,並涵蓋了最常見的XML驗證場景。SQL Server 2008擴展了這個支持,使得它包含下面新增加的由客戶確定的schema 驗證要求:
· 對lax 驗證的支持
· 對dateTime、time和date 驗證的完全支持,包括時區信息的保存。
· 改進了對union和list類型的支持
3.1 支持Lax驗證
XML Schema通過使用any、anyAttribute和anyType聲明來支持XML文檔中的通配符。例如,看看下面的XML schema 聲明:
<xs:complexType name="Order" mixed="true">
<xs:sequence>
<xs:element name="CustomerName"/>
<xs:element name="OrderTotal"/>
<xs:any namespace="##other" processContents="skip"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
這個schema 聲明定義了一個叫做Order 的XML元素,它必須包含叫做CustomerName和OrderTotal的子元素。此外,這個元素可以包含Order類型所屬的命名空間之外的其它命名空間的無限制數目的其它元素。下面的XML顯示了一個包含由這個schema 聲明所定義的Order 元素的一個實例的XML文檔。注意這個order 還包含了一個shp:Delivery 元素,它沒有在schema中明確定義。