Partilhar via


Mapeamento explícito de atributos e elementos XSD em tabelas e colunas (SQLXML 4.0)

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 igual ao nome na tabela/exibição ou coluna na qual ele é mapeado, as anotações sql:relation e sql:field são usadas para especificar o mapeamento entre um elemento ou atributo em um documento XML e a tabela (exibição) ou coluna em um banco de dados.

sql-relation

A anotação sql:relation é adicionada para mapear um nó XML do esquema XSD em uma tabela do 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 que são descritos na definição de tipo complexo desse elemento, fornecendo assim um atalho ao escrever anotações.

A anotação sql:relation também é útil quando identificadores que são válido no MicrosoftSQL Server não são válidos no XML. Por exemplo, "Pedido de Vendas" é um nome de tabela válido no SQL Server, mas não no 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 em uma coluna do banco de dados. A anotação sql:field é adicionada para mapear um nó XML do esquema em uma coluna do banco de dados. Não é possível especificar sql:field em um elemento com 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 do SQLXML.

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

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

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

Nenhuma anotação é especificada para o atributo ContactID. Isto 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 modelo a seguir 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 parcial dos resultados:

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