Compartilhar via


Mapeamento padrão de atributos e elementos XSD para tabelas e colunas (SQLXML 4.0)

Por padrão, um elemento de tipo complexo em um esquema XSD anotado é mapeado para a tabela (exibição) com o mesmo nome no banco de dados especificado, e um elemento ou atributo de tipo simples é mapeado para a coluna com o mesmo nome na 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. Especificando o mapeamento padrão

Neste exemplo, nenhuma anotação é especificada no esquema XSD. O elemento <Person.Contact> é de tipo complexo e, portanto, mapeia por padrão para a tabela Person.Contact no banco de dados AdventureWorks. Todos os atributos (ContactID, FirstName, LastName) do elemento <Person.Contact> são do tipo simples e são mapeados por padrão para as colunas com os mesmos nomes na tabela Person.Contact.

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

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como MySchemaT.xml no mesmo diretório em que você salvou MySchema.xml.

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

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

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

Este é o conjunto parcial dos resultados:

<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
  <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/>
  <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel"/>
   ...
</ROOT>

B. Mapeando um elemento XML para uma coluna de banco de dados

Neste exemplo, o mapeamento padrão acontece também porque nenhuma anotação é usada. O elemento <Person.Contact> é de tipo complexo e é mapeado para a tabela com o mesmo nome no banco de dados. Os elementos <FirstName> e <LastName> e o atributo EmployeeID são de tipo simples e, portanto, mapeiam para as colunas com os mesmos nomes. A única diferença entre isto e o exemplo anterior é que os elementos são usados para mapear os campos FirstName e LastName.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person.Contact">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="FirstName" type="xsd:string" /> 
        <xsd:element name="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 MySchemaElements.xml.

  2. Crie o modelo a seguir (MySchemaElementsT.xml) e salve-o no mesmo diretório usado na etapa anterior.

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

    O caminho de diretório especificado para o esquema de mapeamento é relativo ao diretório onde o modelo está salvo. Também é possível especificar um caminho absoluto, por exemplo:

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

Este é o conjunto parcial dos resultados:

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

C. Mapeando um elemento XML para uma coluna de tipo de dados XML

Neste exemplo, o mapeamento padrão acontece também porque nenhuma anotação é usada. O elemento <Production.ProductModel> é de tipo complexo e é mapeado para a tabela com o mesmo nome no banco de dados. O atributo ProductModelID é de tipo simples e, portanto, mapeie para as colunas com os mesmos nomes. A única diferença entre isto e os exemplos anteriores é que o elemento <Instructions> está mapeando para uma coluna que usa o tipo de dados xml usando o tipo xsd:anyType.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Production.ProductModel">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Instructions" type="xsd:anyType" /> 
      </xsd:sequence>
      <xsd:attribute name="ProductModelID" type="xsd:integer" /> 
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

O tipo de dados xml foi introduzido no SQL Server 2005.

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 MySchemaXmlAnyElements.xml.

  2. Crie o modelo a seguir (MySchemaXmlAnyElementsT.xml) e salve-o no mesmo diretório usado na etapa anterior.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="MySchemaXmlAnyElements.xml">
            /Production.ProductModel[@ProductModelID=7]
        </sql:xpath-query>
    </ROOT>
    

    O caminho de diretório especificado para o esquema de mapeamento é relativo ao diretório onde o modelo está salvo. Também é possível especificar um caminho absoluto, por exemplo:

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

Este é o conjunto parcial dos resultados:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Production.ProductModel ProductModelID="7">
    <Instructions>
      <root xmlns="http:
//schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstru
ctions">
...
      </root>
    <Instructions>
  </Production.ProductModel>
</ROOT>