Usar sql:relation (esquema XDR)
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 usarla 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). |
La anotación sql:relation se agrega para asignar un nodo XML en el esquema XDR a una tabla de base de datos. Se especifica un nombre de tabla o vista como el valor de anotación sql:relation.
La anotación sql:relation se puede agregar a un nodo <ElementType>, <element> o <attribute> en el esquema XDR. sql:relation especifica la asignación entre <ElementType>, <element> o <attribute> en el esquema para una tabla o vista en una base de datos.
Cuando se especifica sql:relation en <ElementType>, el ámbito de esta anotación se aplica a todas las especificaciones de atributo y elemento secundario en ese <ElementType>. Por consiguiente, proporciona un acceso directo para escribir anotaciones. Cuando se especifica sql:relation directamente en <element>, también hay un ámbito que se incluye en los atributos especificados en <ElementType>. La anotación sql:relation se omite en <AttributeType>.
La anotación sql:relation es útil en aquellos casos en los que los identificadores que son válidos en SQL Server de Microsoft no son válidos en XML. Por ejemplo, "Order Details" es un nombre de tabla válido en SQL Server pero no en XML. En casos como éste, la anotación sql:relation se puede usar para especificar la asignación, por ejemplo:
<ElementType name="OD" sql:relation="[Order Details]">
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 sql:relation en <ElementType> que contiene los atributos
En este ejemplo, el esquema XDR consta de un elemento <Contacts> con los atributos ContactID, FirstName y LastName. La anotación sql:relation se especifica en <ElementType>, asignando el elemento <Contacts> a la tabla Person.Contact. El ámbito de esta asignación se aplica a todos los atributos en <ElementType>. Por consiguiente, todos los atributos asignan a las columnas en la tabla Person.Contact.
La asignación predeterminada tiene lugar para los atributos; por ejemplo, los atributos asignan a las columnas con los mismos nombres que en la tabla Person.Contact.
<?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="Contacts" sql:relation="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 sqlRelationXdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como sqlRelationXdrT.xml en el mismo directorio donde guardó sqlRelationXdr.xml. La consulta en la plantilla selecciona un contacto con el ContactID de 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="sqlRelationXdr.xml"> /Contacts[@ContactID="1"] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación es relativa al directorio donde se guarda la plantilla. Puede especificarse una ruta de acceso absoluta como, por ejemplo:
mapping-schema="C:\MyDir\sqlRelationXdr.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.
Éste es el conjunto de resultados parciales:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contacts ContactID="1" FirstName="Gustavo"
LastName="Achong" />
</ROOT>
B. Especificar sql:relation en <ElementType> que contiene subelementos y atributos
En este ejemplo, el esquema XDR consta del elemento <Contacts> con el atributo ContactID y los elementos secundarios <FirstName> y <LastName>. La anotación sql:relation se especifica en <ElementType>, asignando el elemento <Contacts> a la tabla Person.Contact. El ámbito de esta asignación se aplica a todos los atributos en <ElementType>. Por consiguiente, todos los atributos asignan a las columnas en la tabla Person.Contact.
La asignación predeterminada tiene lugar para los atributos. Los atributos asignan a las columnas con el mismo nombre que en la tabla Person.Contact.
En este ejemplo, el atributo content se especifica en los elementos secundarios <FirstName> y <LastName>. Sin el atributo content=textOnly, los elementos secundarios no asignarían a las columnas respectivas FirstName y LastName de la tabla Person.Contact porque, de forma predeterminada, los elementos asignan a una tabla y no a un campo.
<?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="FirstName" content="textOnly"/>
<ElementType name="LastName" content="textOnly"/>
<ElementType name="Contacts" sql:relation="Person.Contact" >
<AttributeType name="ContactID" />
<attribute type="ContactID" />
<element type="FirstName" />
<element type="LastName" />
</ElementType>
</Schema>
Como alternativa, en lugar de especificar el atributo content=textOnly, puede especificar la anotación sql:field en la definición element para asignar los elementos secundarios (FirstName, LastName) a los nombres de columna correspondientes, como en ejemplos alternativos los siguientes:
<element type="FirstName" sql:field="FirstName" />
<element type="LastName" sql:field="LastName" />
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 UsingSqlRelationXdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como UsingSqlRelationXdrT.xml en el mismo directorio donde guardó UsingSqlRelationXdr.xml. La consulta en la plantilla selecciona un contacto con el ContactID de 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="UsingSqlRelationXdr.xml"> /Contacts[@ContactID="1"] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (UsingSqlRelationXdr.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\UsingSqlRelationXdr.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.
Éste es el conjunto de resultados parciales:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contacts ContactID="1">
<FirstName>Gustavo</FirstName>
<LastName>Achong</LastName>
</Contacts>
</ROOT>