Introdução a esquemas XSD anotados (SQLXML 4.0)
É 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> contém todo o esquema; todas as declarações de elemento devem estar no elemento <xsd:schema>. É possível descrever atributos que definam o namespace no qual reside o esquema 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> deriva da especificação do namespace de 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 XSD oferece suporte a anotações introduzidas com a linguagem XDR no SQL Server 2000. 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 é conhecido como esquema de mapeamento, que fornece informações pertinentes a como os dados XML devem 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.
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 seguinte exemplo, a forma mais simples de especificar o namespace é o especificando 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 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.
Exemplo de um esquema XSD anotado
No seguinte exemplo, o esquema XSD consiste em um elemento <Person.Contact>. O elemento <Employee> apresenta um atributo ContactID, além dos 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 AdventureWorks 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 agrupamento de maiúsculas e minúsculas pelo SQL Server. Para obter mais informações, consulte Suporte a agrupamentos e a 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:
Esquema XML parte 0: Primer, Recomendação do W3C (http://www.w3.org/TR/xmlschema-0/)
Esquema XML parte 1: Estruturas, Recomendação do W3C (http://www.w3.org/TR/xmlschema-1/)
Esquema XML parte 2: Tipos de dados, Recomendação do W3C (http://www.w3.org/TR/xmlschema-2/)
Linguagem XPath (XML Path) (http://www.w3.org/TR/xpath)
XSL Transformations (XSLT) (http://www.w3.org/TR/xslt)
Consulte também
Referência
Considerações sobre a segurança de esquemas anotados (SQLXML 4.0)