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:
Esquema XML Parte 0: Cartilha, Recomendação W3C (https://www.w3.org/TR/xmlschema-0/)
Esquema XML Parte 1: Estruturas, Recomendação W3C (https://www.w3.org/TR/xmlschema-1/)
Esquema XML Parte 2:Tipos de dados, Recomendação W3C (https://www.w3.org/TR/xmlschema-2/)
Linguagem de caminho XML (XPath) (https://www.w3.org/TR/xpath)
Transformações XSL (XSLT) (https://www.w3.org/TR/xslt)
Veja também
Considerações de segurança de esquema anotado (SQLXML 4.0)
Esquemas XDR anotados (preteridos no SQLXML 4.0)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de