Utilizando SCHEMA COLLECTIONS para validar um campo XML
De acordo com o texto anterior, existem 2 formas de armazenar conteúdo XML em um banco de dados. O primeiro permite armazenar qualquer conteúdo XML desde que possua a sintaxe correta, é o XML não-tipado. Assim, para campos deste tipo, a única validação realizada é a da sintaxe do conteúdo inserido.
Em bancos de dados corporativos, a consistência e a integridade das informações armazenadas é fundamental. Dessa forma, permitir que o banco armazene qualquer tipo de conteúdo em um campo XML pode não ser viável, principalmente quando existem campos obrigatórios a serem armazenados em tal campo.
Para isso, o SQL Server permite que um campo ou variável do tipo XML seja tipado, isto é, tenha sua estrutura definida através de um SCHEMA COLLECTION.
Criando um SCHEMA COLLECTION
A sintaxe básica para criar um Schema Collection está descrita abaixo:
CREATE XML SCHEMA COLLECTION SchemaName AS 'conteúdo XML'
O exemplo a seguir ilustra o uso deste comando:
CREATE XML SCHEMA COLLECTION ContactSchema AS
'<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name = "Contato">
<complexType>
<sequence>
<element name = "nome" type="string"/>
<element name = "email" type="string" />
</sequence>
</complexType>
</element>
</schema>'
'<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name = "Contato">
<complexType>
<sequence>
<element name = "nome" type="string"/>
<element name = "email" type="string" />
</sequence>
</complexType>
</element>
</schema>'
No exemplo, foi definido um Schema Collection chamado ContactSchema com uma estrutura Contato cujos atributos são nome e e-mail, ambos do tipo string.
Os Schema Collections de um banco de dados podem ser acessados através do caminho nome_do_banco->Programmability -> Types -> XML Schema Collections, através da caixa de ferramentas "Object Explorer". A Figura abaixo mostra o Schema Collection criado no exemplo anterior:
Aplicando o Schema Collection
Depois de criar o Schema Collection, pode-se aplicá-lo aos campos XML das tabelas do banco ou mesmo às variáveis XML utilizadas.
No exemplo abaixo, aplicamos o Schema Collection ContactSchema à variável @contactInfo
DECLARE @contactInfo XML (ContactSchema)
Nas linhas a seguir, um conteúdo XML é associado à variável criada.
SET @contactInfo =
'<Contato>
<nome> Evandro </nome>
<email> evdjramos@gmail.com </email>
</Contato>'
'<Contato>
<nome> Evandro </nome>
<email> evdjramos@gmail.com </email>
</Contato>'
A figura abaixo mostra o resultado da execução do scripta (foi adicionado um comando SELECT na variável @contactInfo para exibir o conteúdo armazenado.
Ao associar o conteúdo à variável com Schema Collection, o SQL Server valida o XML, verificando, além de sua sintaxe, sua estrutura.
Caso um valor inválido seja atribuído à variável, um erro será disparado, como mostra a figura abaixo
Neste exemplo, o atributo obrigatório email do elemento Contato não foi definido, causando o erro mostrado.
Aguarde!
Na continuação deste artigo, teremos veremos consultas em XML e dicas de implementação de stored procedures e funções com utilização de parâmetros XML.
Nenhum comentário:
Postar um comentário