Partilhar via


Mapeamento por Defeito de Elementos e Atributos XSD para Tabelas e Colunas (SQLXML 4.0)

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Por defeito, um elemento de tipo complexo num esquema XSD anotado mapeia para a tabela (vista) com o mesmo nome na base de dados especificada, e um elemento ou atributo de tipo simples mapeia para a coluna com o mesmo nome na tabela.

Examples

Para criar exemplos funcionais usando os seguintes exemplos, deve cumprir certos requisitos. Para mais informações, consulte Requisitos para Executar Exemplos de SQLXML.

A. Especificação do mapeamento por defeito

Neste exemplo, não são especificadas anotações no esquema XSD. O <elemento Pessoa.Contacto> é de tipo complexo e, por isso, corresponde por defeito à tabela Pessoa.Contacto na base de dados AdventureWorks. Todos os atributos (ContactID, FirstName, Apelido) do <elemento Person.Contact> são de tipo simples e correspondem por defeito a 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 contra o esquema
  1. Copie o código do esquema acima e cole num ficheiro de texto. Guarde o ficheiro como MySchema.xml.

  2. Copie o modelo seguinte e cole-o num ficheiro de texto. Guarda o ficheiro como MySchemaT.xml no mesmo diretório onde guardaste 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 é guardado. Um caminho absoluto também pode ser especificado, 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 SQLXML 4.0.

Aqui está o conjunto de resultados parciais:

<?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. Mapear um elemento XML para uma coluna de base de dados

Neste exemplo, o mapeamento por defeito também ocorre porque não são usadas anotações. O <elemento Person.Contact> é de tipo complexo e corresponde à tabela com o mesmo nome na base de dados. Os elementos <Primeiro Nome> e <Apelido> e o atributo EmployeeID são de tipo simples e, por isso, correspondem às colunas com os mesmos nomes. A única diferença entre este e o exemplo anterior é que elementos são usados para mapear os campos Primeiro Nome e Apelido.

<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 contra o esquema
  1. Copie o código do esquema acima e cole num ficheiro de texto. Guarde o ficheiro como MySchemaElements.xml.

  2. Crie o modelo seguinte (MySchemaElementsT.xml) e guarde-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 do diretório especificado para o esquema de mapeamento é relativo ao diretório onde o modelo é guardado. Um caminho absoluto também pode ser especificado, 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 SQLXML 4.0.

Aqui está o conjunto de resultados parciais:

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

C. Mapear um elemento XML para uma coluna de tipo de dado XML

Neste exemplo, o mapeamento por defeito também ocorre porque não são usadas anotações. O <elemento Production.ProductModel> é de tipo complexo e corresponde à tabela com o mesmo nome na base de dados. O atributo ProductModelID é de tipo simples e, por isso, corresponde às colunas com os mesmos nomes. A única diferença entre este e os exemplos anteriores é que o <elemento Instructions> está a mapear 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 (9.x).

Para testar uma consulta XPath de exemplo contra o esquema
  1. Copie o código do esquema acima e cole num ficheiro de texto. Guarde o ficheiro como MySchemaXmlAnyElements.xml.

  2. Crie o modelo seguinte (MySchemaXmlAnyElementsT.xml) e guarde-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 do diretório especificado para o esquema de mapeamento é relativo ao diretório onde o modelo é guardado. Um caminho absoluto também pode ser especificado, 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 SQLXML 4.0.

Aqui está o conjunto de resultados parciais:

<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>  

Ver também

Considerações de Segurança de Esquemas Anotados (SQLXML 4.0)
Dados XML (SQL Server)
Suporte de Tipos de Dados XML em SQLXML 4.0