Compartir a través de


Asignaciones XSD personalizadas a tablas o columnas (SQLXML)

Se aplica a: SQL ServerAzure SQL Database

Cuando se utiliza un esquema XSD para proporcionar una vista XML de la base de datos relacional, los elementos y atributos del esquema se deben asignar a tablas y columnas de la base de datos. Las filas de la tabla o vista de la base de datos se asignarán a elementos del documento XML. Los valores de columna de la base de datos se asignan a atributos o elementos.

Cuando se especifican consultas XPath en el esquema XSD agregado, los datos de los elementos y atributos del esquema se recuperan de las tablas y columnas a las que se asignan. Para obtener un único valor de la base de datos, la asignación especificada en el esquema XSD debe tener una especificación de campo y relación. Si el nombre de un elemento o atributo no es el mismo que el nombre de la tabla/vista o columna al que se asigna, las anotaciones sql:relation y sql:field se usan para especificar la asignación entre un elemento o atributo en un documento XML y la tabla (vista) o columna de una base de datos.

sql-relation

La anotación sql:relation se agrega para asignar un nodo XML en el esquema XSD a una tabla de base de datos. El nombre de una tabla (vista) se especifica como el valor de la anotación sql:relation .

Cuando se especifica sql:relation en un elemento, el ámbito de esta anotación se aplica a todos los atributos y elementos secundarios que se describen en la definición de tipo complejo de ese elemento, por lo que proporciona un acceso directo en las anotaciones de escritura.

La anotación sql:relation también es útil cuando los identificadores que son válidos en Microsoft SQL Server no son válidos en XML. Por ejemplo, "Detalles del pedido" es un nombre de tabla válido en SQL Server, pero no en XML. En tales casos, la anotación sql:relation se puede usar para especificar la asignación, por ejemplo:

<xsd:element name="OD" sql:relation="[Order Details]">  

sql-field

La anotación sql-field asigna un elemento o atributo a una columna de base de datos. La anotación sql:field se agrega para asignar un nodo XML del esquema a una columna de base de datos. No se puede especificar sql:field en un elemento de contenido vacío.

Ejemplos

Para crear muestras funcionales mediante los ejemplos siguientes, debe cumplir determinados requisitos. Para obtener más información, vea Requisitos para ejecutar ejemplos de SQLXML.

A Especificar las anotaciones sql:relation y sql:field

En este ejemplo, el esquema XSD consta de un <elemento Contact> de tipo complejo con <elementos secundarios FName> y <LName> y el atributo ContactID.

La anotación sql:relation asigna el <elemento Contact> a la tabla Person.Contact de la base de datos AdventureWorks. La anotación sql:field asigna el <elemento FName a la columna FirstName> y al< elemento LName> a la columna LastName.

No se especifica ninguna anotación para el atributo ContactID . Esto produce una asignación predeterminada del atributo a la columna del mismo nombre.

<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="ContactID"   
                       type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Para probar una consulta XPath de ejemplo en el esquema
  1. Copie el código de esquema anterior y péguelo en un archivo de texto. Guarde el archivo como MySchema-annotated.xml.

  2. Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como MySchema-annotatedT.xml en el mismo directorio donde guardó MySchema-annotated.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="MySchema-annotated.xml">  
        /Contact  
      </sql:xpath-query>  
    </ROOT>  
    

    La ruta de acceso al directorio especificada para el esquema de asignación (MySchema-annotated.xml) es relativa al directorio donde se guarda la plantilla. También puede especificarse una ruta de acceso absoluta como, por ejemplo:

    mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"  
    
  3. Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.

    Para obtener más información, consulte Uso de ADO para ejecutar consultas SQLXML.

Éste es el conjunto de resultados parciales:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">   
 <Contact ContactID="1">   
    <FName>Gustavo</FName>   
    <LName>Achong</LName>   
 </Contact>   
  .....  
</ROOT>