Excluir elementos de esquema de documento XML resultante mediante sql:map-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 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). |
Debido a la asignación predeterminada, cada elemento y atributo del esquema XDR se asigna a una tabla y columna de base de datos. A veces, puede desear crear un elemento en el esquema XDR que no se asigna a ninguna tabla de base de datos o columna y no aparece en el XML. Esto se hace especificando la anotación sql:map-field.
La anotación sql:map-field difiere de sql:is-constant en que los atributos y elementos no asignados no aparecen en el documento XML. sql:map-field resulta especialmente útil si el esquema no se puede modificar o se usa para validar XML de otros orígenes y aun así contiene datos que no están almacenados en la base de datos.
sql:map-field toma un valor booleano (0 = FALSE, 1 = TRUE). La anotación sql:map-field sólo es válida en un <attribute>, <element> o <ElementTypes> con contenido de sólo texto (content=textOnly). La anotación no es válida en un <element> or <ElementTypes> que asigna a una tabla.
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 anotación sql:map-field
Suponga que tiene un esquema XDR de algún otro origen. Este esquema XDR consta del elemento <Person.Contact> con ContactID, FirstName, LastName, y los atributos.
Para asignar este esquema XDR a la tabla Person.Contact de la base de datos, se especifica sql:map-field en el atributo HomeAddress porque la tabla Person.Contact no almacena direcciones particulares de los empleados. Como resultado, no se devuelve este atributo en el documento XML resultante cuando se especifica una consulta XPath con el esquema de asignación.
Para el resto del esquema se produce una asignación predeterminada. El elemento <Person.Contact> se asigna a la tabla Person.Contact y todos los atributos se asignan a las columnas del mismo nombre de la tabla Person.Contact. Para obtener más información acerca de la asignación predeterminada, vea Asignación predeterminada de elementos y atributos XDR a tablas y columnas.
<?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" />
<AttributeType name="HomeAddress" />
<attribute type="ContactID" />
<attribute type="FirstName" />
<attribute type="LastName" />
<attribute type="HomeAddress" sql:map-field="0" />
</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 mapField-xdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como mapField-xdrT.xml en el mismo directorio donde guardó mapField-xdr.xml. La consulta de la plantilla selecciona el registro Person.Contact con ContactID igual a 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="mapField-xdr.xml"> /Person.Contact[@ContactID=1] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (mapField-xdr.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\mapField-xdr.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 el siguiente:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Contact ContactID="1" FirstName="Gustavo" LastName = "Achong"/>
</ROOT>
Tenga en cuenta que el EmployeeID, FirstName y LastName están presentes, pero HomeAddress no lo está porque el esquema de asignación especificó un valor de 0 para su atributo sql:map-field.