<Invoice XMLns="http://adventure-works.com/order"
XMLns:shp="http://adventure-works.com/shipping">
<Order>
<CustomerName>Graeme Malcolm</CustomerName>
<OrderTotal>299.99</OrderTotal>
<shp:Delivery>Express</shp:Delivery>
</Order>
</Invoice>
對通配符的驗證取決於在schema定義中的通配符的processContents 屬性。在SQL Server 2005中,schema可以使用用於any和anyAttribute聲明的skip和strict 的processContents值。在前面的示例中,這個通配符元素的processContents屬性被設置為skip,所以不會對這個元素的內容進行驗證。即使這個schema集合包含一個對shp:Delivery元素的聲明(例如,定義一組有效的發送方法對Order元素中的通配符),這個元素也不會被驗證,除非在Order元素中對通配符的聲明將它的processContents屬性設置為strict。
SQL Server 2008增加了對第三方驗證的支持。通過將一個通配符的processContents屬性設置為lax ,你可以對具有相應的schema 聲明的任何元素進行驗證,但忽略沒有在schema 中定義的所有元素。繼續前面的示例,如果你將schema中對通配符元素的聲明中的processContents屬性設置為lax 並增加一個對shp:Delivery元素的聲明,那麼在XML文檔中的shp:Delivery 元素會被進行驗證。然而,如果不是shp:Delivery 元素,而是該文檔包含了一個沒有在schema中聲明的元素,那麼這個元素會被忽略掉。
此外,XML Schema 規格定義anyType聲明具有對它的內容模型的lax處理方式。SQL Server 2005不支持lax處理,所以會嚴格的對內容進行驗證。SQL Server 2008支持anyType 內容的lax處理,因此內容會被正確的進行驗證。
3.2 對 xs:dateTime 的完全支持
你可以在一個XML schema 中使用dateTime數據類型來定義日期和時間數據。日期和時間數據以2007-08-01T09:30:00:000Z的格式來顯示,這表示的是通用協調時(UTC)2007年8月1日早上9:30,這用Z表示。其它的時區顯示的時間與通用協調時間不同,因此例如你能使用太平洋標准時間2007-12-25T06:00:00:000-8:00來顯示2007年12月25日的早上6:00(它比UTC時間滯後8小時)。
XML Schema 規格定義了可選擇的dateTime、date和time 數據類型的時區組件。然而,在SQL Server 2005中你必須提供一個用於dateTime、date和time數據的時區。此外,SQL Server 2005不保存你的dateTime或time數據的時區信息,但是會將它規格化為UTC時間(所以例如,如果你的XML有個2007-12-25T06:00:00:000-8:00的值,SQL Server 2005會將它規格化為2007-12-25T14:00:00:000Z。)在SQL Server 2008中沒有這些限制,所以當你存儲dateTime、date或time數據時你可以省略時區信息,並且你提供的任何時區信息都會被保存下來。
3.3 Union和List類型
你可以使用XML schema 將你的XML數據的數據類型定義為允許將一個有限集合的值賦給具有多個值的元素和屬性。例如,你可能定義一個sizeListType類型,它使產品定義中的一個AvaliableSizes元素的賦值限制為S、M和L。SQL Server 2005支持XML schema包含這些簡單的類型定義和限制。例如,你可以使用一個list類型來定義一個產品的有效的型號,如下面的示例所示:
<xs:simpleType name="sizeListType">
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="S"/>
<xs:enumeration value="M"/>
<xs:enumeration value="L"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>