Compartir a través de


Introducción a esquemas XSD anotados (SQLXML 4.0)

Puede crear vistas XML de datos relacionales mediante el lenguaje de definición de esquema XML (XSD). A continuación, estas vistas se pueden consultar mediante consultas del lenguaje de ruta de acceso XML (XPath). Esto es similar a crear vistas mediante 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 diversas restricciones de los datos del documento. Al especificar 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> incluye todo el esquema; todas las declaraciones de elementos deben estar contenidas en el <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 usan en el esquema como propiedades del <elemento xsd:schema> .

Un esquema XSD válido debe contener el <elemento xsd:schema> definido de la siguiente manera:

<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 del espacio de nombres del esquema> XML en http://www.w3.org/2001/XMLSchema.

Anotaciones en el esquema XSD

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

Nota:

En Microsoft SQLXML 4.0, el lenguaje de esquema XSD admite las anotaciones introducidas con XML-Data un lenguaje de esquema reducido (XDR) anotado en SQL Server 2000. XDR anotado está en desuso en SQLXML 4.0.

En el contexto de la base de datos relacional, resulta útil asignar el esquema XSD arbitrario a un almacén relacional. Una manera de lograr esto es anotar el esquema XSD. Un esquema XSD con las anotaciones se conoce como un esquema de asignación, que proporciona información relativa a cómo se asignan los datos XML al almacén relacional. Un esquema de asignación es, en efecto, una vista XML de los datos relacionales. Estas asignaciones se pueden usar para recuperar datos relacionales como documento XML.

Espacio de nombres para anotaciones

En un esquema XSD, las anotaciones se especifican mediante el espacio de nombres urn:schemas-microsoft-com:mapping-schema. Como se muestra en el ejemplo siguiente, la manera 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>  

El prefijo de espacio de nombres que se usa es arbitrario. En esta documentación, el prefijo sql se usa para indicar el espacio de nombres de anotación y para 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 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>  

Las anotaciones se agregan a este esquema XSD para asignar sus elementos y atributos a las tablas y columnas de la 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 asigna a la tabla Person.Contact de la base de datos AdventureWorks de ejemplo mediante la sql:relation anotación . Los atributos ConID, FName y LName se asignan a las columnas ContactID, FirstName y LastName de la tabla Person.Contact mediante las sql:field anotaciones.

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

Nota:

En el esquema de asignación, la distinción entre mayúsculas y minúsculas de los valores relacionales especificados (como el nombre de tabla y el nombre de columna) depende de si SQL Server usa la configuración de intercalación que distingue mayúsculas de minúsculas. Para más información, consulte Compatibilidad con la intercalación y Unicode.

Otros recursos

Puede encontrar más información sobre el lenguaje de definición de esquema XML (XSD), el lenguaje de ruta de acceso XML (XPath) y las transformaciones de lenguaje de hoja de estilos extensibles (XSLT) en los siguientes sitios web:

Véase también

Consideraciones de seguridad de esquema anotadas (SQLXML 4.0)
Esquemas XDR anotados (en desuso en SQLXML 4.0)