用來管理資料庫中 XML 結構描述集合的 DDL
如<管理伺服器上的 XML 結構描述集合>主題中所述,您可以在資料庫中建立 XML 結構描述集合,然後將它們與 xml 類型的變數和資料行產生關聯。為了管理資料庫中的結構描述集合,SQL Server 提供了下列 DDL 陳述式:
CREATE XML SCHEMA COLLECTION (Transact-SQL) 將結構描述元件匯入資料庫中。
ALTER XML SCHEMA COLLECTION (Transact-SQL) 修改現有 XML 結構描述集合中的結構描述元件。
DROP XML SCHEMA COLLECTION (Transact-SQL) 刪除整個 XML 結構描述集合及其所有的元件。
若要使用 XML 結構描述集合及其包含的結構描述,您必須先使用 CREATE XML SCHEMA COLLECTION 陳述式來建立集合和結構描述。在建立結構描述集合之後,您就可以建立 xml 類型的變數和資料行,並將結構描述集合與它們產生關聯。請注意,建立結構描述集合之後,各種結構描述元件會儲存在中繼資料內。您也可以使用 ALTER XML SCHEMA COLLECTION 將更多元件加入現有的結構描述,或將新的結構描述加入現有的集合。
若要卸除結構描述集合,請使用 DROP XML SCHEMA COLLECTION 陳述式。這會卸除集合中包含的所有結構描述,並移除集合物件。請注意,必須符合<DROP XML SCHEMA COLLECTION (Transact-SQL)>中描述的條件,才能卸除結構描述集合。
了解結構描述元件
當您使用 CREATE XML SCHEMA COLLECTION 陳述式時,會將各種結構描述元件匯入資料庫中。結構描述元件包括結構描述元素、屬性和類型定義。當您使用 DROP XML SCHEMA COLLECTION 陳述式時,整個集合都會移除。
CREATE XML SCHEMA COLLECTION 會將結構描述元件儲存到各種系統資料表中。
例如,請考慮下列結構描述:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="uri:Cust_Orders2"
xmlns="uri:Cust_Orders2" >
<xsd:attribute name="SomeAttribute" type="xsd:int" />
<xsd:complexType name="SomeType" />
<xsd:complexType name="OrderType" >
<xsd:sequence>
<xsd:element name="OrderDate" type="xsd:date" />
<xsd:element name="RequiredDate" type="xsd:date" />
<xsd:element name="ShippedDate" type="xsd:date" />
</xsd:sequence>
<xsd:attribute name="OrderID" type="xsd:ID" />
<xsd:attribute name="CustomerID" />
<xsd:attribute name="EmployeeID" />
</xsd:complexType>
<xsd:complexType name="CustomerType" >
<xsd:sequence>
<xsd:element name="Order" type="OrderType"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
<xsd:attribute name="OrderIDList" type="xsd:IDREFS" />
</xsd:complexType>
<xsd:element name="Customer" type="CustomerType" />
</xsd:schema>
以上的結構描述顯示可儲存於資料庫的不同類型元件,這些元件包括 SomeAttribute、SomeType、OrderType、CustomerType、Customer、Order、CustomerID、OrderID、OrderDate、RequiredDate 及 ShippedDate。
元件類別
儲存在資料庫中的「結構描述」元件可分成下列類別:
ELEMENT
ATTRIBUTE
TYPE (適用於簡單或複雜類型)
ATTRIBUTEGROUP
MODELGROUP
例如:
SomeAttribute 是 ATTRIBUTE 元件。
SomeType、OrderType 和 CustomerType 是 TYPE 元件。
Customer 是 ELEMENT 元件。
當您將結構描述匯入資料庫後,SQL Server 並不會儲存結構描述本身。不過,SQL Server 會儲存各種個別的元件。也就是說,並未儲存 <Schema> 標記,只是保留定義於其中的元件。所有的結構描述元素都沒有保留。如果 <Schema> 標記包含指定其元件預設行為的屬性,則這些屬性會在匯入程序期間移到標記內的結構描述元件,如下表所示。
屬性名稱 |
行為 |
---|---|
attributeFormDefault |
form 屬性會套用到結構描述中還沒有出現此屬性的所有屬性宣告上,而且其值會設定為 attributeFormDefault 屬性的值。 |
elementFormDefault |
form 屬性會套用到結構描述中還沒有出現此屬性的所有元素宣告上,而且其值會設定為 elementFormDefault 屬性的值。 |
blockDefault |
block 屬性會套用到還沒有出現此屬性的所有元素宣告和類型定義上,而且其值會設定為 blockDefault 屬性的值。 |
finalDefault |
final 屬性會套用到還沒有出現此屬性的所有元素宣告和類型定義上,而且其值會設定為 finalDefault 屬性的值。 |
targetNamespace |
隸屬於目標命名空間之元件的相關資訊會儲存在中繼資料內。 |