Compartilhar via


Introdução a esquemas XSD anotados (SQLXML 4.0)

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

É possível criar exibições XML de dados relacionais usando a linguagem XSD. Dessa forma, essas exibições podem ser consultadas por meio de consultas em linguagem XPath. Isso é semelhante à criação de exibições usando instruções CREATE VIEW e especificando consultas SQL com base na exibição.

Um esquema XML descreve a estrutura de um documento XML, além das várias restrições referentes aos dados do documento. Quando você especifica as consultas XPath com base no esquema, a estrutura do documento XML retornado é determinada pelo esquema que serve de base para a consulta XPath executada.

Em um esquema XSD, o elemento xsd:schema> inclui todo o esquema; todas as declarações de elemento devem estar contidas no< elemento xsd:schema>.< Você pode descrever atributos que definem o namespace no qual o esquema reside e os namespaces usados no schema como propriedades do <elemento xsd:schema> .

Um esquema XSD válido deve conter o <elemento xsd:schema> definido da seguinte forma:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
<!-- additional schema definitions here -->  
</xsd:schema>  

O <elemento xsd:schema> é derivado da especificação do namespace do Esquema XML em http://www.w3.org/2001/XMLSchema.

Anotações para o esquema XSD

É possível usar um esquema XSD com anotações que descrevam o mapeamento para um banco de dados, consultem o banco de dados e retornem os resultados na forma de um documento XML. São fornecidas anotações para mapear um esquema XSD para tabelas e colunas de banco de dados. As consultas XPath podem ser especificadas com base na exibição XML criada pelo esquema XSD para consultar o banco de dados e obter os resultados como um XML.

Observação

No Microsoft SQLXML 4.0, a linguagem de esquema XSD oferece suporte às anotações introduzidas com a linguagem de esquema XDR (XML-Data Reduced) anotada no SQL Server 2000 (8.x). A XDR anotada está preterida no SQLXML 4.0.

No contexto do banco de dados relacional, é útil mapear o esquema XSD arbitrário para um armazenamento relacional. Uma maneira de fazer isso é anotar o esquema XSD. Um esquema XSD com as anotações é chamado de esquema de mapeamento, que fornece informações relativas a como os dados XML devem ser mapeados para o repositório relacional. Um esquema de mapeamento é, com efeito, uma exibição XML dos dados relacionais. Esses mapeamentos podem ser usados para recuperar dados relacionais como um documento XML.

Namespace para anotações

Em um esquema XSD, as anotações são especificadas usando o namespace urn:schemas-microsoft-com:mapping-schema. Conforme mostrado no exemplo a seguir, a maneira mais fácil de especificar o namespace é especificá-lo na <marca xsd:schema> .

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
...  
</xsd:schema>  

O prefixo de namespace usado é arbitrário. Nesta documentação, o prefixo sql é usado para denotar o namespace de anotação e para distinguir as anotações nesse namespace daquelas em outros namespaces.

Exemplo de um esquema XSD anotado

No exemplo a seguir, o esquema XSD consiste em um elemento Person.Contact>.< O elemento Employee> tem um atributo ContactID e< elementos filho FirstName> e <LastName>:<

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
  <xsd:element name="Contact" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="FName"    
                     type="xsd:string" />   
        <xsd:element name="LName"  
                     type="xsd:string" />  
     </xsd:sequence>  
        <xsd:attribute name="ConID" type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  

As anotações são adicionadas ao esquema XSD para mapear seus elementos e atributos para as tabelas e colunas do banco de dados:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Contact" sql:relation="Person.Contact" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="FName"  
                     sql:field="FirstName"   
                     type="xsd:string" />   
        <xsd:element name="LName"    
                     sql:field="LastName"    
                     type="xsd:string" />  
     </xsd:sequence>  
        <xsd:attribute name="ConID"   
                       sql:field="ContactID"   
                       type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  

No esquema de mapeamento, o <elemento Contact> é mapeado para a tabela Person.Contact no banco de dados de exemplo AdventureWorks2022 usando a anotação sql:relation . Os atributos ConID, FName e LName são mapeados para as colunas ContactID, FirstName e LastName na tabela Person.Contact usando as anotações sql:field .

Esse esquema XSD anotado fornece a exibição XML dos dados relacionais. Essa exibição XML pode ser consultada usando a linguagem XPath. Uma consulta XPath retorna um documento XML como resultado, e não o conjunto de linhas retornado pelas consultas SQL.

Observação

No esquema de mapeamento, a diferenciação de maiúsculas e minúsculas nos valores relacionais especificados (como, por exemplo, o nome da tabela e o nome da coluna) depende do uso das configurações de ordenação de maiúsculas e minúsculas pelo SQL Server. Para obter mais informações, consulte Suporte de agrupamento e unicode.

Outros recursos

Você pode encontrar mais informações sobre as linguagens XSD (XML Schema Definition), XPath (XML Path) e XSLT (Linguagem XSL Transformations) nos seguintes sites:

Confira também

Considerações sobre a segurança de esquemas anotados (SQLXML 4.0)
Esquemas XDR anotados (Preteridos no SQLXML 4.0)