Excluindo elementos de esquema do documento XML resultante usando sql:map-field (esquema XDR)
Importante |
---|
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.Person> com BusinessEntityID, FirstName, LastName e atributos.
Ao mapear esse esquema XDR para a tabela Person.Person no banco de dados, sql:map-field é especificado no atributo HomeAddress porque a tabela Person.Person não armazena os endereços residenciais dos funcionários. Consequentemente, 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.Person> é mapeado para a tabela Person.Person e todos os atributos são mapeados para as colunas com o mesmo nome na tabela Person.Person. 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.Person" >
<AttributeType name="BusinessEntityID" />
<AttributeType name="FirstName" />
<AttributeType name="LastName" />
<AttributeType name="HomeAddress" />
<attribute type="BusinessEntityID" />
<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
Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como mapField-xdr.xml.
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. Person com BusinessEntityID igual a 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="mapField-xdr.xml"> /Person.Person[@BusinessEntityID=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"
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.Person BusinessEntityID="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.