XML Schema XPath 2.0 XSLT 2.0 XQuery...

Documentos relacionados
XML: uma introdução prática X100. Helder da Rocha

Introdução a XML X100

XML. na gestão de informações. Helder da Rocha Consultor. Integração total de negócios usando XML. Integração total de negócios usando XML

CONTEÚDO PROGRAMÁTICO

Notas sobre XSLT. O modo correcto para declarar um documento xsl é:

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) XML Origens. HTML Problemas

XML (extensible Markup Language)

Tópicos. Apresentando a família XML HTML HTML. XML extesible Markup Language. Problemas com o HTML

XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA

XML: uma introdução prática <xml:introdução />

Esquemas para Dados XML

Introdução ao XML. Extensible Markup Language

DOM (Document Object Model)

DTD. Vanessa Braganholo.

Rui Carneiro, Rui Pereira, Tiago Orfão

Introdução XML. Vanessa Braganholo

Introdução. Definição. Validação. Universo XML. Apresentação. Processamento. Prof. Enzo Seraphim. Banco de Dados

Transformação de documentos XML

extensible Stylesheet Language (XSL) XSL descreve como fazer o display de um documento XML. XSL é uma espécie de style sheets para XML...

Introdução e motivação SGBD XML Nativo Consultas em SGBDs XML Prática. Bancos de dados XML. Conceitos e linguagens de consulta

Gerência de Dados da Web - DCC922 -

Bases de dados semi-estruturadas, XML

Extensible Markup Language (XML) Júnio César de Lima Cedric Luiz de Carvalho. Instituto de Informática Universidade Federal de Goiás

XMLs E INTEGRAÇÃO COM BANCOS DE DADOS

Introdução de XML. Dados da Web. Gerência de Dados da Web. A Web representa, nos dias de hoje, um repositório universal de dados, onde:

Dados Semi-Estruturados e XML

XML - Extensible Markup Language

XML Schema (Parte 2) Vanessa Braganholo

XML extensible Markup Language. Prof. Fellipe Aleixo

5a. Aula - XML

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

GERÊNCIA DE DADOS SEMI ESTRUTURADOS - XQUERY. Prof. Angelo Augusto Frozza

Programação para Internet I Aulas 10 e 11

Orientação a Objetos e Java

Lição 4 Fundamentos da programação

INE BDNC. Bancos de Dados XML

Banco de Dados. Gerenciamento de Dados e Informação Fernando Fonseca, Ana Carolina Salgado & Robson Fidalgo

L A C Laboratory for Advanced Collaboration

JavaScript (Elementos de Programação e Programação Básica)

Grupo: Rodrigo Pescador Lucas Silveira Renê Rodrigues Eduardo Dellandrea Thiago Bonetti. BANCOS DE DADOS II Bancos de Dados Semi-Estruturados e XML

Controle de Restrições de Integridade de Domínio em Documentos XML

Nomes, Amarração, Verificação de Tipos, e Escopo

Recapitular XML... Gestão e Tratamento de Informação DEI IST

Capítulo 9: XML! Database System Concepts! Silberschatz, Korth and Sudarshan (modificado)!

XPath e XSLT. Ferramentas para Internet Marx Gomes Van der Linden. ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida )

UM MODELO DE MAPEAMENTO DE ESTRUTURAS E DADOS RELACIONAIS PARA DOCUMENTOS XML

XML XML. XML extensible Markup Language HTML. Motivação. W3C: World Wide Web Consortium XML 1.0. Mário Meireles Teixeira DEINF-UFMA

Série Rações Semanais Xpath e XSLT Rogério Araújo

Guia de Bolso HTML e XHTML

XML: uma introdução prática X100. Helder da Rocha

MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS

Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL

Desenvolvimento de Aplicações XML. Wamberg Oliveira, Msc, PMP, COBIT-F Instrutor

definição e composição de esquemas instâncias documentação

GERÊNCIA DE DADOS SEMI ESTRUTURADOS - XPATH. Prof. Angelo Augusto Frozza, M.Sc.

Oracle Database 11g: Introdução à Linguagem SQL Novo

Uma Abordagem Alternativa para o Armazenamento Electrónico de Dados: O Papel da Norma XML

XML. Carlos Bazilio. Depto de Ciência e Tecnologia Instituto de Ciência e Tecnologia Universidade Federal Fluminense

A Linguagem XML (& Markup Languages)

Obtendo Interoperabilidade Semântica em Sistemas. Metamorphosis

XML (extensible Markup Language)

Soluções de integração: SOA, web services e REST + XML/XSD

GERÊNCIA DE DADOS SEMI ESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc.

Programação para Internet I 4. XML. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

geração de svg com xslt Helder da Rocha

CAP. VI ANÁLISE SEMÂNTICA

Bruno Ribeiro de F. Machado DESENVOLVIMENTO DE UMA FERRAMENTA PARA DOCUMENTAÇÃO DE CÓDIGOS-FONTE BASEADA EM XML

Prof. Adriano Maranhão COMPILADORES

Conceitos de Linguagens de Programação

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc.

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc.

XML Schema. Vanessa de Paula Braganholo ftp://metropole/pub/curso/xml/index.html. Janeiro de XML Schema

J500: Java 2 Enterprise Edition Java e XML

Linguagem C Princípios Básicos (parte 1)

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

Banco de Dados na Web

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

XML. Introdução Ferramentas para Internet Marx Gomes Van der Linden. ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida )

Dados Semi-Estruturados e XML Vanessa Braganholo. Lista de Exercícios 3 XML Schema

5 Tecnologias estudadas

Linguagens de Programação. Marco A L Barbosa

Linguagens de interrogação de dados XML - XPath. Gestão e Tratamento de Informação DEI IST

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

O conceito de casos de uso foi criado em 1986 por Ivar Jacobson, metodologista e um dos pais do Processo Unificado.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

XML e Banco de Dados de Internet. Tópicos Especiais em Tecnologia da Informação Profa. Késsia R. C. Marchi

XQuery (2ª parte) DEI IST. (baseado nos slides de Ioana Manolescu, acessíveis em:

Introdução à Programação

GERÊNCIA DE DADOS SEMIESTRUTURADOS -DTD. Prof. Angelo Augusto Frozza, M.Sc.

XML. 1. XML: Conceitos Básicos. 2. Aplicação XML: XHTML 3. Folhas de Estilo em Cascata XML

ÁLGEBRA E CÁLCULO RELACIONAL

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Slides trabalhados durante a quinta aula

Transformação de Documentos XML em Bases de Dados Relacionais Utilizando ASP.NET

Referências. Linguagem C. Tipos de variáveis em XC8. Tipos de variáveis. Tipos de variáveis em XC 8 Exemplo. Radicais numéricos em C

INSTITUTO SUPERIOR TÉCNICO Gestão e Tratamento de Informação

Transcrição:

OD 2002 Tendências ncias em XML XML Schema XPath 2.0 XSLT 2.0 XQuery... Helder da Rocha (helder@acm.org) argonavis.com.br

Objetivos Discutir as novidades desenvolvidas nos grupos de trabalho do W3C em relação à tecnologias relacionadas ao XML Novas formas de validar XML (especificação XML Schema concluída em 2001) Melhoramentos nos recursos para pesquisa (XPath 2.0, a ser concuída em 2002) Novas linguagens funcionais para extração de dados (XQuery 1.0 a ser concluída em 2002) Finalidade: saber quais tecnologias usar e como usá-las para manipular dados em XML 2

Sumário Fundamentos e XML Schema XML e namespaces Tecnologias de transformação Validação e definição de tipos (DTD e XML Schema) Fundamentos de XML Schema XPath e XSLT O que é XPath / O que é XSLT XPath 2.0 XSLT 2.0 XQuery O que é XQuery Exemplos de XQuery XQuery versus XSLT 3

Fundamentos e XML Schema

XML XML é uma especificação que determina regras para a criação de documentos genéricos que Acrescentam informação semântica a texto através de <marcadores> São estruturados, facilitando a manipulação, pesquisa e extração de dados usuario_33.xml <contato codigo="33"> <nome>severino Severovitch</nome> <email>bill@norte.com.br</email> <telefone tipo="celular"> <area>11</area> <numero>9999 4321</numero> </telefone> </contato> elemento atributo "nó" de texto 5

Documentos XML são representados... elemento raiz declaração XML nó raiz ( / ) <?xml version="1.0" encoding="iso-8859-1"?> atributos <cartao-simples> <logotipo href="/imagens/logo14bis.gif" /> <nome>alberto Santos Dumont</nome> <endereco>rua do Encanto, 22-2o. andar - Centro - 25600-000 - Petrópolis - RJ</endereco> <email>dumont@14bis.com.br</email> <telefone tipo="residencial" > <ddd>21</ddd> elementos <numero>2313011</numero> </telefone> </cartao-simples> 6

/ cartao-simples nó raiz elemento raiz... como árvores email nome dumont@14bis.com.br Alberto Santos Dumont telefone endereco Rua do Encanto, 22-2o. andar - Centro - 25600-000 - Petrópolis - RJ logotipo href numero ddd /imagens/logo14bis.gif 2313011 tipo residencial 21 LEGENDA nó de elemento nó de atributo nó de texto 7

Produção e manipulação de XML XML é texto e pode ser produzido em qualquer editor de textos... <contato codigo="33"> <nome>severino Severovitch</nome> <email>bill@norte.com.br</email> <telefone tipo="celular"> <area>11</area> <numero>9999 4321</numero> </telefone> </contato>... depois pode ser facilmente manipulado como uma árvore na memória 33 Severino Severovitch bill@norte.com.br celular 11 9999 4321 <contato codigo="33"> <nome>severino Severovitch</nome> <email>bill@norte.com.br</email> <telefone tipo="celular"> <area>11</area> <numero>9999 4321</numero> </telefone> </contato> 8

XML Namespaces Consiste da associação de um identificador a cada elemento/atributo da linguagem, que pode ser herdado através do escopo de uma sub-árvore atribuído explicitamente a elementos e atributos através de um prefixo Parte acrescentada posteriormente à especificação Evita conflitos e viabiliza a composição de documentos com vocabulários similares Exemplo prefixo identificador <cadastro xmlns:firma="01.234.567/0001-99"> <nome>severino Severovitch</nome> <firma:nome>sibéria Informática Ltda.</firma:nome> <email>bill@norte.com.br</email> </cadastro> Este elemento <nome> pertence a outro namespace 9

Tecnologias relacionadas ao XML Desde sua criação, várias "tecnologias relacionadas" têm surgido para facilitar a manipulação de XML DOM e SAX: APIs para processamento em baixo nível XSLT e XQuery: linguagens funcionais para extração de dados e transformação XPath e XPointer: linguagens baseadas em caminhos para pesquisa e navegação na árvore XML XML Schema: linguagem para validação, especificação e definição de tipos de dados XSL-FO e XHTML: linguagens para formatação de XML com o objetivo de visualização Xlink: linguagem para representar vínculos em XML 10

Tecnologias para manipular XML Utilização das tecnologias para manipulação de XML texto <xml> <xml> <xml> "custom" XML XSLT <xml> <xml> WML VoiceXML Web VRML W HTML CSS JavaScript DOM SAX XSL-FO PDF PDF PDF RTF TeX SGML SGBD Gráficos SVG Imagens JPG e PNG 2000 2001 PDF e PostScript 11

Validação de XML Para que possa ser manipulado como uma árvore, um documento XML precisa ser bem formado Segue regras mínimas de sintaxe Documentos que não são bem formados não são XML Para ser utilizado em determinada aplicação, documento deve ser válido Deve ter determinado vocabulário, regras gramaticais, etc. Validade é definida em um esquema Especifica uma linguagem Viabiliza a comunicação Validação refere-se à comparação de um documento com um determinado esquema 12

Esquema Documentos que aderem à especificação (válidos) O esquema representa uma classe Os documentos são instâncias Documento fora da especificação Esquema (universo de documentos válidos) Como definir esquemas: DTD - Document Type Definition W3C XML Schema 13

DTD vs. XML Schema Um esquema é essencial para que haja comunicação usando XML Pode ser estabelecido "informalmente" (via software) Uso formal permite validação usando ferramentas genéricas de manipulação de XML Soluções DTD <!ELEMENT contato (nome, email, telefone)> <!ATTLIST contato codigo NMTOKEN #REQUIRED> XML Schema <xsd:schema xmlns:xsd=".../xmlschema"> <xsd:element name="contato"> <xsd:complextype> <xsd:attribute name="codigo" Simples mas não é XML Não suporta namespaces Limitado quando a tipos de dados use="required"> É XML, porém mais complexo Suporta namespaces Permite definição de tipos 14

Exemplo de DTD Exemplo de documento válido em relação a este DTD Modelo de conteúdo (tipo de dados complexo) <astro id="p05" nome="jupiter"> <imagem href="jup31.jpg" /> <imagem href="jup32.jpg" /> </astro> <!ELEMENT astro (imagem*) > <!ELEMENT imagem EMPTY > Elementos Atributos <!ATTLIST imagem href CDATA #REQUIRED > <!ATTLIST astro id ID #REQUIRED > <!ATTLIST astro nome CDATA #REQUIRED > <!ATTLIST astro diametrokm NMTOKEN #IMPLIED > Atributo sempre associado a elemento Tipos de dados simples (somente para atributos) 15

XML Schema XML Schema consiste de três especificações 0: Primer -introdução 1: Structures - define estruturas (tipos complexos) 2: Datatypes - define coleção de tipos simples Tipos simples representam tipos de dados básicos como texto, números, tokens, booleanos Podem representar qualquer informação não-xml (texto, banco de dados, etc.) Novos tipos podem ser criados restringindo ou estendendo um tipo existente Tipos complexos representam estruturas do documento como entidades, atributos, etc. Podem ser criados e derivados de outros 16

Exemplo de XML Schema <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="astro" type="astrotype" /> <xs:element name="imagem" type="imagemtype"/> <xs:attribute name="href" type="xs:anyuri"/> <xs:attribute name="id" type="xs:id"/> <xs:attribute name="nome" type="xs:string"/> <xs:attribute name="diametrokm" type="xs:decimal"/> <xs:complextype name="imagemtype"> <xs:attribute ref="href" use="required"/> </xs:complextype> <xs:complextype name="astrotype"> <xs:sequence> <xs:element ref="imagem" minoccurs="0"/> </xs:sequence> <xs:attribute ref="id" use="required"/> <xs:attribute ref="nome" use="required"/> <xs:attribute ref="diametrokm"/> </xs:complextype> </xs:schema> Elementos Atributos Tipos simples Definição de tipos complexos 17

Exemplo equivalente (design "boneca russa") <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="astro"> <xs:complextype> <xs:sequence> <xs:element name="imagem" minoccurs="0"> <xs:complextype> <xs:attribute name="href" type="xs:anyuri"/> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="id" type="xs:id" use="required"/> <xs:attribute name="nome" type="xs:string"/> <xs:attribute name="diametrokm" type="xs:decimal"/> </xs:complextype> </xs:element> </xs:schema> Apenas um elemento (o elemento raiz) é visível Tipos não podem ser reutilizados Permite elementos de mesmo nome em contexto diferente 18

Tipos simples do XML Schema anysimpletype duration datetime time date gyearmonth gyear gmonth gday boolean base64binary hexbinary float double anyuri QName NOTATION decimal string nonpositiveinteger integer nonnegativeinteger normalizedstring negativeinteger long unsignedlong token int positiveinteger language Name NMTOKEN short unsignedint NCName NMTOKENS byte unsignedshort ID IDREF ENTITY unsignedbyte IDREFS ENTITIES 19

Como usar XML Schema É preciso usar um parser que suporte XML Schema Um documento XML pode estar associado a vários documentos XML Schema - um por namespace XML Schema valida uma linguagem (namespace) DTD valida um documento Associação pode ocorrer em qualquer elemento Associação sem namespace <sistemaestelar xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="sistemaestelar.xsd">... Associãção com dois namespaces <se:sistemaestelar xmlns:se="http://cosmos.org.br" xmlns:sat="http://cosmos.org.br/sat" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://cosmos.org.br sistema.xsd http://cosmos.org.br/sat satelites.xsd"> 20

Por que usar XML Schema? Mais recursos de validação Suporte à definição, extensão e reuso de tipos de dados simples e complexos Obrigatório para uso de outras tecnologias XML Web Services (SOAP, WSDL, UDDI) XSLT 2.0 XPath 2.0 XQuery Especificação estável (recomendação desde 2001) Já existem várias implementações estáveis MSXML 4.0 em diante Xerces 1.2 21

Conclusões XML Schema 1.0 oferece recursos que permitem Rigorosa especificação e validação de linguagens (e não apenas "documentos") XML Reuso, importação e inclusão de esquemas Criação, reuso, extensão e herança de tipos complexos Reuso, derivação e restrição de tipos simples Pode-se usar apenas as especificações de interesse É comum o uso apenas da especificação que define tipos de dados simples (XML Schema 1 - Datatypes) Várias outras tecnologias relacionadas ao XML dependem da especificação "XML Schema 1 - Datatypes", entre elas XQuery, XPath 2.0, XSLT 2.0, tecnologias para Web Services e outras 22

XPath e XSLT

XPath e XSLT XPath (1.0) Usada para representar caminhos para os nós de um documentos XML XSLT (extensible Stylesheet Language Transformations) Metade que se separou da especificação XSL XSL = XSLT (transformação) XSL-FO (formatação) Não visa necessariamente a apresentação: define regras para gerar texto ou XML a partir de dados extraídos de um documento-fonte XML Requer um processador que saiba interpretar XSLT e aplicar as regras no documento-fonte Depende de XPath para representar caminhos ou padrões de busca no documento-fonte 24

XPath 1.0 Consiste de três partes Modelo de dados: tipos de primeira importância são strings, números, booleanos e node-sets (conjunto de nós) Linguagem de expressões: passos, eixos, predicados que representam um caminho na árvore XML 33 Severino Severovitch bill@norte.com.br celular 11 9999 4321 Caminhos absolutos /contato/@codigo /contato/telefone/@tipo /contato/telefone/numero/text() Relativos ao contexto /contato: @codigo (ou./@codigo) telefone@tipo (ou./telefone/tipo) telefone/numero/text() Operadores e funções: para expressões booleanas, aritméticas, concatenação, indexação, etc. 25

Expressões XPath Uma expressão XPath consiste de três dimensões Passo (separados por "/") /contato/telefone/numero/text() Eixo (atributo, namespace, elemento pai, filho, etc.) /child::contato/child::telefone/attribute::tipo ou /contato/telefone/@tipo /descendant-or-self::telefone/@tipo ou //telefone/@tipo Predicado opcional (restringe busca com critério booleano) /telefone[position()=2]/@tipo[.='residencial'] //telefone[numero='9999 4321' and not(area='21')] Em XSLT, XPath é usado dentro de atributos especiais para selecionar nós no documento-fonte 26

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="livro/titulo"> <td><xsl:value-of select="." /></td> XSLT XSL Transformations Linguagem funcional para criação de documentos que contêm regras de transformação para documentos XML Documentos escritos em XSLT são chamados de folhas de estilo e contêm Elementos XSLT: <template>, <if>, <foreach>,... Expressões XPath para localizar nós da árvore-fonte Texto ou XML a ser gerado no documento-resultado Processador XSLT fontetohtml.xslt Folha de estilos fonte.xml Documento Fonte Processador XSLT Xalan, TrAX, Saxon Netscape, I. Explorer Documento Resultado 27

Exemplo com XSLT: documento-fonte (1) Considere o seguinte documento-fonte: <aeronave id="ptgwz"> <origem partida="08:15">galeão</origem> <destino>congonhas</destino> </aeronave> / <aeronave> @id PTGWZ <origem> Galeão Árvore-fonte @partida 08:15 <destino> Congonhas 28

XSLT: folha de estilos (2) O seguinte template (parte de uma folha de estilos XSLT) pode extrair os dados do documento-fonte documento resultado (em preto) <xsl:template match="aeronave"> <p>a aeronave de prefixo <xsl:value-of select="@id" /> decolou de <xsl:value-of select="origem" /> às <xsl:value-of select="origem@partida" /> tendo como destino o aeroporto de <xsl:value-of select="destino" />.</p> </xsl:template> documento-fonte (em azul - XPath) elementos XSLT (em vermelho, com prefixo xsl) Elementos XSLT geralmente são usados com um prefixo associado ao seu namespace: <xsl:elemento> para evitar conflitos com o documento-resultado. 29

XSLT: documento-resultado (3) Após a transformação, o resultado será <p>a aeronave de prefixo PTGWZ decolou de Galeão às 8:15 tendo como destino o aeroporto de Congonhas.</p> Para obter outros resultados e gerar outros formatos com os mesmos dados, deve-se criar folhas de estilo adicionais 30

Problemas de XSLT e XPath XPath não utiliza XML Schema Só há quatro tipos de dados: número, string, booleano e node-set (conjunto de nós) XPath não lida com conjuntos ordenados Não há um tipo "seqüência" XSLT não utiliza XML Schema Geralmente, não se valida folhas de estilo uma vez que DTDs não sabem lidar com namespaces XSLT complica Muito código é necessário para fazer coisas que são simples em outras linguagens (ex: agrupamento) É linguagem completa (Turing-complete) em XML 31

XPath 2.0 Nova especificação (esperada em dezembro 2002) Fundamental para XQuery 1.0 e XSLT 2.0 Modelo de dados ampliado e melhorado Suporta tipos XML Schema Novo objeto de primeira importância: sequence Contém valores de tipos simples (tipos XML Schema) ou nós (uma seqüência não pode conter outras sequências) Sequência de um item só é o mesmo que o próprio item Modelo de dados compatível com XML Infoset Definições compatíveis com outras especificações XML (XML InfoSet é um vocabulário uniforme que serve de referência para uniformizar definições através das diferentes especificações dos grupos de trabalho XML) 32

Algumas novidades do XPath 2.0 Comentários <xsl:value-of select="(-- Isto é um comentário --) /nome[@id='teste']"/> Coringas de namespace <xsl:template match="*:description">... Funções podem ser usadas como passos de uma expressão document("arquivo.xml")//elemento Expressões entre parênteses podem ser passos /livro/(nota capitulo)/titulo 33

Seqüências Seqüência simples (1, 2, 3), ("aa", "bb"), (1 to 13) Podem ter tipos misturados (1, 2, 3, "abc", xf:date("2002-11-1")) Não podem ser aninhadas (uma seqüência não pode conter outra seqüência) Não são conjuntos (node-sets) São ordenadas e podem conter elementos duplicados Equivalência Seqüência contendo apenas um elemento é considerada igual ao próprio elemento 34

Exemplo de seqüência Usando folha de estilo XSLT <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> seqüência XPath <numeros> <xsl:for-each select="(1 to 5)"> <n><xsl:value-of select="."/></n> </xsl:for-each> </numeros> </xsl:template> </xsl:stylesheet> Resultado (documento gerado) <?xml version="1.0" encoding="utf-8"?> <numeros> <n>1</n><n>2</n><n>3</n> <n>4</n><n>5</n> </numeros> 35

Operações com seqüências União (1 to 10) (5 to 15) Resultado: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) Intersecção (1 to 10) intersect (5 to 15) Resultado: (5, 6, 7, 8, 9, 10) Diferença (1 to 10) except (5 to 15) Resultado: (1, 2, 3, 4) 36

Novas expressões XPath 2.0 For for $var in expr return expr for $var1 in expr, $var2 in expr,... return expr Condicional if ( expr ) then expr else expr Quantificadas some $nome in expr satisfies expr every $nome in expr satisfies expr 37

Funções e operadores do XPath 2.0 Funções Namespace: http://www.w3.org/2001/12/xquery-functions mapeado geralmente ao prefixo xf Várias são funções já existentes em XPath 1.0 adaptadas para usar tipos de dados do XML Schema Inclui construtores para tipos XML Schema Operadores Namespace: http://www.w3.org/2001/12/xquery-operators mapeado geralmente ao prefixo op Vários são equivalentes aos já existentes: *, /, -, +, and, or Outros lidam com datas, tipos específicos, etc. 38

Exemplos de algumas funções XPath 2.0 xf:data(nó) Retorna uma seqüência de valores simples (devidamente identificados com tipos XML Schema) xf:compare(string, string) Retorna 1, 0 ou -1 indicando resultado de comparação xf:match(...) e xf:replace(...) Combinações e substituições com RegExp xf:add-days(data?, decimal?) Acrescenta dias em uma data xf:insert(item*, decimal) Insere itens em determinada posição da seqüência xf:current-datetime() Retorna data e hora atuais (tipo XML Schema xs:datetime) 39

Alguns operadores XPath 2.0 op:multiply(op1, op2) Equivalente a * op:numeric-equal(op1, op2) Equivalente a = op:boolean-or(boolean, boolean) Equivalente a or op:concatenate(item*, item*) Gera seqüência a partir da concatenação de dois itens ou seqüências op:datetime-less-than(datetime,datetime) Retorna true se primeira data é anterior à segunda op:getduration(datetime, datetime) Retorna tempo transcorrido (tipo XML Schema xs:duration) entre duas datas 40

Construtores Retornam tipos simples do XML Schema passandose uma string como argumento Existe um para cada tipo do XML Schema Exemplos xf:decimal('12.3') xf:integer('12') xf:token('3testes') xf:nmtoken('teste') xf:true() xf:date('2002-12-12') xf:gyear('2002') xf:anyuri('http://www.aaa.com')... 41

XSLT 2.0 Atualização do XSLT compatível com XPath 2.0 Suporta XML Schema Folha de estilo pode ser validada! Ordenação pode ser baseada no tipo XML Schema Variáveis possuem atributo "type" que contém tipo XS Algumas otimizações Mais fácil de lidar com agrupamentos Variáveis podem receber node-sets Pode gerar mais de um documento de saída Suporte à formatação de datas Para definir um documento XSLT 2.0 Use o mesmo namespace Defina o atributo version="2.0" em <stylesheet> 42

Novo elemento: <xsl:for-each-group> Elimina a necessidade de sintaxe complexa para agrupamento por contexto Em XSLT 2.0 era preciso usar recursos complicados como "método Muench" para agrupar elementos por contexto Sintaxe <xsl:for-each-group select="expr" group-by="expr de string" group-adjacent="expr de string" group-starting-with="padrão"> <xsl:sort... />... </xsl:for-each-group> 43

XSLT 2.0 Permite definição de funções XSLT 1.0 apenas permite definição de templates reutilizáveis Funções são mais flexíveis e podem ser usadas por expressões XPath Exemplo: fatorial(n) <xsl:function name="math:fatorial" xmlns:math="http://contas"> <xsl:param name="n" type="xsd:nonnegativeinteger"/> <xsl:result type="xsd:positiveinteger" select="if ($n eq 0) then 1 else $n * math:fatorial($n - 1)"/> </xsl:function> 44

Outros recursos Value-of para seqüências Permite imprimir o conteúdo de uma seqüência <x><xsl:value-of select="(1,2,3,4)" separator=" "/></x> Resultado <x>1 2 3 4</x> Inclusão de texto XSLT 1.0 suporta apenas a inclusão de documentos XML (que são processados na inclusão) usando a função document() XSLT 2.0 suporta a inclusão de texto não processado <xsl:value-of select="unparsed-text('fragment.xml')"/> 45

Conclusões XPath 2.0 melhora a linguagem XPath 1.0 com novos recursos e preserva a compatibilidade reversa Suporte a XML Schema Novas funções, novos operadores Novo modelo de dados Maior consistência e facilidade de integração com outras especificações de tecnologias relacionadas a XML XSLT 2.0 é incompatível com XSLT 1.0 mas Suporta XML Schema Suporta XPath 2.0 Oferece recursos que tornam a criação e utilização de folhas de estilo XSLT mais simples 46

XML Query

XQuery 1.0 Especificação W3C que consiste de três partes Modelo de dados para documentos XML baseado no XML Infoset Conjunto de operadores para o Modelo de Dados Linguagem de query baseada nos operadores e no modelo de dados XQuery é Uma linguagem declarativa similar a SQL Pode realizar pesquisas sobre um ou mais documentos Pode construir novos documentos a partir dos resultados de uma seleção Ideal para pesquisa: não suporta updates ou inserts 48

Modelo Relacional vs. XML Relacional Banco relacional contém tabelas Tabela relacional contém registros com mesmo esquema Registro relacional é lista de valores SQL query retorna conjunto não ordenado de registros XML Banco XML contém coleções Coleção contém documentos XML com mesmo DTD Documento XML éuma árvore de nós XML Query retorna uma seqüência não ordenada de nós Fonte: (6) 49

Exemplo de uso de XQuery Adaptado de XQuery Use Cases (10) Documento a ser pesquisado (bib.xml): <bib> <book year="1994"> <title>tcp/ip Illustrated</title> <publisher>addison-wesley</publisher> <price>65.95</price> </book> <book year="1992"> <title>advanced Programming in the Unix environment</title> <publisher>addison-wesley</publisher> <price>65.95</price> </book> <book year="2000"> <title>data on the Web</title> <publisher>morgan Kaufmann Publishers</publisher> <price>39.95</price> </book>... 50

Exemplo de Pesquisa XQuery Pesquisa mais simples é expressão XPath válida document("bib.xml")//book Retorna todo o documento Pesquisa FOR FOR $t IN document("bib.xml")/bib/book/title WHERE $b/publisher = "Addison-Wesley" RETURN $t Resultado <title>tcp/ip Illustrated</title> <title>advanced Programming in the Unix Environment</title> 51

XQueryX Implementação de XQuery como um documento XML Objetivo é melhor processamento em detrimento da legibilidade Exemplo do FOR (mais simples que o anterior) em XQueryX <xq:query xmlns:xq="http://www.w3.org/2001/06/xqueryx"> <xq:flwr> <xq:forassignment variable="$t"> <xq:step axis="child"> <xq:function name="document"> <xq:constant datatype="charstring">bib.xml</xq:constant> </xq:function> <xq:identifier>bib</xq:identifier> </xq:step> <xq:step axis="child"> <xq:identifier>book</xq:identifier> </xq:step> <xq:step axis="child"> <xq:identifier>title</xq:identifier> </xq:step> </xq:forassignment> <xq:return> <xq:variable>$b</xq:variable> </xq:return> </xq:flwr> </xq:query> FOR $t IN document("bib.xml")/bib/book/title RETURN $b 52

Expressões FLWR (FLoWeR) Representa as quatro tipos de sub-expressões do XQuery: For, Let, Where, Return Sintaxe de FOR (expr = qq. expressão XQuery) FOR var IN expr RETURN expr FOR var IN expr [, var IN expr]* [WHERE expr] RETURN expr Sintaxe de LET LET var += expr RETURN expr LET var += expr [, var := expr]* [WHERE expr] RETURN expr Exemplo usando LET e FOR FOR $book IN //book LET $authors := $book/author FOR $author IN $authors RETURN $author/last 53

Exemplo com ordenação Expressão <bib> { FOR $b IN document("bib.xml")//book [publisher = "Addison-Wesley" AND @year > "1991"] RETURN <book> { $b/@year } { $b/title } </book> SORTBY (title) } </bib> Resultado <bib> Veja mais exemplos em XQuery Use Cases no W3C (ref. (10)) <book year="1992"><title>advanced Programming in the Unix Environment</title> </book> <book year="1994"><title>tcp/ip Illustrated</title> </book> </bib> 54

Diferenças entre XSLT e XQuery Em tese, tudo o que se pode fazer com XQuery se pode fazer com XSLT XSLT é mais adequada à transformação de documentos (alteração); XQuery é mais adequada à pesquisa em documentos XSLT tem estrutura de documento (XML); XQuery tem estrutura de programa XSLT é linguagem funcional; XQuery é linguagem imperativa Fonte: (6) 55

Conclusões XQuery define um modelo de dados, operadores e linguagem que bancos de dados XML (ou simplesmente coleções de dados XML) sejam pesquisadas XQuery oferece recursos para XML similares aos recursos que SQL oferece bancos de dados relacionais Quase. A versão atual ainda não implementa atualizações. XQuery pode ser usada para pesquisas XQuery 1.0 depende de XPath 2.0 XQuery deve ser finalizado em dezembro de 2002 56

Referências 1. Priscilla Walmsley. Definitive XML Schema. Prentice-Hall, 2002 2. Michael Kay. XSL Transformations 2.0. W3C Working Draft, 16/08/2002. http://www.w3.org/tr/xslt20/ 3. Anders Bergund et al. XML Path Language (XPath) 2.0. W3C Working Draft, 16/08/2002. http://www.w3.org/tr/xpath20/ 4. W3C. XML Query Specifications. W3C, 16/08/2002. http://www.w3.org/xml/query 5. Bas de Bakker and Irsan Widarto. An Introduction to XQuery. PerfectXML. http://www.perfectxml.com/articles/xml/xquery.asp 6. Elliotte Rusty Harold. XSLT 2.0 and beyond. http://www.ibiblio.org/xml/slides/sd2002west/xslt2/index.html 7. Anders Moeller. XQuery Tutorial. http://www.brics.dk/~amoeller/xml/querying/ 8. Evan Lenz. What's new in XPath 2.0. O'Reiily XML.com. http://www.xml.com/pub/a/2002/03/20/xpath2.html 9. Evan Lenz. What's new in XSLT 2.0. O'Reilly XML.com. http://www.xml.com/pub/a/2002/04/10/xslt2.html 10. W3C. XQuery Use Cases. http://www.w3.org/tr/2001/wd-xmlquery-usecases-20010215 57

Obrigado. www.argonavis.com.br 58