DDL para administrar las colecciones de esquemas XML de la base de datos
Como se describe en el tema Administrar colecciones de esquemas XML en el servidor, se pueden crear colecciones de esquemas XML en la base de datos y asociarlas a variables y columnas de tipo xml. Para administrar las colecciones de esquemas de la base de datos, SQL Server proporciona las siguientes instrucciones DDL:
CREATE XML SCHEMA COLLECTION (Transact-SQL) Importa los componentes del esquema a una base de datos.
ALTER XML SCHEMA COLLECTION (Transact-SQL) Modifica los componentes de esquema en una colección de esquemas XML existente.
DROP XML SCHEMA COLLECTION (Transact-SQL) Elimina toda la colección de esquemas XML y todos sus componentes.
Para utilizar una colección de esquemas XML y los esquemas que contiene, primero es necesario crear la colección y los esquemas mediante la instrucción CREATE XML SCHEMA COLLECTION. Una vez creada la colección de esquemas, se pueden crear variables y columnas de tipo xml y asociarles la colección. Tenga en cuenta que, después de crear una colección de esquemas, varios componentes de esquema se almacenan en los metadatos. Se puede utilizar también ALTER XML SCHEMA COLLECTION para agregar más componentes a los esquemas existentes o agregar esquemas nuevos a la colección.
Para quitar la colección de esquemas, utilice la instrucción DROP XML SCHEMA COLLECTION. Se quitarán todos los esquemas contenidos en la colección, así como el objeto de colección. Tenga en cuenta que, para quitar una colección de esquemas, deben cumplirse las condiciones descritas en DROP XML SCHEMA COLLECTION (Transact-SQL).
Descripción de los componentes de esquema
Cuando se utiliza la instrucción CREATE XML SCHEMA COLLECTION, se importan varios componentes de esquema a la base de datos. Los componentes de esquema son los elementos de esquema, los atributos y las definiciones de tipo. Cuando se utiliza la instrucción DROP XML SCHEMA COLLECTION, se quita toda la colección.
CREATE XML SCHEMA COLLECTION guarda los componentes de esquema en varias tablas del sistema.
Considere, por ejemplo, el siguiente esquema:
<?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>
El esquema anterior muestra los distintos tipos de componentes que se pueden almacenar en la base de datos. Incluyen SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate y ShippedDate.
Categorías del componente
Los componentes de esquema que se almacenan en la base de datos se incluyen en estas categorías:
ELEMENT
ATTRIBUTE
TYPE (para tipos simples o complejos)
ATTRIBUTEGROUP
MODELGROUP
Por ejemplo:
SomeAttribute es un componente ATTRIBUTE.
SomeType, OrderType y CustomerType son componentes TYPE.
Customer es un componente ELEMENT.
Cuando se importa un esquema a la base de datos, SQL Server no almacena el propio esquema. En su lugar, SQL Server almacena sus distintos componentes individuales. En otras palabras, no se almacena la etiqueta <Schema>, sino que sólo se conservan los componentes definidos en ella. No se conservan todos los elementos del esquema. Si la etiqueta <Schema> contiene atributos que especifican el comportamiento predeterminado de sus componentes, estos atributos se trasladan a esos componentes de esquema durante el proceso de importación, como se muestra en la tabla siguiente.
Nombre del atributo |
Comportamiento |
---|---|
attributeFormDefault |
El atributo form se aplica a todas las declaraciones de atributo del esquema donde todavía no está presente y el valor se establece en el valor del atributo attributeFormDefault. |
elementFormDefault |
El atributo form se aplica a todas las declaraciones de elemento del esquema donde todavía no está presente y el valor se establece en el valor del atributo elementFormDefault. |
blockDefault |
El atributo block se aplica a todas las declaraciones de elemento y definiciones de tipo donde todavía no está presente y el valor se establece en el valor del atributo blockDefault. |
finalDefault |
El atributo final se aplica a todas las declaraciones de elemento y definiciones de tipo donde todavía no está presente y el valor se establece en el valor del atributo finalDefault. |
targetNamespace |
La información acerca de los componentes que pertenecen al espacio de nombres de destino se almacena en los metadatos. |