Mapeamento padrão de atributos e elementos XDR para tabelas e colunas
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). |
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
Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como DefaultXdr.xml.
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 < 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"
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çã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
Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como ElementXdr.xml.
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 < 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"
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>