Partilhar via


Mapeamento padrão de atributos e elementos XDR para tabelas e colunas

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

Em um esquema XDR anotado, um elemento, por padrão, é mapeado para a tabela/exibição com o mesmo nome, e um atributo é mapeado para a coluna com o mesmo nome.

Você pode mapear os elementos filho não complexos no esquema para as colunas do banco de dados. Para mapear um elemento para uma coluna do banco de dados, o atributo content é especificado para esse elemento com o valor textOnly. Se content=textOnly não for especificado no mapeamento de um elemento para uma coluna de banco de dados, a anotação sql:field deverá ser especificada explicitamente para mapear o <element> para uma coluna de banco de dados. Para obter mais informações, consulte Mapeamento explícito de atributos e elementos XDR para tabelas e colunas.

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 o mapeamento padrão

Neste exemplo, o elemento <Person.Person> é mapeado para a tabela Person.Person no banco de dados AdventureWorks2008R2, e todos os atributos são mapeados para as colunas de mesmo nome na tabela Person.Person. Nesse esquema XDR, nenhuma anotação é especificada.

<?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.Person" >
    <AttributeType name="BusinessEntityID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />

    <attribute type="BusinessEntityID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
</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 DefaultXdr.xml.

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como DefaultXdrT.xml no mesmo diretório em que você salvou DefaultXdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="DefaultXdr.xml">
            /Person.Person[@BusinessEntityID &lt; 3]
        </sql:xpath-query>
    </ROOT>
    

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

    mapping-schema="C:\MyDir\DefaultXdr.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.

A seguir está o conjunto de resultados:

<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
  <Person.Person BusinessEntityID="1" FirstName="Gustavo" LastName="Achong"/>
  <Person.Person BusinessEntityID="2" FirstName="Catherine" LastName="Abel">
</ROOT>

B. Mapeie um <elemento> XML para uma coluna de banco de dados

Por padrão, um elemento XML é mapeado para uma tabela de banco de dados e um atributo para uma coluna de banco de dados. Para mapear um elemento para uma coluna de banco de dados, o atributo content é especificado com um valor de textOnly.

Esse esquema XDR consiste no mesmo elemento <Person.Person> usado no exemplo anterior, mas os campos SQL (BusinessEntityID, FirstName, LastName) são mapeados para elementos filho, em vez de atributos.

<?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="BusinessEntityID" content="textOnly" />
<ElementType name="FirstName" content="textOnly" />
<ElementType name="LastName"  content="textOnly" />

<ElementType name="Person.Person" >
    <element type="BusinessEntityID" />
    <element type="FirstName" />
    <element type="LastName"  />
</ElementType>
</Schema>

Por padrão, o elemento **<Person.Person>**no esquema XDR é mapeado para a tabela Person.Person no banco de dados AdventureWorks2008R2. O atributo content é especificado nos elementos filho <FirstName> e <LastName>. Portanto, esses elementos filho serão mapeados para as mesmas colunas de nome na tabela Person.Person.

ObservaçãoObservação

Não há suporte para conteúdo misto (elementos com texto e elementos filho).

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 ElementXdr.xml.

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como ElementXdrT.xml no mesmo diretório em que você salvou ElementXdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="ElementXdr.xml">
            /Person.Person[BusinessEntityID &lt; 3]
        </sql:xpath-query>
    </ROOT>
    

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

    mapping-schema="C:\MyDir\ElementXdr.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">
  <Person.Person>
    <BusinessEntityID>1</BusinessEntityID> 
    <FirstName>Gustavo</FirstName> 
    <LastName>Achong</LastName> 
  </Person.Person>
  <Person.Person>
    <BusinessEntityID>2</BusinessEntityID> 
    <FirstName>Catherine</FirstName> 
    <LastName>Abel</LastName> 
  </Person.Person>
</ROOT>

Consulte também

Referência