Como mapear sql para xml e xml para sql

Para trocar dados entre bancos de dados SQL e documentos XML, os vários elementos de um banco de dados SQL deve ser traduzível em elementos equivalentes de um documento XML, e, claro, vice-versa.

conjuntos de caracteres

Em SQL, os conjuntos de caracteres suportados dependem de qual aplicação você está usando. Isto significa que o IBM DB2 pode suportar conjuntos de caracteres que não são suportados pelo SQL Server da Microsoft. Se você usar um conjunto de caracteres menos comuns, migrar seu banco de dados e aplicação de uma plataforma RDBMS para outro pode ser difícil.

Video: SQL Server 2012 - Using XQuery to Query XML Data

XML suporta apenas um, Unicode. Isso é uma coisa boa do ponto de vista da troca de dados entre qualquer implementação SQL e XML. Todos os fornecedores de RDBMS tem que definir um mapeamento entre os cordões de cada um dos seus conjuntos de caracteres e Unicode, bem como um mapeamento inverso de Unicode para cada um dos seus conjuntos de caracteres.

Felizmente, XML também não suportar múltiplos conjuntos de caracteres. Se assim fosse, os fornecedores teria um problema de muitos para muitos que exigiria mais alguns mapeamentos e mapeamentos reverter para resolver.

identificadores

Caracteres que são legais em SQL, mas ilegal em XML deve ser mapeada para algo legal antes que eles possam se tornar parte de um documento XML. SQL suporta identificadores delimitados. Isto significa que personagens estranhos, tais como%, $, e & são legais, enquanto eles estão fechados dentro de aspas duplas. Tais personagens não são legais em XML.

Além disso, nomes XML que começam com os caracteres XML em qualquer combinação dos casos são reservados e, portanto, não pode ser usado impune. Se você tiver quaisquer identificadores SQL que começam com as letras, você tem que mudá-los.

Na passagem de SQL para XML, todos os identificadores SQL são convertidos para Unicode. A partir daí, quaisquer identificadores SQL que também são nomes XML legais é deixado inalterado. caracteres identificadores SQL que são nomes XML não legais são substituídas por um código hexadecimal que ou toma a forma “_xNNNN_” ou “_xNNNNNNNN_”, Onde N representa um dígito hexadecimal maiúsculas.

Por exemplo, o sublinhado será representado por “_x005F_”. O cólon vai ser representado pela “_x003A_”. Essas representações são os códigos para os caracteres Unicode para o sublinhado e cólon. O caso em que um identificador SQL começa com os caracteres x, m, e eu é tratado pelo prefixo todos os casos com um código sob a forma “_xFFFF_”.

Conversão de XML para SQL é muito mais fácil. Tudo que você precisa fazer é verificar os caracteres de um nome de XML para uma seqüência de “_xNNNN_” ou “_xNNNNNNNN_”. Sempre que você encontrar um tal seqüência, substitua-o com o personagem que o Unicode corresponde. Se um nome XML começa com os caracteres “_xFFFF_”, ignore-os.

Video: SELECT FOR XML SQL Server 2005 Enhancements

Tipos de dados

O padrão SQL especifica que um tipo de dados SQL deve ser mapeado para o tipo de dados de esquema XML possível mais próximo. a designação mais próximo possível significa que todos os valores permitidos pelo tipo SQL será permitido pelo tipo de esquema XML, e o menor número de possíveis valores não permitidos pelo tipo SQL será permitido pelo tipo de esquema XML.

facetas XML, como maxInclusive e minInclusive, pode restringir os valores permitidos pelo tipo de esquema XML para os valores permitidos pelo tipo SQL correspondente.

Por exemplo, se o tipo de dados SQL restringe valores da INTEIRO escreva para o intervalo -2157483648, em XML o maxInclusive valor pode ser definido como 2157483647, ea minInclusive valor pode ser ajustado para -2157483648. Aqui está um exemplo de um mapeamento tal:

Video: Reading XML via SQL (RapidRep 5.1)

tabelas



Você pode mapear uma tabela para um documento XML. Da mesma forma, você pode mapear todas as tabelas em um esquema ou todas as tabelas em um catálogo. Privilégios são mantidos pelo mapeamento. Uma pessoa que tem o SELECIONAR privilégio em apenas algumas colunas da tabela será capaz de mapear apenas as colunas para o documento XML.

O mapeamento realmente produz dois documentos, um que contém os dados na tabela e outro que contém o esquema XML que descreve o primeiro documento. Aqui está um exemplo do mapeamento de uma tabela SQL para um documento contendo dados XML:

AbeAbelsonSpringfield714555-1111ContacolherãoDecatur714555-2222...

O elemento raiz do documento foi dado o nome da tabela. Cada linha da tabela está contida dentro de um elemento, e cada elemento de linha contém uma sequência de elementos de coluna, cada um com o nome da coluna correspondente na tabela de origem. Cada elemento de coluna contém um valor de dados.

valores nulos

Como os dados SQL podem incluir valores nulos, você deve decidir como para representá-los em um documento XML. Você pode representar um valor nulo ou como nulo ou ausente. Se você escolher a opção zero, em seguida, o atributo xsi: nil = “true” assinala os elementos da coluna que representam valores nulos. Ele pode ser usado da seguinte maneira:

Video: TRY CONVERT function in SQL Server 2012

Contacolherão714555-2222

Se você escolher a opção ausente, você pode implementá-lo da seguinte forma:

Contacolherão714555-2222

Neste caso, a linha que contém o valor nulo está ausente. Não há nenhuma referência a ele.

Como gerar o XML Schema

Ao mapear a partir do SQL para XML, o primeiro documento gerado é a que contém os dados. O segundo contém as informações de esquema. Considere o esquema para o documento CLIENTE:

Este esquema é apropriada se for utilizada a abordagem nulo para valores nulos manipulação. A abordagem ausente exige uma definição de elemento ligeiramente diferente. Por exemplo:


Publicações relacionadas