Share via


Introducción a los esquemas XSD anotados (SQLXML 4.0)

Puede crear vistas XML de datos relacionales utilizando el lenguaje de definición de esquemas XML (XSD). Estas vistas pueden consultarse después utilizando consultas XPath (Lenguaje de rutas XML). Es parecido a crear vistas utilizando instrucciones CREATE VIEW y, a continuación, 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.

En un esquema XSD, el elemento <xsd:schema> abarca todo el esquema; todas las declaraciones de elementos deben incluirse dentro del elemento <xsd:schema>. Puede describir los atributos que definen el espacio de nombres en el que reside el esquema y los espacios de nombres que se utilizan en el esquema como propiedades del elemento <xsd:schema>.

Un esquema XSD válido debe incluir el elemento <xsd:schema> definido de esta forma:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<!-- additional schema definitions here -->
</xsd:schema>

El elemento <xsd:schema> se deriva de la especificación de espacios de nombres del esquema XML que puede encontrar en la página http://www.w3.org/2001/XMLSchema.

Anotaciones en el esquema XSD

Puede usar un esquema XSD con anotaciones que describan la asignación a una base de datos, consultar la base de datos y devolver los resultados en forma de documento XML. Las anotaciones se proporcionan para asignar un esquema XSD a las tablas y columnas de base de datos. Pueden especificarse consultas XPath en la vista XML creada por el esquema XSD para consultar la base de datos y obtener los resultados en un documento XML.

[!NOTA]

En Microsoft SQLXML 4.0, el lenguaje de esquemas XSD admite las anotaciones introducidas por el lenguaje de esquemas reducidos de datos XML (XDR) anotados de SQL Server 2000. Los esquemas XDR anotados han quedado obsoletos en SQLXML 4.0.

En el contexto de la base de datos relacional, resulta de gran utilidad para asignar el esquema XSD arbitrario a un almacén relacional. Una forma de conseguirlo es anotar el esquema XSD. Un esquema XSD con anotaciones recibe el nombre de esquema de asignación 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 como un documento XML.

Espacio de nombres para las anotaciones

En un esquema XSD, las anotaciones se especifican utilizando el espacio de nombres urn:schemas-microsoft-com:mapping-schema. Tal y como se muestra en el ejemplo siguiente, la forma más fácil de especificar el espacio de nombres es especificarlo en la etiqueta <xsd:schema>.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
...
</xsd:schema>

Se utiliza un prefijo de espacio de nombres arbitrario. En esta documentación, el prefijo sql se utiliza 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.

Ejemplo de un esquema XSD anotado

En el ejemplo siguiente, el esquema XSD consta de un elemento <Person.Contact>. El elemento <Employee> tiene un atributo ContactID y los elementos secundarios <FirstName> y <LastName>:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Contact" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="FName"  
                     type="xsd:string" /> 
        <xsd:element name="LName"
                     type="xsd:string" />
     </xsd:sequence>
        <xsd:attribute name="ConID" type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Se han agregado anotaciones a este esquema XSD para asignar sus elementos y atributos a las tablas y columnas de base de datos:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Contact" sql:relation="Person.Contact" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="FName"
                     sql:field="FirstName" 
                     type="xsd:string" /> 
        <xsd:element name="LName"  
                     sql:field="LastName"  
                     type="xsd:string" />
     </xsd:sequence>
        <xsd:attribute name="ConID" 
                       sql:field="ContactID" 
                       type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

En el esquema de asignación, el elemento <Contact> se ha asignado a la tabla Person.Contact de la base de datos de ejemplo AdventureWorks mediante la anotación sql:relation. Los atributos ConID, FName y LName se asignan a las columnas ContactID, FirstName y LastName de la tabla Person.Contact mediante las anotaciones sql:field.

Este esquema XSD anotado proporciona la vista XML de los datos relacionales. Esta vista XML puede consultarse utilizando el lenguaje XPath. Una consulta XPath devuelve como resultado un documento XML en lugar del conjunto de filas que devuelven las consultas SQL.

[!NOTA]

En el esquema de asignación, la distinción de mayúsculas y minúsculas para los valores relacionales especificados (como el nombre de tabla y el nombre de columna) depende de que SQL Server utilice la configuración de intercalación con distinción de mayúsculas y minúsculas. Para obtener más información, vea Usar intercalaciones de SQL Server.

Otros recursos

Puede buscar más información sobre el lenguaje de definición de esquemas XML (XSD), el lenguaje de rutas XML (XPath) y el lenguaje de transformación basado en hojas de estilo (XSLT) en los siguientes sitios web: