Share via


用來管理資料庫中 XML 結構描述集合的 DDL

如<管理伺服器上的 XML 結構描述集合>主題中所述,您可以在資料庫中建立 XML 結構描述集合,然後將它們與 xml 類型的變數和資料行產生關聯。為了管理資料庫中的結構描述集合,SQL Server 提供了下列 DDL 陳述式:

若要使用 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 元件。

  • SomeTypeOrderTypeCustomerType 是 TYPE 元件。

  • Customer 是 ELEMENT 元件。

當您將結構描述匯入資料庫後,SQL Server 並不會儲存結構描述本身。不過,SQL Server 會儲存各種個別的元件。也就是說,並未儲存 <Schema> 標記,只是保留定義於其中的元件。所有的結構描述元素都沒有保留。如果 <Schema> 標記包含指定其元件預設行為的屬性,則這些屬性會在匯入程序期間移到標記內的結構描述元件,如下表所示。

屬性名稱

行為

attributeFormDefault

form 屬性會套用到結構描述中還沒有出現此屬性的所有屬性宣告上,而且其值會設定為 attributeFormDefault 屬性的值。

elementFormDefault

form 屬性會套用到結構描述中還沒有出現此屬性的所有元素宣告上,而且其值會設定為 elementFormDefault 屬性的值。

blockDefault

block 屬性會套用到還沒有出現此屬性的所有元素宣告和類型定義上,而且其值會設定為 blockDefault 屬性的值。

finalDefault

final 屬性會套用到還沒有出現此屬性的所有元素宣告和類型定義上,而且其值會設定為 finalDefault 屬性的值。

targetNamespace

隸屬於目標命名空間之元件的相關資訊會儲存在中繼資料內。