DDL para gerenciamento de coleções de esquema XML no banco de dados
Conforme descrito no tópico Gerenciando coleções de esquema XML no servidor, é possível criar coleções de esquema XML no banco de dados e associá-las a variáveis e colunas do tipo xml. Para gerenciar coleções de esquema no banco de dados, o SQL Server fornece as seguintes instruções DDL:
CREATE XML SCHEMA COLLECTION (Transact-SQL) Importa componentes de esquema em um banco de dados.
ALTER XML SCHEMA COLLECTION (Transact-SQL) Modifica os componentes de esquema em uma coleção de esquema XML existente.
DROP XML SCHEMA COLLECTION (Transact-SQL) Exclui uma coleção de esquema XML completa e todos os seus componentes.
Para usar uma coleção de esquema XML e os esquemas contidos nela, você deve primeiro criar a coleção e os esquemas usando a instrução CREATE XML SCHEMA COLLECTION. Após a criação da coleção de esquema, é possível criar variáveis e colunas do tipo xml e associar a coleção de esquema a elas. Observe que depois que uma coleção de esquema é criada, são armazenados vários componentes de esquema nos metadados. Também é possível usar ALTER XML SCHEMA COLLECTION para adicionar mais componentes a esquemas existentes ou adicionar novos esquemas a uma coleção existente.
Para descartar a coleção de esquema, use a instrução DROP XML SCHEMA COLLECTION. Ela descarta todos os esquemas que estão contidos na coleção e remove o objeto da coleção. Observe que para que seja possível descartar uma coleção de esquema, as condições descritas em DROP XML SCHEMA COLLECTION (Transact-SQL) devem ser atendidas.
Compreendendo componentes de esquema
Quando a instrução CREATE XML SCHEMA COLLECTION é usada, vários componentes de esquema são importados no banco de dados. Os componentes de esquema incluem elementos, atributos e definições de tipo de esquema. Quando a instrução DROP XML SCHEMA COLLECTION é usada, a coleção completa é removida.
CREATE XML SCHEMA COLLECTION salva os componentes do esquema em várias tabelas do sistema.
Por exemplo, considere o seguinte 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>
O esquema anterior mostra os diferentes tipos de componentes que podem ser armazenados no banco de dados. Esses esquemas incluem SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate e ShippedDate.
Categorias de componentes
Os componentes de esquema armazenados no banco de dados se enquadram nas seguintes categorias:
ELEMENT
ATTRIBUTE
TYPE (para tipos simples ou complexos)
ATTRIBUTEGROUP
MODELGROUP
Por exemplo:
SomeAttribute é um componente de ATTRIBUTE.
SomeType, OrderType e CustomerType são componentes de TYPE.
Customer é um componente de ELEMENT.
Quando você importa um esquema no banco de dados, o SQL Server não armazena o próprio esquema. Em vez disso, o SQL Server armazena os vários componentes individuais. Isto é, a marca <Schema> não é armazenada, apenas os componentes que estão definidos dentro dela são preservados. Todos os elementos do esquema não são preservados. Se a marca <Schema> contiver atributos que especificam o comportamento padrão de seus componentes, esses atributos serão movidos para os componentes do esquema dentro dela durante o processo de importação, conforme mostrado na tabela a seguir.
Nome do atributo |
Comportamento |
---|---|
attributeFormDefault |
O atributo form aplicado a todas as declarações de atributo no esquema em que ele ainda não está presente e o valor é definido como o valor do atributo attributeFormDefault. |
elementFormDefault |
O atributo form aplicado a todas as declarações de elemento no esquema em que ele ainda não está presente e o valor é definido como o valor do atributo elementFormDefault. |
blockDefault |
O atributo block aplicado a todas as declarações de elemento e às definições de tipo em que ele ainda não está presente e o valor é definido como o valor do atributo blockDefault. |
finalDefault |
O atributo final aplicado a todas as declarações de elemento e às definições de tipo em que ele ainda não está presente e o valor está definido como o valor do atributo finalDefault. |
targetNamespace |
Informações sobre os componentes que pertencem ao namespace de destino são armazenadas nos metadados. |