Compartir a través de


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:

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.