Compartilhar via


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

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

Você pode criar exibições XML de dados relacionais usando a linguagem XSD (Definição de esquema XML). Esses modos de exibição podem ser consultados usando consultas XPath (XML Path Language). Isso é semelhante à criação de modos de exibição usando instruções CREATE VIEW e, em seguida, especificando consultas SQL em relação ao modo de exibição.

Um esquema XML descreve a estrutura de um documento XML e também descreve as várias restrições nos dados no documento. Quando você especifica consultas XPath em relação ao esquema, a estrutura do documento XML retornado é determinada pelo esquema no qual 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 que são usados no esquema como propriedades do <elemento xsd:schema> .

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

<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 namespace XML Schema em http://www.w3.org/2001/XMLSchema.

Anotações ao esquema XSD

Você pode usar um esquema XSD com anotações que descrevem o mapeamento para um banco de dados, consultar o banco de dados e retornar os resultados na forma de um documento XML. As anotações são fornecidas para mapear um esquema XSD para tabelas e colunas de banco de dados. As consultas XPath podem ser especificadas em relação à exibição XML criada pelo esquema XSD para consultar o banco de dados e obter resultados como 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). O XDR anotado foi preterido 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 conseguir isso é anotar o esquema XSD. Um esquema XSD com as anotações é conhecido como um esquema de mapeamento, que fornece informações referentes a como os dados XML devem ser mapeados para o armazenamento relacional. Um esquema de mapeamento é, na verdade, 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. Como 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 indicar o namespace de anotação e para distinguir 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 a esse 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, em vez do conjunto de linhas retornado por consultas SQL.

Observação

No esquema de mapeamento, a diferenciação de maiúsculas e minúsculas para os valores relacionais especificados (como nome da tabela e nome da coluna) depende se o SQL Server estiver usando configurações de agrupamento que diferenciam maiúsculas de minúsculas. Para obter mais informações, consulte Suporte de agrupamento e unicode.

Outros recursos

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

Veja também

Considerações de segurança de esquema anotado (SQLXML 4.0)
Esquemas XDR anotados (preteridos no SQLXML 4.0)