Suporte ao tipo de dados xml no SQLXML 4.0
A partir do SQL Server 2005, o SQL Server oferece suporte aos dados do tipo XML que usem o tipo de dados xml. Este tópico fornece informações sobre como o SQLXML 4.0 reconhece instâncias do tipo de dados xml e implementa o suporte para elas.
Trabalhando com tipos de dados xml
Para compreender melhor como trabalhar com tabelas SQL que implementam colunas de tipo de dados xml, os seguintes exemplos são fornecidos:
Tarefa |
Exemplo |
Tópico |
---|---|---|
Como mapear e incluir uma coluna xml em uma exibição XML |
"Mapeando um elemento XML para uma coluna de tipo de dados XML" |
Mapeamento padrão de atributos e elementos XSD para tabelas e colunas (SQLXML 4.0) |
Como inserir dados em uma coluna xml com diagramas de atualização |
"Inserindo dados em uma coluna de tipo de dados XML" |
Inserindo dados usando diagramas de atualização XML (SQLXML 4.0) |
Carregando em massa dados XML em uma coluna xml |
"Carregamento em massa em colunas de tipo de dados xml" |
Diretrizes e limitações
<xsd:any> não pode ser mapeado para uma coluna que inclui um tipo de dados xml. O suporte no SQLXML para este cenário é fornecido pela anotação sql:overflow-field. Outra solução alternativa é mapear um campo de tipo de dados xml como um elemento de xsd:anyType. Essa solução alternativa é demonstrada no exemplo "Mapeando um elemento XML para uma coluna de tipo de dados XML" mencionado na tabela acima.
Não há suporte para a consulta XPath no conteúdo das colunas de tipo de dados xml.
O uso de uma coluna de tipo de dados xml em anotações em que ela não seja aceita (como sql:relationship e sql:key-fields) ou permitida resultará em erros do SQL Server que não serão capturados por componentes de camada intermediária que implementam o SQLXML 4.0. Isto ocorre porque o SQLXML não exige informações do tipo SQL. Isto é semelhante ao comportamento do SQLXML para outros tipos de dados, como o BLOB e tipos binários.
O mapeamento de colunas xml é aceito apenas para esquemas XSD. Os esquemas XDR não têm suporte para o mapeamento de colunas xml.
O SQLXML 4.0 conta com o suporte de análise de XML fornecido no SQL Server. Uma coluna xml pode ser mapeada como XML digitado ou não digitado. Em qualquer um desses casos, o SQLXML 4.0 não valida o XML de entrada. Se o XML de entrada não for válido nem bem formado, o SQL Server o informará para o SQLXML e propagará todas as informações de erro relevantes retornadas pelo servidor para o usuário.
O SQLXML 4.0 conta com o suporte limitado para DTDs fornecido no SQL Server. O SQL Server permite um DTD interno nos dados do tipo de dados xml, os quais podem ser usados para fornecer valores padrão e para substituir referências de entidades pelo conteúdo expandido correspondente. SQLXML transmite os dados de XML "como estão" (incluindo o DTD interno) para o servidor. É possível converter documentos DTDs em Esquema XML (XSD) usando ferramentas de terceiros e carregar os dados com esquemas XSD embutidos no banco de dados.
O SQLXML 4.0 não preserva instruções de processamento de declaração XML (por exemplo, <?xml version='1.0'?>) com base no comportamento do SQL Server. Em vez disso, a declaração XML é tratada como uma diretiva para o analisador XML do SQL Server e seus atributos (version, encoding e standalone) são perdidos depois que os dados são convertidos no tipo de dados xml. Os dados XML são armazenados internamente como UCS-2. Todas as outras instruções de processamento na instância de XML são preservadas; elas são permitidas na coluna xml e podem ser aceitas por SQLXML.