Compartilhar via


Mapeamentos XSD personalizados para tabelas/colunas (SQLXML)

Aplica-se a: SQL Server Banco de Dados SQL do Azure

Ao usar um esquema XSD para fornecer uma exibição XML do banco de dados relacional, os elementos e atributos do esquema devem ser mapeados em tabelas e colunas do banco de dados. As linhas na tabela/exibição do banco de dados serão mapeadas em elementos no documento XML. Os valores de coluna no banco de dados são mapeados em atributos ou elementos.

Quando são especificadas consultas XPath com relação ao esquema XSD anotado, os dados dos elementos e atributos no esquema são recuperados das tabelas e colunas nas quais eles são mapeados. Para obter um único valor do banco de dados, o mapeamento especificado no esquema XSD deve ter especificação de campo e relação. Se o nome de um elemento/atributo não for o mesmo nome que o nome da tabela/visualização ou coluna para a qual ele é mapeado, as anotações sql:relation e sql:field serão usadas para especificar o mapeamento entre um elemento ou atributo em um documento XML e a tabela (visualização) ou coluna em um banco de dados.

sql-relation

A anotação sql:relation é adicionada para mapear um nó XML no esquema XSD para uma tabela de banco de dados. O nome de uma tabela (exibição) é especificado como o valor da anotação sql:relation .

Quando sql:relation é especificado em um elemento, o escopo dessa anotação se aplica a todos os atributos e elementos filho descritos na definição de tipo complexo desse elemento, fornecendo, portanto, um atalho na gravação de anotações.

A anotação sql:relation também é útil quando os identificadores válidos no Microsoft SQL Server não são válidos em XML. Por exemplo, "Detalhes do Pedido" é um nome de tabela válido no SQL Server, mas não em XML. Nesses casos, a anotação sql:relation pode ser usada para especificar o mapeamento, por exemplo:

<xsd:element name="OD" sql:relation="[Order Details]">  

sql-field

A anotação sql-field mapeia um elemento ou atributo para uma coluna de banco de dados. A anotação sql:field é adicionada para mapear um nó XML no esquema para uma coluna de banco de dados. Não é possível especificar sql:field em um elemento de conteúdo vazio.

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 de SQLXML.

R. Especificando as anotações sql:relation e sql:field

Neste exemplo, o esquema XSD consiste em um elemento Contact> de tipo complexo com< elementos filho FName> e <LName> e o atributo ContactID.<

A anotação sql:relation mapeia o <elemento Contact> para a tabela Person.Contact no banco de dados AdventureWorks. A anotação sql:field mapeia o< elemento FName> para a coluna FirstName e o< elemento LName> para a coluna LastName.

Nenhuma anotação é especificada para o atributo ContactID . Isso resulta em um mapeamento padrão do atributo na coluna com o mesmo nome.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Contact" sql:relation="Person.Contact" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="FName"  
                     sql:field="FirstName"   
                     type="xsd:string" />   
        <xsd:element name="LName"    
                     sql:field="LastName"    
                     type="xsd:string" />  
     </xsd:sequence>  
        <xsd:attribute name="ContactID"   
                       type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd: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 MySchema-annotated.xml.

  2. Copie o seguinte modelo abaixo e cole-o em um arquivo de texto. Salve o arquivo como MySchema-annotatedT.xml no mesmo diretório em que você salvou MySchema-annotated.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="MySchema-annotated.xml">  
        /Contact  
      </sql:xpath-query>  
    </ROOT>  
    

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

    mapping-schema="C:\SqlXmlTest\MySchema-annotated.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 SQLXML.

Este é o conjunto de resultados parcial:

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