Partilhar via


Excluindo elementos de esquema do documento XML usando sql:mappped

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

Cada elemento e atributo no esquema XSD é mapeado para uma tabela/vista e coluna da base de dados devido ao mapeamento padrão. Se quiser criar um elemento no esquema XSD que não corresponde a nenhuma tabela de base de dados (vista) ou coluna e que não apareça no XML, pode 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, no entanto, contiver dados que não estão armazenados na sua base de dados. A anotação sql:mapped difere de sql:is-constant no sentido em que os elementos e atributos não mapeados não aparecem no documento XML.

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

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

Assuma que tens um esquema XSD de outra fonte. Este esquema XSD consiste num <elemento Person.Contact> com os atributos ContactID, FirstName, Apelido e HomeAddress .

Ao mapear este esquema XSD para a tabela Person.Contact na base de dados AdventureWorks, sql:mapped é especificado no atributo HomeAddress porque a tabela Employees não armazena os endereços residenciais dos colaboradores. Como resultado, este atributo não é mapeado para a base de dados e não é devolvido no documento XML resultante quando uma consulta XPath é especificada contra o esquema de mapeamento.

O mapeamento padrão ocorre para o resto do esquema. O <elemento Pessoa.Contacto> corresponde à tabela Pessoa.Contacto, e todos os atributos correspondem às colunas com o mesmo nome na tabela Pessoa.Contacto.

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

  2. Copie o modelo seguinte e cole-o num ficheiro de texto. Guarda o ficheiro como sql-mappedT.xml no mesmo diretório onde guardaste 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 é guardado. Um caminho absoluto também pode ser especificado, 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 mais informações, consulte Utilização de 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>  

Note que o ContactID, Primeiro Nome e Apelido estão presentes, mas HomeAddress não está porque o esquema de mapeamento especificava 0 para o atributo sql:mapped .

Ver também

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