Cómo asignar sql con xml y xml para sql
Para el intercambio de datos entre bases de datos SQL y documentos XML, los diversos elementos de una base de datos SQL deben ser traducible a elementos equivalentes de un documento XML, y, por supuesto, viceversa.
Los conjuntos de caracteres
En SQL, los juegos de caracteres soportados dependen de la aplicación que esté utilizando. Esto significa que DB2 de IBM puede soportar conjuntos de caracteres que no son compatibles con SQL Server de Microsoft. Si se utiliza un conjunto de caracteres menos común, la migración de su base de datos y la aplicación de una plataforma a otra RDBMS puede ser difícil.
XML admite sólo una, Unicode. Esta es una buena cosa desde el punto de vista del intercambio de datos entre cualquier aplicación dada SQL y XML. Todos los proveedores de RDBMS tienen que definir un mapeo entre cadenas de cada uno de sus conjuntos de caracteres y Unicode, así como un mapeo inverso de Unicode a cada uno de sus conjuntos de caracteres.
Por suerte, XML no también soporta varios conjuntos de caracteres. Si así fuera, los proveedores tendrían un problema de muchos a muchos que requeriría varios más asignaciones y revertir las asignaciones de resolver.
identificadores
Personajes que son legales en SQL, pero ilegal en XML se deben asignar a algo legal antes de que puedan convertirse en parte de un documento XML. SQL admite identificadores delimitados. Esto significa que los caracteres impares como%, $, y & son legales, siempre y cuando ellos están encerrados entre comillas dobles. Tales caracteres no son legales en XML.
Por otra parte, los nombres XML que comienzan con los caracteres XML en cualquier combinación de los casos están reservados y por lo tanto no se puede utilizar con impunidad. Si usted tiene cualesquiera identificadores de SQL que comienzan con esas letras, hay que cambiarlos.
Al pasar de SQL a XML, todos los identificadores de SQL se convierten a Unicode. A partir de ahí, los identificadores de SQL que son también nombres XML legales no se modifican. personajes de identificador de SQL que son nombres XML no legales son sustituidos por un código hexadecimal que, o bien toma la forma “_xNNNN_” o “_xNNNNNNNN_”, dónde norte representa un dígito hexadecimal mayúsculas.
Por ejemplo, el carácter de subrayado estará representada por “_x005F_”. El colon estará representada por “_x003A_”. Estas representaciones son los códigos para los caracteres Unicode para el subrayado y el colon. El caso en el que un identificador de SQL comienza con los caracteres x, m, y l se maneja prefijando todos estos casos con un código en la forma “_xFFFF_”.
La conversión de XML a SQL es mucho más fácil. Todo lo que necesita hacer es escanear los caracteres de un nombre XML para una secuencia de “_xNNNN_” o “_xNNNNNNNN_”. Cada vez que encuentre una secuencia tal, reemplazarlo con el carácter que el Unicode corresponde a. Si un nombre XML comienza con los caracteres “_xFFFF_”, ingnóralos.
Tipos de datos
El estándar SQL especifica que un tipo de datos SQL se debe asignar a la posible tipo de datos XML esquema más cercano. la designación más cerca posible significa que todos los valores permitidos por el tipo SQL serán permitidos por el tipo de esquema XML, y el menor número de posibles valores no permitidos por el tipo SQL serán permitidos por el tipo de esquema XML.
facetas, tales como XML maxInclusive y minInclusive, puede restringir los valores permitidos por el tipo de esquema XML para los valores permitidos por el tipo SQL correspondiente.
Por ejemplo, si el tipo de datos SQL restringe valores de la ENTERO escriba a la gama -2157483648, en el XML maxInclusive valor se puede ajustar a 2157483647, y la minInclusive valor se puede ajustar a -2157483648. Aquí está un ejemplo de una asignación de este tipo:
Mesas
Puede asignar una tabla en un documento XML. Del mismo modo, puede asignar todas las tablas de un esquema o todas las tablas en un catálogo. Los privilegios son mantenidos por la asignación. Una persona que tiene la SELECCIONAR privilegio sólo en algunas columnas de la tabla será capaz de asignar sólo aquellas columnas al documento XML.
Video: SQL Server 2012 - Generating XML from SQL Server tables
El mapeo de hecho produce dos documentos, uno que contiene los datos de la tabla y el otro que contiene el esquema XML que describe el primer documento. He aquí un ejemplo de la asignación de una tabla de SQL a un documento que contiene datos XML:
|
Abe Abelson Springfield 714 555-1111 ...
Cuenta Muralla exterior Decatur 714 555-2222
El elemento raíz del documento se ha dado el nombre de la tabla. Cada fila de la tabla está contenida dentro de una
Los valores nulos
Dado que los datos de SQL pueden incluir valores nulos, debe decidir cómo representarlos en un documento XML. Puede representar un valor nulo, ya sea como nula o inexistente. Si se elige la opción cero, entonces el atributo xsi: nil = “true” marca los elementos de columna que representan valores nulos. Podría ser utilizado de la siguiente manera:
|
Cuenta Muralla exterior 714 555-2222
Si se elige la opción ausente, se podría implementar de la siguiente manera:
|
Cuenta Muralla exterior 714 555-2222
En este caso, la fila que contiene el valor nulo está ausente. No hay ninguna referencia a ella.
¿Cómo generar el esquema XML
Para hacer el mapa de SQL con XML, el primer documento generado es el que contiene los datos. El segundo contiene la información del esquema. Considere el esquema para el documento CLIENTE:
Este esquema es apropiado si se utiliza el enfoque de cero a valores nulos de manipulación. El enfoque ausente requiere una definición de elemento ligeramente diferente. Por ejemplo: