Partilhar via


Excluir elementos de esquema do documento XML usando sql:mapped

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

Todo elemento e atributo no esquema XSD é mapeado para uma tabela/exibição e uma coluna do banco de dados devido ao mapeamento padrão. Se você quiser criar um elemento no esquema XSD que não seja mapeado para nenhuma tabela de banco de dados (exibição) ou coluna e que não apareça no XML, você poderá especificar a anotação sql:mapped .

A anotação sql:mapped é especialmente útil se o esquema não puder ser modificado ou se o esquema for usado para validar XML de outras fontes e ainda contiver dados que não estão armazenados em seu banco de dados. A anotação sql:mapped difere de sql:is-constant porque os elementos e atributos não mapeados não aparecem no documento XML.

A anotação sql:mapped usa um valor booleano (0 = false, 1 = true). Os valores aceitáveis são 0, 1, true e false.

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 a anotação sql:mapped

Suponha que você tenha um esquema XSD de alguma outra origem. Esse esquema XSD consiste em um elemento Person.Contact> com os atributos ContactID, FirstName, LastName e HomeAddress.<

Ao mapear esse esquema XSD para a tabela Person.Contact no banco de dados AdventureWorks, sql:mapped é especificado no atributo HomeAddress porque a tabela Employees não armazena os endereços residenciais dos funcionários. Como resultado, este atributo não é mapeado para o banco de dados e não é retornado no documento XML resultante quando uma consulta XPath é especificada com relação ao esquema de mapeamento.

O mapeamento padrão é executado para o restante do esquema. O <elemento Person.Contact> é mapeado para a tabela Person.Contact e todos os atributos são mapeados para as colunas com o mesmo nome 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:attribute name="HomeAddress" type="xsd:string"   
                     sql:mapped="false" />  
    </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 sql-mapped.xml.

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

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="sql-mapped.xml">  
            /Person.Contact[@ContactID < 10]  
        </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:\MyDir\sql-mapped.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:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong" />   
  <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel" />   
  <Person.Contact ContactID="3" FirstName="Kim" LastName="Abercrombie" />   
  <Person.Contact ContactID="4" FirstName="Humberto" LastName="Acevedo" />   
  <Person.Contact ContactID="5" FirstName="Pilar" LastName="Ackerman" />   
  <Person.Contact ContactID="6" FirstName="Frances" LastName="Adams" />   
  <Person.Contact ContactID="7" FirstName="Margaret" LastName="Smith" />   
  <Person.Contact ContactID="8" FirstName="Carla" LastName="Adams" />   
  <Person.Contact ContactID="9" FirstName="Jay" LastName="Adams" />   
</ROOT>  

Observe que o ContactID, FirstName e LastName estão presentes, mas HomeAddress não está porque o esquema de mapeamento especificou 0 para o atributo sql:mapped .

Confira também

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