Tecnologias XML eXML no SQL Server 2016

28
Tecnologias XML e XML no SQL Server Rogério Moraes de Carvalho Consultor e instrutor de TI rogeriom.wordpress.com | @ rogeriomc

Transcript of Tecnologias XML eXML no SQL Server 2016

Page 1: Tecnologias XML eXML no SQL Server 2016

Tecnologias XML e XML no SQL Server

Rogério Moraes de CarvalhoConsultor e instrutor de TI

rogeriom.wordpress.com | @rogeriomc

Page 2: Tecnologias XML eXML no SQL Server 2016

Agenda

Noções de XMLO que é XML?

Estrutura de um documento XML

XML bem formado

Algumas tecnologias XMLEndereçamento de XML com XPath

Consulta de XML com XQuery

Funções de XPath e XQuery

Transformação de XML com XSLT

Imagens vetoriais no formato SVG

Equações matemáticas com MathML

Noções de XML SchemaO que é XML Schema?

Estrutura de um documento XSD

Suporte a XML no SQL ServerTipo de dado xml

XML Schema Collections

Métodos do tipo de dado xml

Declaração de XML namespaces

Extensões XML DML do Xquery

Documentação

Documentação no W3C

Page 3: Tecnologias XML eXML no SQL Server 2016

Noções de XML

Page 4: Tecnologias XML eXML no SQL Server 2016

O que é XML?

XML: Extensible Markup Language

Formato baseado em texto simples

Representa informações estruturadas

Derivado do formato padrão SGML

Standard Generalized Markup Language

Alguns usos de XML

Formatos de softwares de escritório

OOXML: Office Open XML / OpenDocument

Arquivos de configuração

Armazenamento de dados estruturados

<ConteudoItem><SituacaoEstimulo>

Uma máquina de 9 V tem umaresistência de 0,2 &amp;#8486;.

</SituacaoEstimulo><Comando>

Qual é a corrente elétrica?</Comando><Opcoes IdGabarito="e">

<Opcao Id="a">1,8 A.</Opcao><Opcao Id="b">22,2 mA.</Opcao><Opcao Id="c">22,2 A.</Opcao><Opcao Id="d">45 A.</Opcao><Opcao Id="e">45 mA.</Opcao>

</Opcoes></ConteudoItem>

Page 5: Tecnologias XML eXML no SQL Server 2016

Estrutura de um documento XML

<?xml version="1.0" encoding="iso-8859-1"?><ConteudoItem xmlns="http://www.cebraspe.org.br/TesteEletronico/ConteudoItem"><SituacaoEstimulo>Uma máquina de 9 V tem uma resistência de 0,2 &amp;#8486;.

</SituacaoEstimulo><Comando>Qual é a corrente elétrica?</Comando><!-- O gabarito precisa ser revisado. --><Opcoes IdGabarito="e"><Opcao Id="a">1,8 A.</Opcao><Opcao Id="b">22,2 mA.</Opcao><Opcao Id="c">22,2 A.</Opcao><Opcao Id="d">45 A.</Opcao><Opcao Id="e">45 mA.</Opcao>

</Opcoes></ConteudoItem>

Instrução de processamento

Atributo

Elemento

Comentário

Texto

NamespaceMarcador de abertura

Marcador de fechamento

Page 6: Tecnologias XML eXML no SQL Server 2016

XML bem formado

Principais regras de um documento bem formado

Elementos

Deve haver um único elemento raiz que contém todos os outros elementos

Todo elemento deve ter mesmos nomes nos marcadores de abertura e fechamento

XML faz distinção entre letras maiúsculas e minúsculas

Elementos devem estar aninhados corretamente, sem estarem intercalados

Atributos

Nomes de atributos não podem se repetir num mesmo marcador de abertura ou elemento vazio

Todos os atributos devem ter um valor

O valor de todo atributo deve estar delimitado por aspas ou por apóstrofos

Valores de atributos não podem ter o caractere <

Page 7: Tecnologias XML eXML no SQL Server 2016

Demonstração 1: Criando um documento XML

Montar um documento XML para representar os seguintes dados

Livros

ID Titulo Autor(es)Número

de páginasEditora

Data de

publicação

1 Clean Code Robert C. Martin 464 Prentice Hall 01/08/2008

2 T-SQL Querying

Itzik Ben-Gan

Adam Machanic

Dejan Sarka

Kevin Farlee

861 Microsoft Press 17/02/2015

3 C# 6.0 in a NutshellJoseph Albahari

Ben Albahari1138 O’Reilly 04/11/2015

Page 8: Tecnologias XML eXML no SQL Server 2016

Laboratório 1: Criando um documento XML (10 min)

Montar um documento XML para representar os seguintes dadosAgenda de contatos

IDPrimeiro

nomeSobrenome Sexo

Data de

nascimentoTelefones E-mails

1 Camila da Silva Pereira F 15/02/1987

Celular: (61) 98888-8888

Residencial: (61) 3222-2222

Trabalho: (61) 2111-1111

Pessoal:

[email protected]

Trabalho:

[email protected]

2 Pedro Marques Brito M 01/12/1995Celular: (11) 98222-2222

Residencial: (11) 2333-3333

Pessoal:

[email protected]

3 Bárbara Albuquerque F 20/03/2000Residencial: (21) 3444-4444

Trabalho: (21) 3777-7777

Pessoal:

[email protected]

Trabalho:

[email protected]

Page 9: Tecnologias XML eXML no SQL Server 2016

Algumas tecnologias XML

Page 10: Tecnologias XML eXML no SQL Server 2016

Endereçamento de XML com XPath

ele – seleciona o elemento filho ele

* – seleciona todos os elementos filhos

text() – seleciona todos nós textos

@atr – seleciona o atributo atr

@* – seleciona todos atributos filhos

ele[1] – seleciona o primeiro filho ele

ele[last()] – seleciona o último filho ele

. – seleciona o nó contexto

.. – seleciona o pai do nó contexto

ele1/ele2 – seleciona os elementos ele2 descendentes

diretos do elemento ele1

ele1//ele2 – seleciona os elementos ele2

descendentes do elemento ele1

ele/@atr –seleciona o atributo atr do elemento ele

ele[@atr="val"] – seleciona os elementos ele com

atributo atr com valor val

ele[@atr="val"][3] – seleciona o terceiro elemento

filho ele com atributo atr com

valor val

O que é XML Path Language (XPath)?É uma linguagem de expressão que permite o processamento de valores

Sintaxe abreviada de caminhos para localização (relativa ao nó contexto)

Page 11: Tecnologias XML eXML no SQL Server 2016

Consulta de XML com XQuery

O que é XQuery?

É uma linguagem padronizada para combinar dados de documentos, bancos de

dados, páginas web e outros dados

Expressões FLWOR do Xquery

for – seleciona uma sequência de nós

let – vincula uma sequência a uma variável

where – filtra os nós

order by – ordena os nós

return – define o que retornar

(avaliado uma vez para cada nó)

for $opcao in doc("ConteudoItem.xml")/ConteudoItem/Opcoes/Opcao

where $opcao/Id > 'b'order by $opcao/@Idreturn $opcao

Page 12: Tecnologias XML eXML no SQL Server 2016

Funções de XPath e XQuery

Funções de agregação

count($arg) – número de itens de $arg

sum($arg) – soma dos valores de $arg

avg($arg) – média dos valores de $arg

max($arg) – maior valor de $arg

min($arg) – menor valor de $arg

Funções numéricas

round($arg) – arredonda o valor de $arg

abs($arg) – valor absoluto de $arg

Funções de extensão da Microsoft

sql:column($col) – Valor da coluna $col

sql:variable($var) – Valor da variável $var

Funções em valores string

concat($arg1, $arg2, ...) – concatena os strings

contains($arg1, $arg2) – $arg1 contém $arg2

starts-with($arg1, $arg2) – $arg1 começa com $arg2

ends-with($arg1, $arg2) – $arg1 termina com $arg2

substring($str, $inicio, $comprimento)substring($str, $inicio) – retorna parte do string

substring-before($arg1, $arg2) – substring antes

substring-after($arg1, $arg2) – substring depois

concat($arg1, $arg2, ...) – concatena os strings

string-length($arg) – comprimento do string

upper-case($arg) – converte para letras maiúsculas

lower-case($arg) – converte para letras minúsculas

Funções por categoria

Page 13: Tecnologias XML eXML no SQL Server 2016

Transformação de XML com XSLT

O que é XSLT?

É uma linguagem projetada para transformar documentos XML em outros

documentos XML

Especificação mais recente no W3C

XSL Transformations (XSLT) Version 3.0

W3C Candidate Recommendation 19 November 2015: https://www.w3.org/TR/xslt-30/

Page 14: Tecnologias XML eXML no SQL Server 2016

Imagens vetoriais no formato SVG

O que é SVG?

É uma linguagem para descrever gráficos bidimensionais em XML

Permite três tipos de objetos gráficos:

Formas gráficas vetoriais (linhas e curvas)

Imagens

Texto

Especificação no W3C

Scalable Vector Graphics (SVG) 1.1 (Second Edition)

W3C Recommendation 16 August 2011: https://www.w3.org/TR/SVG11/

Page 15: Tecnologias XML eXML no SQL Server 2016

Equações matemáticas com MathML

O que é MathML?

É uma linguagem de marcação para descrever elementos matemáticos

Especificação no W3C

Mathematical Markup Language (MathML) Version 3.0 2nd Edition

W3C Recommendation 10 April 2014: https://www.w3.org/TR/MathML3/

Page 16: Tecnologias XML eXML no SQL Server 2016

Demonstração 2: Usando XQuery para consultar XML

Livros com mais de 500 páginas?

Total de páginas dos livros

Livro com menos páginas

Livros publicados em fevereiro

Títulos dos livros com mais de um autor

Autores com Ben no nome

Autores de todos livros em ordem alfabética

Autores com último sobrenome Albahari

ID Titulo Autor(es)Número

de páginasEditora

Data de

publicação

1 Clean Code Robert C. Martin 464 Prentice Hall 01/08/2008

2 T-SQL Querying

Itzik Ben-Gan

Adam Machanic

Dejan Sarka

Kevin Farlee

861 Microsoft Press 17/02/2015

3 C# 6.0 in a NutshellJoseph Albahari

Ben Albahari1138 O’Reilly 04/11/2015

Page 17: Tecnologias XML eXML no SQL Server 2016

Laboratório 1: Usando XQuery para consultar XML

Contato de ID igual a 2

Contatos com mais de um e-mail

Todos os e-mails do Gmail

Nomes completos ordenados alfabeticamente

IDPrimeiro

nomeSobrenome Sexo

Data de

nascimentoTelefones E-mails

1 Camila da Silva Pereira F 15/02/1987

Celular: (61) 98888-8888

Residencial: (61) 3222-2222

Trabalho: (61) 2111-1111

Pessoal:

[email protected]

Trabalho:

[email protected]

2 Pedro Marques Brito M 01/12/1995Celular: (11) 98222-2222

Residencial: (11) 2333-3333

Pessoal:

[email protected]

3 Bárbara Albuquerque F 20/03/2000Residencial: (21) 3444-4444

Trabalho: (21) 3777-7777

Pessoal:

[email protected]

Trabalho:

[email protected]

Page 18: Tecnologias XML eXML no SQL Server 2016

Noções de XML Schema

Page 19: Tecnologias XML eXML no SQL Server 2016

O que é XML Schema?

XML Schema (Esquema XML)

É uma linguagem para expressar restrições em documentos XML

Esquemas de validação XML definidos pelo W3C

Document Type Definition (DTD)

XML Schema Definition (XSD)

Usos de esquemas XML

Fornecer um vocabulário de elementos e atributos e onde podem aparecer

Associar tipos de dados com os valores encontrados num documento XML

Para fornecer uma descrição formal de um conjunto de documentos XML

Page 20: Tecnologias XML eXML no SQL Server 2016

Estrutura de um documento XSD

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns="http://www.cebraspe.org.br/TesteEletronico/ConteudoItem"targetNamespace="http://www.cebraspe.org.br/TesteEletronico/ConteudoItem"elementFormDefault="qualified">

<xs:element name="ConteudoItem"><xs:complexType>

<xs:sequence><xs:element name="SituacaoEstimulo" type="xs:string" /><xs:element name="Comando" type="xs:string" />...

</xs:sequence></xs:complexType>

</xs:element>...</xs:schema>

Um documento XML que

satisfaz uma gramática XSD é

considerado um documento

XML válido

Page 21: Tecnologias XML eXML no SQL Server 2016

Suporte a XML no SQL Server

Page 22: Tecnologias XML eXML no SQL Server 2016

Tipo de dado xml

O que é o tipo de dado xml no SQL Server?

Tipo de dado para armazenar dados XML

Permite armazenar documentos ou fragmentos XML num banco de dados

É possível criar colunas e variáveis do tipo xml para armazenar instâncias XML

A representação do tipo de dado xml não pode ultrapassar o limite de 2 GB

XML tipado

Tipos de dado xml associado com um XML Schema Collection

Os esquemas na coleção são usados para validar e tipificar as instâncias XML

DECLARE @conteudoItem xml (TesteEletronico.ConteudoItemSchemaCollection);

Page 23: Tecnologias XML eXML no SQL Server 2016

XML Schema Collections

O que são XML Schema Collections no SQL Server?

Armazenam XML Schemas importados e são usados para:

Validar instâncias de XML

Tipificar dados XML quando armazenados no banco de dados

DDL para gerenciar coleções de esquemas XML

CREATE XML SCHEMA COLLECTION

ALTER XML SCHEMA COLLECTION

DROP XML SCHEMA COLLECTION

CREATE XML SCHEMA COLLECTION TesteEletronico.ConteudoItemSchemaCollection ASN'<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ... > ... </xsd:schema>';

Page 24: Tecnologias XML eXML no SQL Server 2016

Métodos do tipo de dado xml

Há cinco métodos do tipo de dado xmlvalue('XQuery', 'Tipo de dado do SQL Server')

Método para consultar uma instância XML e retornar um valor escalar do tipo do SQL Server

query('XQuery')Método para consultar uma instância XML e retornar uma instância de XML não tipado

exist('XQuery')Método para consultar uma instância XML e retornar um valor do tipo bit

1 (resultado não vazio), 0 (resultado vazio), NULL (instância nula do XML)

nodes('XQuery') AS Tabela(Coluna)Método para consultar uma instância XML e transformas nós XML em dados relacionais

modify('XML_DML')Método para modificar o conteúdo de uma instância XML (incluir, excluir e atualizar nós XML)

Page 25: Tecnologias XML eXML no SQL Server 2016

Declaração de XML namespaces

Declaração de XML namespace na instrução XQuerydeclare namespace prefixo = "namespace";

Sintaxe da instrução Transact-SQL WITH XMLNAMESPACESWITH XMLNAMESPACES (

prefixo1 = "namespace1"

, prefixo2 = "namespace2"

, ...

, prefixoN = "namespaceN"

, DEFAULT "namespaceDefault"

)

...

Page 26: Tecnologias XML eXML no SQL Server 2016

Documentação

Page 27: Tecnologias XML eXML no SQL Server 2016

Documentação no W3C

Extensible Markup Language (XML) 1.0 (Fifth Edition)W3C Recommendation 26 November 2008: https://www.w3.org/TR/xml/

W3C XML Schema Definition Language (XSD) 1.1 Part 1: StructuresW3C Recommendation 5 April 2012: https://www.w3.org/TR/xmlschema11-1/

W3C XML Schema Definition Language (XSD) 1.1 Part 2: DatatypesW3C Recommendation 5 April 2012: https://www.w3.org/TR/xmlschema11-2/

XML Path Language (XPath) 3.0W3C Recommendation 08 April 2014: https://www.w3.org/TR/xpath-30/

XQuery 1.0: An XML Query Language (Second Edition)W3C Recommendation 14 December 2010: https://www.w3.org/TR/xquery/

Page 28: Tecnologias XML eXML no SQL Server 2016

Documentação no W3C

XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)W3C Recommendation 14 December 2010: https://www.w3.org/TR/xquery-operators/

XQuery 3.0: An XML Query LanguageW3C Recommendation 08 April 2014: https://www.w3.org/TR/xquery-30/

XSL Transformations (XSLT) Version 3.0W3C Candidate Recommendation 19 November 2015: https://www.w3.org/TR/xslt-30/

Scalable Vector Graphics (SVG) 1.1 (Second Edition)W3C Recommendation 16 August 2011: https://www.w3.org/TR/SVG11/

Mathematical Markup Language (MathML) Version 3.0 2nd EditionW3C Recommendation 10 April 2014: https://www.w3.org/TR/MathML3/