Condividi tramite


Istruzioni DDL per la gestione di raccolte di schemi XML nel database

Come illustrato nell'argomento Gestione di raccolte di schemi XML sul server, è possibile creare raccolte di schemi XML nel database e associarle a variabili e colonne di tipo xml. Per gestire le raccolte di schemi nel database, in SQL Server sono disponibili le istruzioni DDL seguenti:

Per utilizzare una raccolta di schemi XML e i relativi schemi, è necessario innanzitutto creare la raccolta e gli schemi utilizzando l'istruzione CREATE XML SCHEMA COLLECTION. Dopo aver creato la raccolta di schemi, è quindi possibile creare le variabili e le colonne di tipo xml e associare a esse la raccolta di schemi. Si noti che dopo aver creato la raccolta, nei metadati verranno archiviati diversi componenti degli schemi. È inoltre possibile utilizzare l'istruzione ALTER XML SCHEMA COLLECTION per aggiungere altri componenti agli schemi o nuovi schemi alla raccolta.

Per eliminare la raccolta di schemi, utilizzare l'istruzione DROP XML SCHEMA COLLECTION, che consente di eliminare tutti gli schemi contenuti nella raccolta e di rimuovere l'oggetto raccolta. Prima di eliminare una raccolta di schemi, è necessario soddisfare le condizioni descritte in DROP XML SCHEMA COLLECTION (Transact-SQL).

Informazioni sui componenti dello schema

Quando si utilizza l'istruzione CREATE XML SCHEMA COLLECTION, vengono importati nel database diversi componenti dello schema, ad esempio elementi, attributi e definizioni di tipi dello schema. Se si utilizza l'istruzione DROP XML SCHEMA COLLECTION, verrà rimossa l'intera raccolta.

L'istruzione CREATE XML SCHEMA COLLECTION salva i componenti dello schema in diverse tabelle di sistema.

Si consideri ad esempio lo schema seguente:

<?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>

Questo schema mostra i diversi tipi di componenti che possono essere archiviati nel database, tra i quali sono compresi SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate e ShippedDate.

Categorie di componenti

I componenti dello schema archiviati nel database rientrano nelle categorie seguenti:

  • ELEMENT

  • ATTRIBUTE

  • TYPE (per tipi semplici o complessi)

  • ATTRIBUTEGROUP

  • MODELGROUP

Esempio:

  • SomeAttribute è un componente di tipo ATTRIBUTE.

  • SomeType, OrderType e CustomerType sono componenti di tipo TYPE.

  • Customer è un componente ELEMENT.

Quando si importa uno schema nel database, SQL Server non archivia direttamente lo schema, ma i vari singoli componenti. Ciò significa che il tag <Schema> non viene archiviato, ma vengono mantenuti i componenti definiti al suo interno. Non vengono mantenuti tutti gli elementi dello schema. Se il tag <Schema> contiene attributi che specificano il comportamento predefinito dei relativi componenti, tali attributi vengono spostati nei componenti dello schema durante il processo di importazione, come illustrato nella tabella seguente.

Nome dell'attributo

Comportamento

attributeFormDefault

Attributo form applicato a tutte le dichiarazioni di attributo nello schema nelle quali non è già presente e dove il valore viene impostato sul valore dell'attributo attributeFormDefault.

elementFormDefault

Attributo form applicato a tutte le dichiarazioni di elemento nello schema nelle quali non è già presente e dove il valore viene impostato sul valore dell'attributo elementFormDefault.

blockDefault

Attributo block applicato a tutte le dichiarazioni di elemento e definizioni di tipo nelle quali non è già presente e dove il valore viene impostato sul valore dell'attributo blockDefault.

finalDefault

Attributo final applicato a tutte le dichiarazioni di elemento e definizioni di tipo nelle quali non è già presente e dove il valore viene impostato sul valore dell'attributo finalDefault.

targetNamespace

Le informazioni sui componenti appartenenti allo spazio dei nomi di destinazione vengono archiviate nei metadati.