Partilhar via


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

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

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

R. 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 de tipo simples e mapeados por padrão para 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 Usar o ADO para executar consultas SQLXML 4.0.

Este é o conjunto de resultados parcial:

<?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, são mapeados 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 Usar o ADO para executar consultas SQLXML 4.0.

Este é o conjunto de resultados parcial:

<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 é do tipo simples e, portanto, mapeia para as colunas com os mesmos nomes. A única diferença entre este 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 (9.x).

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 Usar o ADO para executar consultas SQLXML 4.0.

Este é o conjunto de resultados parcial:

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

Confira também

Considerações sobre a segurança de esquemas anotados (SQLXML 4.0)
Dados XML (SQL Server)
Suporte ao tipo de dados xml no SQLXML 4.0