Compartir a través de


Asignación explícita de elementos y atributos XSD a tablas y columnas (SQLXML 4.0)

Cuando se usa un esquema XSD para proporcionar una vista XML de la base de datos relacional, los elementos y atributos del esquema deben asignarse 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 los 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 anotado, los datos de los elementos y atributos del esquema se recuperan de las tablas y columnas a las que se asignan. Para obtener un valor único de la base de datos, la asignación especificada en el esquema XSD debe tener tanto relación como especificación de campo. Si el nombre de un elemento o atributo no es el mismo que el nombre de la tabla o vista o columna al que se asigna, las sql:relation anotaciones 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 sql:relation anotación 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 sql:relation anotación.

Cuando sql:relation se especifica 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 sql:relation anotación 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 sql:relation anotación se puede usar para especificar la asignación, por ejemplo:

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

sql-field

La sql-field anotación asigna un elemento o atributo a una columna de base de datos. La sql:field anotación se agrega para asignar un nodo XML en el 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.

Un. Especificación de 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 sql:relation anotación asigna el <elemento Contact> a la tabla Person.Contact de la base de datos AdventureWorks. La sql:field anotación 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 da como resultado una asignación predeterminada del atributo a la columna con el 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 del 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>