Asignación predeterminada de elementos y atributos XDR a tablas y columnas
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). |
En un esquema XDR anotado, un elemento, de forma predeterminada, se asigna a la tabla o vista con el mismo nombre y un atributo se asigna a la columna con el mismo nombre.
Los elementos secundarios no complejos del esquema se pueden asignar a las columnas de base de datos. Para asignar un elemento a una columna de la base de datos, se especifica el atributo content para dicho elemento con el valor textOnly. Si no se especifica content=textOnly al asignar un elemento a una columna de base de datos, se debe especificar explícitamente la anotación sql:field para asignar el <elemento> a una columna de base de datos. Para obtener más información, vea Asignación explícita de elementos y atributos XDR a tablas y columnas.
Ejemplos
Para crear ejemplos funcionales mediante los ejemplos siguientes, debe cumplir determinados requisitos. Para obtener más información, vea Requisitos para ejecutar los ejemplos de SQLXML.
A. Especificar la asignación predeterminada
En este ejemplo, el elemento <Person.Contact> se asigna a la tabla Person.Contact de la base de datos AdventureWorks y todos los atributos se asignan a las columnas del mismo nombre de la tabla Person.Contact. En este esquema XDR no se especifica ninguna anotación.
<?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="Person.Contact" >
<AttributeType name="ContactID" />
<AttributeType name="FirstName" />
<AttributeType name="LastName" />
<attribute type="ContactID" />
<attribute type="FirstName" />
<attribute type="LastName" />
</ElementType>
</Schema>
Para probar una consulta XPath de ejemplo en el esquema
Copie el código de esquema anterior y péguelo en un archivo de texto. Guarde el archivo como DefaultXdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como DefaultXdrT.xml en el mismo directorio donde guardó DefaultXdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="DefaultXdr.xml"> /Person.Contact[@ContactID < 3] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (DefaultXdr.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:\MyDir\DefaultXdr.xml"
Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.
Para obtener más información, vea Utilizar ADO para ejecutar consultas SQLXML 4.0.
El conjunto de resultados es:
<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
<Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/>
<Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel">
</ROOT>
B. Asignar un <elemento> XML a una columna de base de datos
De forma predeterminada, un elemento XML se asigna a una tabla de base de datos y un atributo se asigna a una columna de base de datos. Para asignar un elemento a una columna de base de datos, se especifica el atributo content con un valor de textOnly.
Este esquema XDR está compuesto por el mismo elemento <Person.Contact> que el ejemplo anterior, pero los campos SQL (ContactID, FirstName, LastName) se asignan como elementos secundarios en lugar de atributos.
<?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="ContactID" content="textOnly" />
<ElementType name="FirstName" content="textOnly" />
<ElementType name="LastName" content="textOnly" />
<ElementType name="Person.Contact" >
<element type="ContactID" />
<element type="FirstName" />
<element type="LastName" />
</ElementType>
</Schema>
De forma predeterminada, el elemento <Person.Contact> del esquema XDR se asigna a la tabla Person.Contact de la base de datos AdventureWorks. El atributo content se especifica en los elementos secundarios <FirstName> y <LastName>. Por tanto, estos elementos secundarios se asignarán a las columnas del mismo nombre de la tabla Person.Contact.
[!NOTA]
No se admite el contenido mixto (elementos que incluyen a la vez texto y elementos secundarios).
Para probar una consulta XPath de ejemplo en el esquema
Copie el código de esquema anterior y péguelo en un archivo de texto. Guarde el archivo como ElementXdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como ElementXdrT.xml en el mismo directorio donde guardó ElementXdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="ElementXdr.xml"> /Person.Contact[ContactID < 3] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (ElementXdr.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:\MyDir\ElementXdr.xml"
Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.
Para obtener más información, vea Utilizar ADO para ejecutar consultas SQLXML 4.0.
El conjunto de resultados es:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Contact>
<ContactID>1</ContactID>
<FirstName>Gustavo</FirstName>
<LastName>Achong</LastName>
</Person.Contact>
<Person.Contact>
<ContactID>2</ContactID>
<FirstName>Catherine</FirstName>
<LastName>Abel</LastName>
</Person.Contact>
</ROOT>