Partilhar via


Introdução aos esquemas XDR anotados (substituídos no SQLXML 4.0)

Observação importanteImportante

Este tópico está incluso como referência para aplicativos herdados. Não será feito nenhum trabalho de desenvolvimento futuro nesse recurso. Evite usá-lo em novos trabalhos de desenvolvimento. Em vez disso, use esquemas XSD anotados para criar exibições XML. Para obter mais informações, consulte Introdução a esquemas XSD anotados (SQLXML 4.0). Você pode converter esquemas XDR anotados existentes em esquemas XSD. Para obter mais informações, consulte Convertendo esquemas XDR anotados a esquemas XSD equivalentes (SQLXML 4.0).

Você pode criar exibições XML de dados relacionais usando esquemas XDR (XML-Data Reduced). Essas exibições podem ser examinadas usando consultas XPath. Isso é semelhante à criação de uma exibição que usa instruções CREATE VIEW e à especificação de consultas SQL com base na exibição.

Um esquema XML descreve a estrutura de um documento XML e também várias restrições nos 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.

No Microsoft SQL Server 2000, a linguagem XML-Data Reduced (XDR) foi introduzida primeiramente para criar esquemas XML. Nessa época, o XDR era flexível e superou algumas das limitações das DTDs (definições de tipo de documento), que também podem ser usadas para descrever a estrutura de documento XML. Diferentemente das DTDs, os esquemas XDR descrevem a estrutura do documento usando a mesma sintaxe do documento XML. Além disso, em uma DTD, todo o conteúdo de dados consiste em dados de caractere. Os esquemas da linguagem XDR permitem especificar o tipo de dados de um elemento ou atributo.

Em um esquema XDR, o elemento <Schema> abrange o esquema inteiro. Como propriedades do elemento <Schema>, você pode descrever atributos que definem o nome do esquema e os namespaces nos quais o esquema reside. Na linguagem XDR, todas as declarações de elemento precisam estar contidas no elemento <Schema>.

O esquema XDR mínimo é:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data">
   ...
</Schema>

O elemento <Schema> é derivado do namespace xml-data (urn:schemas-microsoft-com:xml-data).

ObservaçãoObservação

Esta documentação pressupõe que você está familiarizado com a linguagem XML-Data.

Anotações para o esquema XDR

Você pode usar um esquema XDR com anotações que descrevem o mapeamento para o banco de dados para consultar esse banco de dados e retornar os resultados na forma de um documento XML. O SQL Server 2000 introduziu primeiro inúmeras anotações que você poderia usar para mapear o esquema XDR para tabelas e colunas de banco de dados SQL. As consultas XPath podem ser especificadas com base na exibição XML criada pelo esquema XDR para consultar o banco de dados e obter os resultados como um XML.

Essa é uma alternativa ao processo mais complexo de escrever uma consulta SQL que usa o modo FOR XML EXPLICIT para descrever a estrutura do documento XML como parte da consulta. Entretanto, para superar a maioria das limitações das consultas XPath com base nos esquemas de mapeamento, use consultas SQL com o modo FOR XML EXPLICIT para retornar os resultados na forma de um documento XML.

Se você tiver esquemas XDR públicos (como alguns esquemas do Microsoft BizTalk), poderá executar qualquer uma das tarefas a seguir:

  • Escreva a consulta do modo FOR XML EXPLICIT para que os dados gerados sejam válidos com base no esquema XDR público; entretanto, escrever consultas de FOR XML EXPLICIT pode ser complicado.

  • Faça uma cópia particular do esquema XDR público. Adicione anotações a essa cópia particular, gerando assim um esquema de mapeamento. Você pode especificar consultas XPath com base no esquema de mapeamento. Consequentemente, o que a consulta gerar serão os dados no namespace do esquema público. Criar esquemas anotados e especificar consultas XPath com base neles é um processo bem mais simples do que escrever as complexas consultas de FOR XML EXPLICIT. A ilustração mostra o processo.

Usando uma cópia de um esquema para fazer anotações.

Esquema de mapeamento

No contexto do banco de dados relacional, é útil mapear o esquema XDR arbitrário para um armazenamento relacional. Uma maneira de fazer isso é anotar o esquema XDR. Um esquema XDR com as anotações é mencionado como mapping schema, que fornece informações pertinentes a como os dados XML deverão ser mapeados para o armazenamento 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.

O SQL Server 2000 introduziu inúmeras anotações que podem ser usadas no esquema XDR para mapear os elementos e atributos para as tabelas e colunas de banco de dados. Você pode especificar consultas com base nos esquemas de mapeamento (exibições XML) que usam XPath (XML Path). O esquema de mapeamento descreve a estrutura de documento resultante.

Namespace para anotações

Em um esquema XDR, as anotações são especificadas usando este namespace: urn:schemas-microsoft-com:xml-sql.

O exemplo a seguir mostra que o modo mais fácil de especificar o namespace é especificá-lo na marca <Schema>. As anotações precisam ser qualificadas para o namespace urn:schemas-microsoft-com:xml-sql.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql"
               >
    ...........
</Schema>

O prefixo de namespace utilizado é arbitrário. Nesta documentação, o prefixo sql é usado para denotar o namespace da anotação e diferenciar as anotações desse namespace daquelas de outros namespaces.

Namespace para tipos de dados

Os esquemas XDR permitem especificar o tipo de dados de um elemento ou atributo. Os tipos de dados são especificados usando este namespace: urn:schemas-microsoft-com:datatypes.

Este é o esquema XDR mínimo com as declarações de namespace:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql"
        xmlns:dt="urn:schemas-microsoft-com:datatypes">
   ...
</Schema>

O prefixo de namespace utilizado é arbitrário. Nesta documentação, o prefixo dt é usado para denotar o namespace do tipo de dados e diferenciar as anotações desse namespace daquelas de outros namespaces.

O elemento <Schema> é derivado do namespace xml-data: urn:schemas-microsoft-com:xml-data.

Exemplo de um esquema XDR

Este exemplo mostra como as anotações são adicionadas ao esquema XDR. Este esquema XDR consiste em um elemento <Contacts> e os atributos CID, FName e LName.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Contacts" >
    <AttributeType name="CID" />
    <AttributeType name="FName" />
    <AttributeType name="LName" />

    <attribute type="CID" />
    <attribute type="FName" />
    <attribute type="LName" />
</ElementType>
</Schema>

Agora, as anotações são adicionadas a esse esquema XDR para mapear seus elementos e atributos para os nomes das tabelas e colunas SQL no banco de dados de exemplo AdventureWorks2008R2. Este é o esquema XDR anotado:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Contacts" sql:relation="Person.Person" >
    <AttributeType name="CID" />
    <AttributeType name="FName" />
    <AttributeType name="LName" />

    <attribute type="CID" sql:field="BusinessEntityID" />
    <attribute type="FName" sql:field="FirstName" />
    <attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>

No esquema de mapeamento, o elemento <Contacts> é mapeado para a tabela Person.Person usando a anotação sql:relation. Os atributos CID, FName e LName são mapeados para as colunas BusinessEntityID, FirstName e LastName na tabela Person.Person usando as anotações sql:field.

Esse esquema XDR anotado oferece a exibição XML dos dados relacionais. Essa exibição XML pode ser consultada usando a linguagem XPath (XML Path). A consulta retorna um documento XML como resultado, em vez do conjunto de linhas retornado pelas consultas SQL.

ObservaçãoObservação

No esquema de mapeamento, os valores relacionais especificados (como nome de tabela e nome de coluna) têm diferenciação de maiúsculas e minúsculas.