Utilizar sql:field (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 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). |
La anotación sql:field especifica la asignación de un elemento o atributo de un esquema anotado a una columna de una base de datos, y se puede agregar a un elemento o atributo. La anotación sql:field se omite en los elementos <AttributeType> del esquema anotado. El atributo sql:field especifica el nombre de la columna asignada en una tabla o vista.
Por ejemplo, sql:field se puede utilizar para especificar el nombre de columna cuando ese nombre no coincide con el campo del esquema especificado en XDR. El valor de sql:field debe ser un nombre de columna. No se permiten nombres de columna de cuatro partes, tales como basededatos.propietario.tabla.nombredecolumna. Esto es verdad para todas las anotaciones que toman un nombre de columna como su valor.
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:field para un <atributo> del esquema XDR
En este esquema anotado, se especifica la anotación sql:field en el elemento <attribute> del esquema. El atributo sql:field asigna el atributo Email del esquema a la columna EmailAddress de la tabla Person.Contact.
Dado que el nombre de atributo ContactID del esquema XDR es igual que la columna ContactID de la tabla Person.Contact, no se especifica sql:field. La asignación es la predeterminada.
<?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="Email" />
<attribute type="ContactID" />
<attribute type="Email" sql:field="EmailAddress" />
</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 sqlFieldXdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como sqlFieldXdrT.xml en el mismo directorio donde guardó sqlFieldXdr.xml. La consulta de la plantilla selecciona un cliente con el ContactID de 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="sqlFieldXdr.xml"> /Contacts[@ContactID="1"] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (sqlFieldXdr.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\sqlFieldXdr.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" Email="gustavo0@adventure-works.com" />
</ROOT>
En un esquema de asignación, los atributos se pueden declarar globalmente (por ejemplo, <AttributeType...>, declarado fuera del ámbito de <ElementType>) y al que, a continuación, se hace referencia en <attribute type=...>, como se muestra en este esquema.
En este esquema, el atributo LastName se declara globalmente y se le hace referencia en el ámbito de <ElementType> de Customer.
<?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">
<AttributeType name="LastName" />
<ElementType name="Contacts" sql:relation="Person.Contact" >
<AttributeType name="ContactID" />
<AttributeType name="FName" />
<AttributeType name="LName" />
<attribute type="CustomerID" />
<attribute type="FName" sql:field="FirstName" />
<attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>
B. Especificar sql:field para un <elemento> en el esquema XDR
En este esquema anotado, la anotación sql:field se especifica en <elemento> en el esquema. La anotación sql:field asigna el elemento secundario <Email> del esquema a la columna EmailAddress de la tabla Person.Contact.
Sin la anotación explícita, el elemento secundario <Email> del elemento <Contacts> del esquema no se asignará a la columna EmailAddress de la tabla Person.Contact porque la asignación predeterminada de elementos es a una relación, no a un campo (la excepción se produce cuando <ElementType> contiene un atributo textOnly ).
<?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="Email" />
<ElementType name="Contacts" sql:relation="Person.Contact" >
<AttributeType name="ContactID" />
<attribute type="ContactID" />
<element type="Email" sql:field="EmailAddress" />
</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 sqlFieldElementXdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como sqlFieldElementXdrT.xml en el mismo directorio en el que guardó sqlFieldElementXdr.xml. La consulta de la plantilla selecciona un cliente con el ContactID de 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="sqlFieldElementXdr.xml"> /Contacts[@ContactID="1"] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (sqlFieldElementXdr.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\sqlFieldElementXdr.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">
<Email>gustavo0@adventure-works.com</Email>
</Contacts>
</ROOT>
Si se especifica content="textOnly" en <ElementType> del correo electrónico y se utiliza el nombre predeterminado de la columna SQL ("EmailAddress"), la anotación sql:field no es necesaria en el elemento secundario. En este caso, el elemento secundario <EmailAddress> se asignará a la columna EmailAddress de 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="EmailAddress" content="textOnly" />
<ElementType name="Contacts" sql:relation="Person.Contact" >
<AttributeType name="ContactID" />
<attribute type="ContactID" />
<element type="EmailAddress" />
</ElementType>
</Schema>