Istruzioni DDL per la gestione di insiemi di schemi XML nel database
Come illustrato nell'argomento Gestione di insiemi di schemi XML sul server, è possibile creare insiemi di schemi XML nel database e associarli a variabili e colonne di tipo xml. Per gestire gli insiemi di schemi nel database, in SQL Server sono disponibili le istruzioni DDL seguenti:
Per utilizzare un insieme di schemi XML e i relativi schemi, è necessario innanzitutto creare l'insieme e gli schemi utilizzando l'istruzione CREATE XML SCHEMA COLLECTION. Dopo aver creato l'insieme di schemi, è quindi possibile creare le variabili e le colonne di tipo xml e associare a esse l'insieme di schemi. Si noti che dopo aver creato l'insieme, 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 all'insieme.
Per eliminare l'insieme di schemi, utilizzare l'istruzione DROP XML SCHEMA COLLECTION, che consente di eliminare tutti gli schemi contenuti nell'insieme e di rimuovere l'oggetto insieme. Si noti che prima di poter eliminare un insieme di schemi, è necessario che vengano soddisfatte le condizioni descritte in DROP XML SCHEMA COLLECTION.
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à rimosso l'intero insieme.
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
.
Tipi di componenti
I componenti dello schema archiviati nel database rientrano nelle categorie seguenti:
- ELEMENT
- ATTRIBUTE
- TYPE (per tipi semplici o complessi)
- ATTRIBUTEGROUP
- MODELGROUP
Di seguito è illustrata la relazione esistente tra i componenti e le categorie specifiche:
- SomeAttribute è un componente di tipo ATTRIBUTE.
- SomeType, OrderType e CustomerType sono componenti di tipo TYPE.
- Customer è un componente di tipo 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. |
Vedere anche
Riferimento
Linee guida e limitazioni per l'utilizzo di insiemi di schemi XML nel server
Autorizzazioni per un insieme di schemi XML
Gestione di insiemi di schemi XML sul server
Concetti
Tipo di dati XML
Codice XML tipizzato e non tipizzato