2.2 SQL Server 2005中的XML功能
在SQL Server 2005中,FOR XML 功能得到了增強,它有了對根元素和元素名稱的新的選項、使用FOR XML 調用以便你可以建立復雜的層次關系的能力、和一個新的使得你可以定義將要使用XPath 語法來提取的XML結構的PATH 模式,如下面的示例所示:
SELECT ProductID AS '@ProductID',
ProductName AS 'ProductName'
FROM Products
FOR XML PATH ('Product'), ROOT ('Products')
這個查詢返回下面的XML:
<Products>
<Product ProductID="1">
<ProductName>Widget</ProductName>
</Product>
<Product ProductID="2">
<ProductName>Sprocket</ProductName>
</Product>
</Products>
除了增強SQL Server 2000已推出的XML功能,SQL Server 2005增加了一個新的、本地的xml 數據類型,使得你可以為XML數據創建變量和列,如下面的示例所示:
CREATE XML SCHEMA COLLECTION ProductSchema AS
'<?XML version="1.0" encoding="UTF-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- schema declarations go here -->
</xs:schema>'
你可以使用XML 數據類型來存儲數據庫中的文檔或數據。列和變量可以用於非類型化的XML或類型化的XML,後者是對一個XML Schema 定義(XML Schema Definition ,XSD)的schema有效。如果要為數據驗證進行定義,開發人員可以使用CREATE XML SCHEMA COLLECTION 語句,如下面的示例所示:
在創建了一個schema 集合後,你可以通過參照schema集合將一個XML變量或列與它所包含的schema 聲明結合起來,如下面的示例所示:
CREATE TABLE SalesOrders
(OrderID integer PRIMARY KEY,
OrderDate datetime,
CustomerID integer,
OrderNotes XML)
類型化XML在插入值或更新值時對關聯的schema 集合的聲明進行驗證,這使得可以為了遵從性檢查或兼容性原因而加強關於XML數據的結構的業務規則。