Introducción a los esquemas XDR anotados (obsoleto en SQLXML 4.0)
Importante |
---|
Este tema se incluye como referencia para las aplicaciones heredadas. No se llevará a cabo ningún trabajo de desarrollo de esta característica en el futuro. Evite utilizarla en nuevos trabajos de desarrollo. En su lugar, use esquemas XSD anotados para crear vistas XML. Para obtener más información, vea Introducción a los esquemas XSD anotados (SQLXML 4.0). Puede convertir los esquemas XDR anotados existentes en esquemas XSD. Para obtener más información, vea Convertir esquemas XDR anotados en esquemas XSD equivalentes (SQLXML 4.0). |
Puede crear vistas XML de datos relacionales usando esquemas XDR (esquemas reducidos de datos XML). Estas vistas podrán consultarse después mediante consultas XPath. Es similar a crear vistas mediante instrucciones CREATE VIEW y, después, especificar consultas SQL en la vista.
Un esquema XML describe la estructura de un documento XML y también describe las distintas restricciones en los datos del documento. Cuando se especifican consultas XPath en el esquema, la estructura del documento XML devuelto viene determinada por el esquema en el que se ejecuta la consulta XPath.
El lenguaje reducido de datos XML (XDR) se introdujo por primera vez en Microsoft SQL Server 2000 para crear esquemas XML. En aquel momento, el lenguaje XDR era flexible y superaba algunas de las limitaciones de las definiciones de tipos de documentos (DTD), que también pueden usarse para describir la estructura del documento XML. A diferencia de las DTD, los esquemas XDR describen la estructura del documento usando la misma sintaxis que el documento XML. Además, en una DTD, todo el contenido de datos se expresa en datos de caracteres. Los esquemas del lenguaje XDR permiten especificar el tipo de datos de un elemento o atributo.
En un esquema XDR, el elemento <Schema> abarca todo el esquema. Como propiedades del elemento <Schema>, puede describir los atributos que definen el nombre de esquema y los espacios de nombres donde reside el esquema. En el lenguaje XDR, todas las declaraciones de elementos deben incluirse dentro del elemento <Schema>.
El esquema XDR mínimo es:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data">
...
</Schema>
El elemento <Schema> se deriva del espacio de nombres xml-data (urn:schemas-microsoft-com:xml-data).
Nota
En esta documentación se da por sentado que está familiarizado con el lenguaje de datos XML.
Anotaciones en el esquema XDR
Puede usar un esquema XDR con anotaciones que describan la asignación a la base de datos para consultar la base de datos y devolver los resultados en forma de documento XML. En SQL Server 2000 se introdujeron por primera vez varias anotaciones que podían usarse para asignar el esquema XDR a tablas y columnas de base de datos de SQL. Pueden especificarse consultas XPath en la vista XML creada por el esquema XDR para consultar la base de datos y obtener los resultados en un documento XML.
Se trata de una alternativa al proceso mucho más complejo de escribir una consulta SQL que usa el modo FOR XML EXPLICIT para describir la estructura del documento XML como parte de la consulta. Sin embargo, a fin de superar la mayoría de las limitaciones de las consultas XPath en los esquemas de asignación, use consultas SQL con el modo FOR XML EXPLICIT para devolver los resultados en un documento XML.
Si dispone de esquemas XDR públicos (como un esquema de Microsoft BizTalk), puede realizar estas acciones:
Escribir la consulta en modo FOR XML EXPLICIT de forma que los datos que se generen sean válidos en el esquema XDR público; sin embargo, escribir consultas FOR XML EXPLICIT puede resultar tedioso.
Realizar una copia privada del esquema XDR público. A continuación, agregar anotaciones a esta copia privada, generando así un esquema de asignación. Puede especificar consultas XPath en el esquema de asignación. Como resultado, la consulta genera los datos del espacio de nombres del esquema público. La creación de esquemas anotados y la especificación de consultas XPath en los mismos es un proceso mucho más sencillo que escribir consultas FOR XML EXPLICIT, que resulta mucho más complejo. En la ilustración se muestra el proceso.
Esquema de asignación
En el contexto de la base de datos relacional, resulta de gran utilidad asignar el esquema XDR arbitrario a un almacén relacional. Una forma de conseguirlo es anotar el esquema XDR. Un esquema XDR con anotaciones recibe el nombre de mapping schema y proporciona información relativa al modo en que deben asignarse los datos XML al almacén relacional. Un esquema de asignación es realmente una vista XML de los datos relacionales. Estas asignaciones pueden usarse para recuperar los datos relacionales en forma de documento XML.
En SQL Server 2000 se introdujeron varias anotaciones que pueden usarse en el esquema XDR para asignar los elementos y atributos a las tablas y columnas de base de datos. Puede especificar consultas en los esquemas de asignación (vistas XML) mediante XPath (lenguaje de rutas XML). El esquema de asignación describe la estructura del documento resultante.
Espacio de nombres para las anotaciones
En un esquema XDR, las anotaciones se especifican utilizando este espacio de nombres: urn:schemas-microsoft-com:xml-sql.
En el ejemplo siguiente se muestra que la forma más fácil de especificar el espacio de nombres es especificarlo en la etiqueta <Schema>. Las anotaciones deben tener el espacio de nombres calificado urn:schemas-microsoft-com:xml-sql.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
>
...........
</Schema>
Se usa un prefijo de espacio de nombres arbitrario. En esta documentación, el prefijo sql se usa para hacer referencia al espacio de nombres de anotaciones y distinguir las anotaciones de este espacio de nombres de las de otros espacios de nombres.
Espacio de nombres para los tipos de datos
Los esquemas XDR permiten especificar el tipo de datos de un elemento o un atributo. Los tipos de datos se especifican utilizando este espacio de nombres: urn:schemas-microsoft-com:datatypes.
Éste es el esquema XDR mínimo con las declaraciones de espacio de nombres:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
...
</Schema>
Se usa un prefijo de espacio de nombres arbitrario. En esta documentación, el prefijo dt se usa para hacer referencia al espacio de nombres de tipo de datos y distinguir las anotaciones de este espacio de nombres de las de otros espacios de nombres.
El elemento <Schema> se deriva del espacio de nombres xml-data: urn:schemas-microsoft-com:xml-data.
Ejemplo de un esquema XDR
En este ejemplo se muestra cómo agregar anotaciones al esquema XDR. Este esquema XDR está compuesto de un elemento <Contacts> y los atributos CID, FName y LName.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Contacts" >
<AttributeType name="CID" />
<AttributeType name="FName" />
<AttributeType name="LName" />
<attribute type="CID" />
<attribute type="FName" />
<attribute type="LName" />
</ElementType>
</Schema>
Ahora se agregan anotaciones a este esquema XDR para asignar sus elementos y atributos a los nombres de tablas y columnas SQL de la base de datos de ejemplo AdventureWorks2008R2. Este es el esquema XDR anotado:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Contacts" sql:relation="Person.Person" >
<AttributeType name="CID" />
<AttributeType name="FName" />
<AttributeType name="LName" />
<attribute type="CID" sql:field="BusinessEntityID" />
<attribute type="FName" sql:field="FirstName" />
<attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>
En el esquema de asignación, el elemento <Contacts> se asigna a la tabla Person.Person mediante la anotación sql:relation. Los atributos CID, FName y LName se asignan a las columnas BusinessEntityID, FirstName y LastName de la tabla Person.Person mediante las anotaciones sql:field.
Este esquema XDR anotado proporciona la vista XML de los datos relacionales. Esta vista XML puede consultarse utilizando el lenguaje XPath (lenguaje de rutas XML). La consulta devuelve como resultado un documento XML en lugar del conjunto de filas que devuelven las consultas SQL.
Nota
En el esquema de asignación, los valores relacionales especificados (como el nombre de tabla y el nombre de columna) distinguen mayúsculas de minúsculas.