Crear elementos constantes mediante sql:is-constant (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). |
Debido a la asignación predeterminada, cada elemento y atributo del esquema XSD se asigna a una tabla y columna de base de datos. En ocasiones, puede ser conveniente crear un elemento en el esquema XDR que no se asigne a ninguna tabla o columna de base de datos pero que aparezca en el documento XML. Estos elementos se denominan elementos constantes. Para crear un elemento constante, especifique la anotación sql:is-constant. sql:is-constant toma un valor booleano (0 = FALSE, 1 = TRUE).
Esta anotación se especifica en <ElementType>, que no se asigna a ninguna tabla de base de datos y que, por tanto, se convierte en un elemento constante. La anotación sql:is-constant se puede utilizar para:
Agregar un elemento de nivel superior al documento XML. XML requiere un único elemento de nivel superior (<root>) para el documento.
Crear elementos contenedores, como un elemento <Orders> que contenga todos los pedidos.
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:is-constant para agregar un elemento contenedor
En este esquema XDR anotado, <OrderList> se define como un elemento constante que contiene todos los subelementos <Orders>. La anotación sql:is-constant se especifica en el <ElementType>OrderList, que lo convierte en constante y, por tanto, no se asigna a ninguna tabla de base de datos. Aunque el elemento <OrderList> no se asigna a ninguna tabla o columna de base de datos, sigue apareciendo en el documento XML resultante como un elemento contenedor que contiene los subelementos <Orders>.
<?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="Sales.SalesOrderHeader" >
<AttributeType name="SalesOrderID" />
<attribute type="SalesOrderID" />
</ElementType>
<ElementType name="OrderList" sql:is-constant="1">
<element type="Orders">
<sql:relationship
key-relation="Sales.Customer"
foreign-relation="Sales.SalesOrderHeader"
key="CustomerID"
foreign-key="CustomerID" />
</element>
</ElementType>
<ElementType name="Sales.Customer" >
<AttributeType name="CustomerID" />
<attribute type="CustomerID" />
<element type="OrderList" />
</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 isConstant-xdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como isConstant-xdrT.xml en el mismo directorio donde guardó isConstant-xdr.xml. La consulta XPath de la plantilla selecciona todos los elementos <Sales.Customer> con un valor de atributo de CustomerID de 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" > <sql:xpath-query mapping-schema="isConstant-xdr.xml" > /Sales.Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (isConstant-xdr.xml) es una ubicación relativa con respecto al directorio donde se guarda la plantilla. También puede especificarse una ruta de acceso absoluta como, por ejemplo:
mapping-schema="C:\MyDir\isConstant-xdr.xml"
Cree y use el script de prueba de 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">
<Sales.Customer CustomerID="1">
<OrderList>
<Sales.SalesOrderHeader SalesOrderID="43860" />
<Sales.SalesOrderHeader SalesOrderID="44501" />
<Sales.SalesOrderHeader SalesOrderID="45283" />
<Sales.SalesOrderHeader SalesOrderID="46042" />
</OrderList>
</Sales.Customer>
</ROOT>