Compartilhar via


Excluindo elementos de esquema do documento XML resultante usando sql:map-field (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 e que não aparece no XML. Para fazer isso, especifique a anotação sql:map-field.

A anotação sql:map-field é diferente do sql:is-constant no sentido de que os elementos e atributos não mapeados não aparecem no documento XML. sql:map-field é especialmente útil se o esquema não pode ser modificado, ou é usado para validar o XML de outras fontes mas contém dados não armazenados no banco de dados.

sql:map-field assume um valor booleano (0 = FALSE, 1 = TRUE). A anotação sql:map-field só é válida em um <atributo>, <elemento> ou <ElementTypes> com conteúdo somente de texto (content=textOnly). A anotação não é válida em um <elemento> ou <ElementTypes> que mapeia para uma tabela.

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. Especificar a anotação sql:map-field

Suponha que você tenha um esquema XDR de alguma outra origem. Esse esquema XDR consiste no elemento <Person.Contact> com ContactID, FirstName, LastName e atributos.

Ao mapear esse esquema XDR para a tabela Person.Contact no banco de dados, sql:map-field é especificado no atributo HomeAddress porque a tabela Person.Contact não armazena os endereços residenciais dos funcionários. Conseqüentemente, esse atributo não é retornado no documento XML resultante quando uma consulta XPath é especificada com base no esquema de mapeamento.

O mapeamento padrão é executado para o restante do esquema. O elemento <Person.Contact> é mapeado para a tabela Person.Contact e todos os atributos são mapeados para as colunas com o mesmo nome na tabela Person.Contact. Para obter mais informações sobre mapeamento padrão, consulte Mapeamento padrão de atributos e elementos XDR para tabelas e colunas.

<?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 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 mapField-xdr.xml.

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como mapField-xdrT.xml no mesmo diretório onde você salvou mapField-xdr.xml. A consulta no modelo seleciona o registro Person.Contact com 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>
    

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

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

A seguir está o conjunto de resultados:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
    <Person.Contact ContactID="1" FirstName="Gustavo" LastName = "Achong"/> 
</ROOT>

Observe que EmployeeID, FirstName e LastName estão presentes, mas HomeAddress não está, pois o esquema de mapeamento especificou um valor de 0 para o atributo sql:map-field.

Consulte também

Referência