Partilhar via


Criando elementos constantes usando sql:is-constant (Esquema XDR)

Observação importanteImportante

Este tópico está incluso como referência para aplicativos herdados. Não será feito nenhum trabalho de desenvolvimento futuro nesse recurso. Evite usá-lo em novos trabalhos de desenvolvimento. Em vez disso, use esquemas XSD anotados para criar exibições XML. Para obter mais informações, consulte Introdução a esquemas XSD anotados (SQLXML 4.0). Você pode converter esquemas XDR anotados existentes em esquemas XSD. Para obter mais informações, consulte Convertendo esquemas XDR anotados a esquemas XSD equivalentes (SQLXML 4.0).

Devido ao mapeamento padrão, cada elemento e atributo no esquema XDR é mapeado para uma coluna e tabela do banco de dados. Às vezes, você pode desejar criar um elemento no esquema XDR que não é mapeado para nenhuma tabela ou coluna do banco de dados mas que ainda aparece no documento XML. Eles são chamados de elementos constantes. Para criar um elemento constante, especifique a anotação sql:is-constant. sql:is-constant leva um valor Booleano (0 = FALSE, 1 = TRUE).

Essa anotação é especificada no <ElementType>, que não mapeia para nenhuma tabela do banco de dados, fazendo, portanto, um elemento constante. A anotação sql:is-constant pode ser usada para:

  • Adicionar um elemento de nível superior ao documento XML. XML requer um único elemento de nível superior (elemento <root>) para o documento.

  • Criar elementos de contêiner, como um elemento <Orders> que envolva todos os pedidos.

Exemplos

Para criar exemplos de funcionamento usando os exemplos a seguir, é necessário atender a determinados requisitos. Para obter mais informações, consulte Requisitos para executar exemplos do SQLXML.

A. Especifique sql:is-constant para adicionar um elemento do contêiner.

Nesse esquema XDR anotado, <OrderList> é definido como um elemento constante contendo todos os sub-elementos <Orders>. A anotação sql:is-constant é especificada em OrderList<ElementType>, tornando-o uma constante e, portanto, não mapeando para as tabelas do banco de dados. Embora o elemento <OrderList> não mapeie para nenhuma tabela/coluna do banco de dados, ainda aparece no XML resultante como um elemento do contêiner contendo sub-elementos de <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 testar uma consulta XPath de exemplo com relação ao esquema

  1. Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como isConstant-xdr.xml.

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como isConstant-xdrT.xml no mesmo diretório onde você salvou isConstant-xdr.xml. A consulta XPath no modelo seleciona todos os elementos <Sales.Customer> com um valor de atributo 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>
    

    O caminho de diretório especificado para o esquema de mapeamento (isConstant-xdr.xml) é relativo ao diretório onde o modelo está salvo. Também é possível especificar um caminho absoluto, por exemplo:

    mapping-schema="C:\MyDir\isConstant-xdr.xml"
    
  3. Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.

    Para obter mais informações, consulte Usando o ADO para executar consultas do SQLXML 4.0.

Este é o conjunto de resultados:

<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>

Consulte também

Referência