Partilhar via


Introdução aos Esquemas XSD Anotados (SQLXML 4.0)

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

Pode criar vistas XML de dados relacionais utilizando a linguagem XML Schema Definition (XSD). Estas vistas podem então ser consultadas utilizando consultas XML Path Language (XPath). Isto é semelhante a criar vistas usando instruções CREATE VIEW e depois especificar consultas SQL contra a vista.

Um esquema XML descreve a estrutura de um documento XML e também descreve as várias restrições sobre os dados no documento. Quando se especificam consultas XPath contra o esquema, a estrutura do documento XML devolvido é determinada pelo esquema contra o qual a consulta XPath é executada.

Num esquema XSD, o <elemento xsd:schema> envolve todo o esquema; todas as declarações dos elementos devem estar contidas no <elemento xsd:schema> . Pode descrever atributos que definem o namespace onde o esquema reside e os namespaces usados no esquema 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 de espaço de nomes XML Schema em http://www.w3.org/2001/XMLSchema.

Anotações ao Esquema XSD

Pode usar um esquema XSD com anotações que descrevem o mapeamento para uma base de dados, consultar a base de dados e devolver os resultados sob a forma de um documento XML. São fornecidas anotações para mapear um esquema XSD para tabelas e colunas da base de dados. As consultas XPath podem ser especificadas contra a vista XML criada pelo esquema XSD para consultar a base de dados e obter resultados como XML.

Observação

No Microsoft SQLXML 4.0, a linguagem de esquema XSD suporta as anotações introduzidas com a linguagem de esquema anotada XML-Data Reduced (XDR) no SQL Server 2000 (8.x). O XDR anotado está obsoleto no SQLXML 4.0.

No contexto da base de dados relacional, é útil mapear o esquema XSD arbitrário para um armazenamento relacional. Uma forma de conseguir isto é anotar o esquema XSD. Um esquema XSD com as anotações é referido como esquema de mapeamento, que fornece informação sobre como os dados XML devem ser mapeados para o armazenamento relacional. Um esquema de mapeamento é, na prática, uma vista XML dos dados relacionais. Estes mapeamentos podem ser usados para recuperar dados relacionais como um documento XML.

Espaço de nomes para anotações

Num esquema XSD, as anotações são especificadas usando o namespace urn:schemas-microsoft-com:mapping-schema. Como mostrado no exemplo seguinte, a forma mais fácil de especificar o namespace é especificá-lo na <etiqueta 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 utilizado é arbitrário. Nesta documentação, o prefixo sql é usado para indicar o namespace de anotações e para distinguir anotações neste namespace das de outros namespaces.

Exemplo de um esquema XSD anotado

No exemplo seguinte, o esquema XSD consiste num <elemento Person.Contact> . O <elemento Empregado> tem um atributo ContactID e <elementos filhos Primeiro Nome> e <Apelido> :

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

São adicionadas anotações a este esquema XSD para mapear os seus elementos e atributos para as tabelas e colunas da base 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 na base de dados de exemplo AdventureWorks2025 usando a anotação sql:relation . Os atributos ConID, FName e LName são mapeados para as colunas ContactID, FirstName e CurrentName na tabela Person.Contact usando as anotações sql:field .

Este esquema XSD anotado fornece a vista XML dos dados relacionais. Esta vista XML pode ser consultada usando a linguagem XPath. Uma consulta XPath devolve um documento XML como resultado, em vez do conjunto de linhas que é devolvido pelas consultas SQL.

Observação

No esquema de mapeamento, a sensibilidade a maiúsculas minúsculas para os valores relacionais especificados (como nome da tabela e nome da coluna) depende se o SQL Server está a usar definições de colação sensíveis a maiúsculas e minúsculas. Para obter mais informações, consulte Collation and Unicode Support.

Outros recursos

Pode encontrar mais informações sobre XML Schema Definition Language (XSD), XML Path Language language (XPath) e Extensible Stylesheet Language Transformations (XSLT) nos seguintes sites:

Ver também

Considerações de Segurança de Esquemas Anotados (SQLXML 4.0)
Esquemas XDR Anotados (Descontinuados em SQLXML 4.0)