A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

InfoView20021 XML – eXtensible Markup Language Prof. Dr. Cláudio Baptista UFCG/DSC/SINBAD

Apresentações semelhantes


Apresentação em tema: "InfoView20021 XML – eXtensible Markup Language Prof. Dr. Cláudio Baptista UFCG/DSC/SINBAD"— Transcrição da apresentação:

1 InfoView20021 XML – eXtensible Markup Language Prof. Dr. Cláudio Baptista UFCG/DSC/SINBAD

2 InfoView20022 Roteiro Introdução a XML XMLSchema DOM e SAX XSL XQuery

3 InfoView20023 Dados semi-estruturados ? Dados semi-estruturados: dados heterogêneos e irregulares, auto-descritivos. Banco de dados: originalmente, sistemas fechados, dedicados a gestão de dados regulares, cuja estrutura pouco evolui no tempo Novas aplicações requerem mais flexibilidade de representação e estão constantemente evoluindo o esquema Os modelos relacional e de objetos chegaram a seus limites Introdução

4 InfoView20024 Dados estruturados São dados de um arquivo ou de um banco de dados relacional, em que sua estrutura é conhecida a priori Ex.: Introdução Create table empregado ( matricula int, nome varchar(30), salario float, depto int )

5 InfoView20025 Dados não-estruturados São dados em que não há nenhuma estrutura os definindo. São normalmente armazenados em arquivos ou em colunas do tipo BLOB ou CLOB em SGBDs Ex.: um texto em pdf uma imagem em jpg um video ou áudio Introdução

6 InfoView20026 Dados semi-estruturados São dados em que uma parte há estrutura e em outra não há nenhuma estrutura definida. O esquema da parte estruturada está contido junto com o dado, Ex.: Um (parte estruturada:,,, etc. Parte não estruturada: o corpo da mensagem) Introdução

7 InfoView20027 A revolução da Web… Primeiro Web Browser Mosaic é difundido, há 50 web sites Primeiras ferramentas de busca (WWWW, webcrawler) US$ 1M gastos em compras na Web, presença em 150 países milhão de web sites web servers mais de 1 bilhão de páginas web 2002 – quase 2,5 bilhões de páginas web indexadas (google)

8 InfoView20028 A Web hoje… documentos HTML (em sua maioria) voltada para uso humano gerado automaticamente por aplicações fácil de alcançar qualquer Web page, de qualquer server, em qualquer plataforma

9 InfoView20029 O Segredo do sucesso de HTML HTML é simples: todo mundo pode escrever HTML HTML é textual: é legível, pode-se usar qualquer editor,... HTML é transportável em qualquer plataforma (o browser é a aplicação universal) HTML conecta pedaços de informação através de hypertext links

10 InfoView HTML Bibliography Foundations of Databases Abiteboul, Hull, Vianu Addison Wesley, 1995 Data on the Web Abiteoul, Buneman, Suciu Morgan Kaufmann, 1999

11 InfoView Resultado produzido HTML descreve a apresentação

12 InfoView Problemas com HTML Uma vez criado, um documento é ligado a uma norma particular (ex. HTML 3.2 ) É necessário dispor de várias versões do documento em função da mídia em que vai ser apresentado A indexação de documentos só pode ser feita sobre a parte textual.

13 InfoView HTML... Um conjunto pré-definido e limitado de tags, definidas por uma norma (HTML 2.0, 3.2, 4.0). Estas tags possuem semânticas variadas: h1,.., h6, title, address, … dando as indicações estruturais center, hr, b, i, big, small,… servem para descrever a apresentação.

14 InfoView Limites da Web … aplicações não devem consumir HTML tecnologia de wrapper HTML é instável (modifica-se a página => modifica-se o wrapper) companhias se fundem, formam parcerias; necessitam de interoperabilidade de forma rápida

15 InfoView As novas aplicações Comércio Eletrônico Protocolos "B2B" Bibliotecas digitais sistemas distribuídos … precisamos de um "super HTML" … estão surgindo...

16 InfoView XML ? « Buzz word » eXtensible Markup Language Uma linguagem de descrição de documentos, definida por um organismo internacional W3C Um conjunto de tecnologias derivadas: Xlink, Xpointer, Xschema, DOM, SAX, XSL,… Usados em aplicações como: SVG, SMIL, MathML, MusicML, SOAP O esperanto da Web

17 InfoView Web: Mudança de paradigma … Novo padrão Web XML: XML gerado por aplicações XML consumido por aplicações troca de dados entre plataformas: interoperabilidade na empresa entre empresas

18 InfoView XML Foundations… Abiteboul Hull Vianu Addison Wesley 1995 … XML descreve o conteúdo

19 InfoView XML: uma resposta única a necessidades variadas HTML é usada como a lingagem universal de apresentação de documentos na Web, mas não é uma linguagem adaptada para descrever a estrutura destes documentos Os sistemas de bases de dados atuais são muito rígidos para manipular dados cuja estrutura é irregular e evolui com o tempo.

20 InfoView Os segredos de XML Como HTML: simples, legível, fácil de aprender universal e transportável suportado pela W3C (indústria absorve!) Mas, Além de HTML flexível : podemos representar qualquer tipo de informação estensível: pode-se representar informação de qualquer forma

21 InfoView Noção estrutural Princípio chave de SGML Idéia fundamental: Considere um documento, é desejável separar completamente as informações de estrutura das informações de apresentação.

22 InfoView XML: herdeiro de SGML SGML Standard Generalized Markup Language, norma ISO 8879:1986 Muito utilizada na indústria para as grandes técnicas de documentação. Muito complexa para utilização de «público em geral» SGML tem demonstrado as vantagens do formato estrutural para a Gestão Eletrônica de Documentos (GED) XML usa 10% de SGML para representar de forma eficaz 90% dos documentos

23 InfoView Dois mundos se juntam na Web Gestão de documentos SGML HTML Documentação hipertexto Gestão de dados Bases de dados estruturados (relacionais e objeto) Bases de dados semi-estruturadas

24 InfoView Comunidade de BD pode ajudar... otimização e processamento de consultas visões, transformações data warehouses, integração de dados mediadores, re-escrita de consultas eficiente armazenamento e indexação

25 InfoView Origem de XML 1993: primeiros trabalhos sobre adaptação das técnicas SGML à Web (Sperberg). "HTML to the Max: A Manifesto for Adding SGML Intelligence to the World Wide Web" Junho 1996: criação de um grupo de trabalho no W3C 10 fev. 1998: publicação da recomendação para versão 1.0 da linguagem. (2/98)

26 InfoView Origem de XML Trabalho cooperativo de um grande número de empresas e de pesquisadores reunidos no World Wide Web Consortium (W3C) 400 colaboradores da indústria, entre os quais Oracle, IBM, Compaq, Xerox, Microsoft, etc.. Laboratórios de pesquisa: MIT - USA, INRIA - França, universidade de Keio - Japão Objetivo: definição de um formalismo para facilitar a troca de dados na Web

27 InfoView Mandamentos iniciais: XML deverá ser diretamente utilizável na Internet XML deverá suportar uma larga variedade de aplicações XML deverá ser compatível com SGML A criação de páginas XML deverá ser também o mais simples possível

28 InfoView Mandamentos iniciais(2) Os documentos XML deverão ser de grande legibilidade A criação de documentos deverá ser rápida A sintaxe deverá ser formal e concisa A concisão do código tem mínima importância

29 InfoView Resumindo: XML... XML é uma linguagem de descrição e de troca de documentos (semi-)estruturados

30 Exemplo de um documento Campina GRande, 20 de maio de 2001 Sr. Edilson Silva, Rua das Flores, Caruaru Bar da Noite Rua das Bodegas, s/n C. Grande Tel: Fax: Objet: Dívida? Prezado Senhor, Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef iheznf jùkvbc lkhdklvn v Aproveito do ensejo para renovar meus protestos de elevada estima e consideração. assinatura Rodapé Logotipo Data Destinatário Corpo Rodapé Cabeçalho Objeto Saudação Forma Polida Assinatura

31 Representação XML Sr Edilson Silva rua das Flores Caruaru bla bla 20 Maio 2001 Prezado Senhor,... Aqui é o primeiro parágrafo aqui é o segundo... &abrev-endereco;

32 InfoView Pontos importantes A representação desta carta em XML não tem nenhuma indicação sobre a apresentação. As numerosas propriedades gráficas ou tipográficas estão ausentes da fonte XML. Estas propriedades serão definidas por intermédio de uma folha de estilo. Uma folha de estilo é um conjunto de regras para especificar a realização concreta de um documento sobre uma mídia particular.

33 Objeto: Dívida Prezado Senhot, Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef iheznf jùkvbc lkhdklvn v. sssinatura Rodapé If carta then... If cabeca then … If corps then... If para then Police new roman, size 12, skip first line If … then … Princípio de funcionamento das folhas de estilos Bar da Noite Rua das Bodegas, s/n C. Grande Tel: Fax: Campina GRande, 20 de maio de 2001 Sr. Edilson Silva, Rua das Flores, Caruaru

34 InfoView Descoberta de XML Vantagens de XML

35 35 Estensibilidade e estrutura Em XML, um autor ou uma comunidade de autores inventam livremente as tags que lhes pareçam úteis para marcar os componentes de um documento. Exemplo: diversas formas de representar uma data 5 janeiro Grande liberdade de escolha das estruturas de dados facilita a troca de dados comércio eletrônico, transações financeiras e comerciais, pesquisa e indústria de biotecnologias multimídia Vantagens de XML

36 InfoView Interoperabilidade Todos os dados podem ser vistos como documentos XML e não mais como arquivos no formato X ou Y. Consequências: Um servidor de documentos XML pode responder a um conjunto de necessidades de uma organização. Um simples editor de textos pode tratar o conjunto de dados de uma organização. A interoperabilidade dos utilitários está assegurada. Vantagens de XML

37 InfoView Modularidade e reutilização Cada usuário é livre para definir suas próprias estruturas de documento Um documento pode também estar conforme as estruturas tipadas, chamadas DTD Cada comunidade pode propor as estruturas normalizadas A validação a um DTD permite a automatização no tratamento dos dados e assegura uma possibilidade de controle de integridade Vantagens de XML

38 InfoView Accesso às fontes de informação heterogêneas A consulta e troca de dados entre as base de dados heterogêneas é complexa XML contribui pare minimizar este problema: formato de troca normalizado, genérico, independente de plataforma A indexação e consulta de bases de documentos pode se beneficiar de informações estruturais e textuais. pesquisa por palavras-chaves: Jorge+Amado retorna todos os documentos contendo as palavras Jorge e Amado, então as páginas pessoais de Pedro Amado cujo filho se chama Jorge. pesquisa estrutural: pesquisa os documentos cujo autor é Jorge Amado (ie os documentos contendo um elemento autor, ou escrito-por contendo Jorge e Amado) Vantagens de XML

39 InfoView Descoberta de XML Definição da linguagem XML 1.0

40 InfoView Exemplos de documentos XML Bom dia! Bom dia! Bom dia! XML 1.0

41 InfoView Estrutura de um documento Um documento XML é composto de um prólogo cuja presença é facultativa, mas fortemente aconselhada uma árvore de elementos, obrigatória comentários, seção CDATA e de instruções de tratamento, facultativos Bom dia! XML 1.0

42 InfoView O prólogo contém... Uma declaração XML, facultativa da forma: indica ao processador que vai tratar o documento: a versão da linguagem XML utilizada o código de caracteres utilizado a existência de declarações exteriores ao documento Uma declaração de tipo de documento, facultativa da forma indica a estrutura particular a qual deve estar de acordo um documento XML 1.0

43 InfoView Estrutura de um DTD Um DTD pode compreender duas partes uma parte externa a parte externa é definida fora do documento. É referenciada por uma referência DTD, frequentemente uma URL. Este mecanismo permite assegurar uma reutilização de DTDs frequentemente utilizados. uma parte interna utilizada para especializar um DTD externo genérico ou redefinir certos tipos de elementos XML 1.0

44 InfoView Estrutura de um elemento (1) Um elemento é da forma: conteúdo é a tag de abertura (XML é case sensitive!) é a tag de fechamento. A presença é obrigatória, a exceção particular dos elementos nulos, denotado por ou conteúdo é o conteúdo de um elemento. Pode ser: attr='valor' representa um conjunto eventualmente vazio de atributos, ou seja de pares (nome,valor). Os nomes dos atributos são únicos num elemento. XML 1.0 uma mistura de texto e elementos instruções de tratamento comentários vazio texto outros elementos

45 InfoView Estrutura de um elemento (2) Um nome de elemento é uma sequência não nula de caracteres que pode conter caracteres alfanuméricos undescore sinal de menos ponto caracter dois-pontos (:) é utilizado, mas com um sentido particular deve satisfazer as seguintes restrições o primeiro caracter deve ser alfabético ou um undescore os três primeiros caracteres não devem formar uma cadeia cuja representação em letras minúsculas seja "xml". XML 1.0

46 InfoView Estrutura de um elemento (2) Exemplos de nomes de elementos 1998-catalogo xmlSpecification nome sociedade _ toto Nome_sociedade xsl:rule X.11 incorretoscorretos XML 1.0

47 InfoView Sintaxe dos atributos Um atributo é um par nome='valor' que permite de caracterizar um elemento. Um elemento pode ter vários atributos. Neste caso, os pares nome='valor' serão separados por um espaço. Exemplos O nome de um atributo obedece as mesmas regras que o nome de um elemento O valor de um atributo é uma string entre aspas( " ) ou apóstrofos simples ( ' ). Um valor de atributo não deve conter os caracteres ^, % e &. XML 1.0

48 InfoView Seção CDATA Uma seção CDATA instrui o parser a ignorar os caracteres de markup Exemplo: Entre o in í cio da se ç ão,, todos os caracteres são passados diretamente para a aplica ç ão, sem interpreta ç ão. A única string que não pode ocorrer numa seção CDATA é ]]>.

49 InfoView Comentários Comentários iniciam com. (só não podem conter o string --). Ex.: Comentários podem ser colocados em qualquer linha do documento.

50 InfoView Árvore de elementos Um documento XML contém uma árvore de elementos, com as seguintes restrições: Existe num documento um único elemento pai que contém todos os outros. É a raiz do documento. Todo elemento distinto da raiz é totalmente incluído dentro de seu pai. Assim: bla bla bla não é uma estrutura XML. XML 1.0

51 InfoView Documentos bem formados Um documento é dito bem formado se: está de acordo com as regras sintáticas de XML (tags são aninhadas propriamente e atributos são únicos) Bom dia! Ex. de uma documento não bem formado: Bom dia! XML 1.0

52 InfoView Documentos válidos Um documento é dito válido se: seu prólogo contém uma declaração de tipo de documento sua árvore de elementos respeita a estrutura definida pelo DTD Bom dia! XML 1.0

53 InfoView Noção de DTD Um documento válido deve conter uma declaração de tipo de documento. Esta declaração pode fazer referência, por intermédio de uma URL a um arquivo externo. Este arquivo é chamado de DTD (Definição de Tipo de Documento). Exemplo Bom dia! XML 1.0

54 InfoView Noção de DTD XML 1.0

55 InfoView Conteúdo de um DTD Um DTD pode conter as declarações de elementos de listas de atributos de entidades gerais de entidades parametrizadas de notações como também comentários XML 1.0

56 InfoView Declaração de elemento Uma declaração de elemento é da forma ELEMENT é uma palavra-chave e se escreve imperativamente em maiúsculas nome é um nome válido de um elemento modelo é o modelo de conteúdo deste elemento. Distinguimos cinco modelos de conteúdo elementos dados misto livre vazio XML 1.0: elementos

57 InfoView Modelo de conteúdo de elementos (1) Sequência de elementos filhos (..,..,..) Exemplo Um elemento capitulo cujo conteúdo, imperativamente e nesta ordem, contém sub-elementos titulo, intro e secao. Alternativa (..|..|..) Exemplo Indicadores de ocorrência *, +, ? Um nome de elemento pode ter um indicador de orrorrência: p* : p pode ocorrer zero, uma ou várias vezes dentro do conteúdo de um instância p+ : p pode ocorrer uma ou várias vezes p? : p pode ocorrer zero ou uma vez

58 InfoView Modelo de conteúdo de elementos (2) Exemplos

59 InfoView Modelo de conteúdo de dados A presença de dados no conteúdo de um elemento é especifidada pela palavra-chave #PCDATA Exemplo

60 InfoView Modelo de conteúdo misto Este modelo permite definir os modelos de conteúdo podendo misturar dados e elementos Forma do modelo (#PCDATA | nome 1 | …|nome n )* Exemplos de declarações Exemplo de uso um parágrafo pode conter texto em evidência ou em itálico

61 InfoView Modelo de conteúdo livre (1) Um elemento pode ser definido como sendo um conteúdo qualquer, desde que este conteúdo respeite as regras gerais da linguagem XML. Exemplo Para que o conteúdo de um elemento de modelo de conteúdo livre seja válido, é necessário que, se ele contiver elementos, estes sejam declarados num DTD

62 InfoView Modelo de conteúdo livre (2) Utilidade: este modelo de conteúdo é particularmente útil quando da criação de um DTD complexo Exemplo

63 InfoView Modelo de conteúdo vazio Um elemento pode ser declarado como obrigatoriamente vazio, usando a palavra-chave EMPTY. Exemplo de declarações Exemplo de utilização para uma definição precisa, veja

64 InfoView Modelo de conteúdo vazio Observações: quando o modelo de conteúdo de um elemento é o modelo vazio, deve obrigatoriamente obedecer a sintaxe não é possível misturar EMPTY a uma outra construção de modelo de conteúdo

65 InfoView Declaração de atributos Um atributo é um par nome-valor associado a um elemento uma declaração de atributos num DTD permite especificar os atributos que poderão ou deverão estar associados às instâncias dos elementos. Forma da declaração XML 1.0: atributos

66 InfoView Declaração de atributos Exemplos equivalente a target ID #IMPLIED > nb (1 | 2 | 3) '1'>

67 InfoView Tipo de atributo O tipo de atributo pode ser: CDATA: o valor do atributo é uma cadeia de caracteres ID ou IDREF: permite definir um identificador para um documento Uma lista de escolhas num conjunto de tokens, ou identificadores lógicos NMTOKEN ou NMTOKENS: abreviação de Name Token. Permite ao atributo de ter seu valor de um conjunto de nomes simbólicos. ENTITY ou ENTITIES: permite que um atributo tome como valor o nome de uma entidade externa não XML NOTATION: define um atributo de notação XML 1.0: atributos

68 InfoView Declaração default Possui quatro formas valor por default do atributo #REQUIRED : cada instância deverá ter um atributo deste nome. Não aceita valor default. #IMPLIED : presença facultativa. Não aceita valor default. #FIXED : fixa o valor deste atributo para toda instância. XML 1.0: atributos

69 InfoView Exemplos (1) Atributo CDATA ' > O atributo att1 dos elementos de tipo f tem um valorr constante: o string. Atributo enumerado Exemplo 1 24 Maio O atributo formato é obrigatório e deve ter valores do tipo ANSI, ISO ou BR Exemplo 2 Maria Pedro José XML 1.0: atributos

70 InfoView Exemplos (2) Atributos ID e IDREF Estes tipos de atributos permitem de criar uma referência a um documento conteúdo de uma seção outra seção. Faz referência à seção X321 Obs.: nós não referenciamos de fato uma seção, mas um elemento do documento que possui um atributo do tipo ID e cujo valor é X321. XML 1.0: atributos

71 InfoView Entidades internas Entidades pré-definidas certos caracteres, como & ' " não podem ser utilizados dentro do texto de um documento estes caracteres devem ser representados por seus códigos pré-definidos, chamadas entidades pré-definidas <: < >: > &: & XML 1.0: entidades

72 InfoView Entidades internas Entidades definidas pelo usuário é possível declarar as entidades dentro do DTD esta declaração tem a forma Exemplo a declaração seguinte ©right; produzirá © Tropical Editions observação: 00A9 é o código Unicode do caracter © XML 1.0: entidades

73 InfoView Entidades externas endereçadas por URL Exemplo XML para iniciantes &autor; Era uma vez uma Web… &capitulo1; &capitulo2; Restrição: as entidades externas devem ser documentos bem formados

74 InfoView Notações e entidades não XML Exemplo A declaração de notação associa ao formato jpeg a aplicação xview que poderá ser utilizada em extensão da aplicação XML. A declaração da entidade foto-ferias indica que o conteúdo dos dados está situado no arquivo foto1.jpg A palavra-chave NDATA indica que este arquivo é de um formato não XML

75 InfoView Exemplo Pedro Maia 33 Ana Maria 24 XML 1.0: Exemplos

76 InfoView DTDs como esquemas Exemplo Seja o esquema r1(a, b, c) e r2 (c, e) a1 b1 c1 a2 b2 c2 c1 d1 c2 d3

77 InfoView XML 1.0 Exemplo de DTD

78 InfoView Limitações de DTDs como esquemas DTD impõe ordem Não existe a noção de tipos de dados atômicos (int, float, etc) Não podemos especificar uma faixa de valores de domínio IDREF não é relacionado a um tipo. Tipos são associados com tags => elementos com mesmo nome porém pertencendo a diferentes tipos (nome de pessoa e nome de um curso) não podem usar o mesmo elemento nome. Nesta caso ou redefinimos nomePessoa e nomeCurso ou usamo namespaces com os qualificadores, pessoa:nome e curso:nome

79 InfoView Namespaces

80 InfoView Namespaces XML permite autores de documentos criarem suas próprias tags => pode haver uma mesma tag com semântica diferenciada Ex.: Documento1: Bioinformatica Documento2: Animais Usa PI para associar nomes exclusivos a URI Permitem que seja usado um esquema de atribuição de nomes ao longo de um conjunto de documentos

81 InfoView Solução Primeira tentativa Bioinformatica Segunda tentativa Bioinformatica Solução final (uso de namespaces) Bioinformatica

82 InfoView Examplo de Namespace George Soros Counting

83 InfoView Namespace default George Soros Contabilidade

84 InfoView Nome de Atributo com Namespace Atributos podem ter namespace Exemplo:

85 InfoView XML Schema

86 InfoView XML Schema Visa remediar as limitações dos DTDs Schemas são documentos XML Por ser mais recente ainda não é suportado por muitos parsers Schemas ainda usam um DTD para ser validado Declaração default:

87 InfoView Propósito de XML Schemas Especificar: a estrutura de documentos o elemento estudante contém os elementos matrícula, endereço, curso, nome,... os tipos de dados de cada elemento/atributo o elemento idade deve ser inteiro entre 0 e 130

88 InfoView Motivação para XML Schemas Existe insastifação em usar DTDs: sintaxe diferente você escreve seu documento XML usando uma sintaxe e o DTD usando outra sintaxe capacidade limitada de tipos de dados DTDs suportam um conjunto muito limitado de tipos de dados. Não podemos dizer o elemento deve ser entre 0 e 3000,00 Desejo de se ter um conjunto de tipos de dados compatíveis com aqueles encontrados nos banco de dados

89 InfoView Vantagens de XML Schemas XML Schemas são mais poderosos que DTDs: Tipos de dados melhor especificado +41 tipos e a capacidade de se criar tipos de dados definidos pelo usuário Escritos em XML (mesma linguagem dos documentos) Podem expressar conjuntos (sets): um elemento filho pode estar em qualquer ordem Pode especificar unicidade (chaves) Uso de técnicas de orientação a objetos

90 InfoView Exemplo: Conversão do DTD CatalogoLivros.dtd para XML Schema

91 InfoView

92 InfoView

93 InfoView

94 InfoView

95 InfoView indica que os elementos declarados neste schema (CatalogoLivros, livro, titulo, autor, data, ISBN, editora) vão para este namespace

96 InfoView Este está referenciando uma declaração de um elemento livro. livro em qual namespace? Uma vez que não há um qualificador de namespace, é uma referência ao elemento livro no namespace default, que é o targetNamespace! O namespace default é que é o targetNamespace!

97 InfoView Referenciando um schema numa instância de um documento XML Meninos de Rua Jorge Amado julho, Nossos Livros O uso de um namespace default, diz ao schema-validator que todos os elementos usados neste document vêm do publishing namespace. 2. schemaLocation indica para o schema-validator que o namespace está definido em CAtalogoLivros.xsd. 3. Diz ao schema-validator que o atributo schemaLocation usado pertence ao the namespace schema instance namespace.

98 InfoView Referenciando um schema num documento XML CatalogoLivros.xml CatalogoLivros.xsd targetNamespace="A" schemaLocation="A CatalogoLivros.xsd" - define elementos no namespace A - usa elementos do namespace A

99 InfoView Há multiplos níveis de verificação CatalogoLivros.xmlCatalogoLivros.xsd XMLSchema.xsd (schema-for-schemas) Valida se o documento xml está conforme as regras descritas em CatalogLivros.xsd Valida se CatalogoLivros.xsd é um documento schema válido, i.e., está conforme com as regras descritas no schema-for-schemas

100 InfoView Valores Default para minOccurs e maxOccurs O valor default para minOccurs é "1" O valor default para maxOccurs é "1" Equivalentes!

101 InfoView Esquema alternativo...

102 102 Um tipo pode ser nomeado

103 InfoView Observação é equivalente a Elemento A referencia o complexType ttt. Elemento A tem a definição complexType embutida na delcaração do elemento.

104 InfoView Observação 2 Uma declaração de elemento pode ter um atributo type, ou um complexType elemento filho, mas não pode ter ambos. …

105 InfoView Sumário de declaração de Elementos (2 formas) Um tipos simples (ex.., xsd:string) ou o nome de um complexType … 1 2 Um inteiro não negativo Um inteiro não negativo ou "unbounded" Obs: minOccurs e maxOccurs podem ser usados apenas em declaração de elementos.

106 InfoView Problema: Como restringir os tipos? Suponha que queremos restringir o elemento ISBN da seguinte forma: ddddd-ddddd-ddddd ou d-ddd-ddddd-d ou d-dd-dddddd-d, onde 'd' significa 'digit'

107 107

108 InfoView ou ? Use o elemento complexType quando quiser definir elementos filhos e/ou atributos de um elemento Use o elemento simpleType quando precisar criar um novo tipo que é um refinamento de um tipo embutido (string, integer, etc)

109 InfoView Criando seus próprios Datatypes Um novo datatype pode ser definido de um datatype existente (chamado tipo "base" ) através da especificação de valores para uma ou mais das facetas opcionais para o tipo base. Exemplo. O tipo primitivo string tem seis facetas opcionais: pattern enumeration length minLength maxlength whitespace (valores: preserve, replace, collapse)

110 InfoView Exemplo de criação de um novo Datatype através da especificação de valores de facetas

111 InfoView Outro Exemplo Cria um novo tipo chamado Cores-Brasil. Um elemento declarado deste tipo deve ter o valor verde, amarelo, azul ou branco.

112 InfoView Facetas do tipo Integer Facets: pattern enumeration whitespace maxInclusive maxExclusive minInclusive minExclusive precision

113 InfoView Exemplo Exemplo. Definindo um elemento elevation: 5240

114 InfoView Tipos Derivados Podemos ter uma forma de especializar definições complexType. Conhecido como "tipos derivados" derivar por extensão: estender o complexType pai com mais elementos derivar por restrição: restringir o complexType pai através da restrição de alguns elementos para ter uma faixa de valores mais restrita, ou um número de ocorrências mais restrito.

115 InfoView

116 InfoView Derivação por Restrição

117 InfoView Proibindo Derivações Publicação não pode ser estendida or restringida Publicacao não pode ser restringida Publicação não pode ser estendida

118 InfoView Atributos Seja o DTD

119 InfoView EmEstoque (true | false) "false" Revisor CDATA " " Categoria (autobiography | non-fiction | fiction) #REQUIRED

120 InfoView Alternativamente...

121 121 Sumário de Declaração de Atributos (2 formas) required default fixed optional prohibited This attribute is only used with use="default" and use="fixed" xsd:string xsd:integer xsd:boolean …

122 InfoView Observação sobre Atributos A declaração de atributos sempre vem após as declarações de elementos. Os atributos estão sempre com relação ao elemento que eles estão definidos (nested). … aa e ab são atributos de A"

123 InfoView Elementos com Simple Content e Atributos Exemplo. Considere: 5440 O elemento elevation tem duas restrições: - um simples (integer) conteúdo - um atributo chamado units Como declarar elevation?

124 InfoView Solução

125 125 Solução mais completa (constraints)

126 InfoView Expressando Alternativas DTD: XML Schema:

127 InfoView Expressando Repetições

128 InfoView Expressando Ordem Qualquer

129 InfoView Elemento Vazio

130 InfoView XML API: DOM e SAX Prof. Dr. Cláudio Baptista

131 InfoView DOM - Introdução XML Document Object Model (DOM) W3C standard recommendation Constrói árvore na memória para documentos XML Um DOM Document é uma coleção de nodes organizada numa hierarquia DOM provê uma API que permite o programador adicionar, editar, mover, ou remover nodes em qualquer ponto da árvore DOM-based parsers fazem o parsing destas estruturas. Existe em várias linguagens (Java, C, C++, Python, Perl, etc.)

132 InfoView DOM Roadmap Um Parser analiza um arquivo XML para criar um DOM document que é composto de nodes que podem ser elementos, atributos, textos,ou outros tipos de node que fazem parte de um (ou mais) Namespace(s) que podem ser acessados via métodos da DOM API

133 InfoView Evolução do DOM Level 0 - Foi a primeira recomendação que permitia Web browsers identificar e manipular elementos numa página Level 1- inclui suporte a XML e HTML Level 2- permite o uso de Namespaces, provê API mais sofisticada com eventos e CSS Level 3- suporte avançado a Namespaces, eventos de User interface, DTD, XML Schema, Xpath, XSLT

134 InfoView Exemplo pending Silver Show Saddle, 16 inch Premium Cinch pending Winter Blanket (78 inch) 20 10

135 InfoView Exemplo (cont)

136 InfoView Tipos básicos de nodes Document Element Attribute Text

137 InfoView DOM Introdução DOM tree Cada node representa um elemento, atributo, etc. Oi Marta! Node criado para elemento message Elemento message tem element child node: elemento body Elemento body tem text child node: Oi Marta!" Atributos from e to também têm nodes na árvore

138 InfoView Implementações de DOM DOM-based parsers Microsoft msxml Sun Microsystem JAXP

139 InfoView DOM: classes e interfaces.

140 InfoView Alguns métodos de Document

141 InfoView Métodos Node

142 InfoView Alguns tipos de node

143 InfoView Métodos de Element

144 InfoView Parsing um arquivo XML num documento Processo em 3 passos 1. Criar o DocumentBuilderFactory. Este objeto criará o DocumentBuilder. 2. Criar o DocumentBuilder. O DocumentBuilder fará o atual parsing criar o objeto Document. 3. Fazer o parsing do arquivo para criar o objeto Document.

145 InfoView Exemplo de aplicação básica import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; import org.w3c.dom.Document; public class OrderProcessor { public static void main (String args[]) { File docFile = new File("orders.xml"); Document doc = null; try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(docFile); } catch (Exception e) { System.out.print("Problem parsing the file."); }

146 InfoView Ex de aplicação básica import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; import org.w3c.dom.Document; import org.w3c.dom.Element; public class OrderProcessor {... System.exit(1); } //Passo 1: obtém o elemento raiz (root) Element root = doc.getDocumentElement(); System.out.println("The root element is " + root.getNodeName()); }

147 InfoView Ex de aplicação básica - Obtendo um node filho... import org.w3c.dom.NodeList;... //PASSO 1: obtém o elemento raiz(root) Element root = doc.getDocumentElement(); System.out.println("The root element is "+root.getNodeName()); //PASSO 2: obtém os filhos (children) NodeList children = root.getChildNodes(); System.out.println("There are "+children.getLength()+" nodes in this document."); }

148 InfoView Usando getFirstChild() e getNextSibling()... import org.w3c.dom.Node;... //PASSO 3: processando os filhos (children) for (Node child = root.getFirstChild(); child != null; child = child.getNextSibling()) { System.out.println(child.getNodeName()+" = "+child.getNodeValue()); }...

149 InfoView Múltiplos filhos... public class OrderProcessor { private static void stepThrough (Node start) { System.out.println(start.getNodeName()+" = "+start.getNodeValue()); for (Node child = start.getFirstChild(); child != null;child = child.getNextSibling()) { stepThrough(child); } public static void main (String args[]) { File docFile = new File("orders.xml");... System.out.println("There are "+children.getLength() +" nodes in this document."); //PASSO 4: fazendo recursividade stepThrough(root); }

150 InfoView Resultado:

151 InfoView Manipulando Atributos... import org.w3c.dom.NamedNodeMap;... private static void stepThroughAll (Node start) { System.out.println(start.getNodeName()+" = "+start.getNodeValue()); if (start.getNodeType() == start.ELEMENT_NODE) { NamedNodeMap startAttr = start.getAttributes(); for (int i = 0; i < startAttr.getLength(); i++) { Node attr = startAttr.item(i); System.out.println(" Attribute: "+ attr.getNodeName() +" = "+attr.getNodeValue()); } for (Node child = start.getFirstChild(); child != null; child = child.getNextSibling()) { stepThroughAll(child); }

152 InfoView Manipulando Atributos

153 InfoView Edição de documentos XML Existem métodos para adicionar nodes, remover nodes, mudar valores de nodes Consulte a API!

154 InfoView SAX Simple API for XML Outro método para acessar o conteúdo de documentos XML. Desenvolvido por membros da XML-DEV mailing-list (não é da W3C) Usa um modelo baseado em eventos Notificações (eventos) ocorrem à medida em que o documento é analizado (parsed)

155 InfoView SAX-based Parsers SAX-based parsers Disponível em várias LPs: e.g., Java, Python, C++, etc.

156 InfoView Eventos SAX parser Invoca certos métodos quando eventos ocorrem Programadores devem fazer overriding destes métodos para processar os dados

157 InfoView Métodos invocados pelo SAX parser

158 InfoView Como SAX funciona? Dado o documento XML abaixo: UNIX color SAX gera os seguintes EVENTOS: Start document Start element (samples) Characters (white space) Start element (server) Characters (UNIX) End element (server) Characters (white space) Start element (monitor) Characters (color) End element (monitor) Characters (white space) End element (samples)

159 InfoView Como SAX funciona? Processamento em SAX involve os seguintes passos 1. Criar um event handler 2. Criar o SAX parser 3. Associar o event handler ao parser criado 4. Fazer o parsing do documento, enviando cada evento ao event handler.

160 InfoView Exemplo: Uma pesquisa de opinião A B A D B C A D A A C A D C

161 InfoView Criando um event handler import org.xml.sax.helpers.DefaultHandler; public class SurveyReader extends DefaultHandler { public SurveyReader() { System.out.println("Object Created."); } public void showEvent(String name) { System.out.println("Hello, "+name+"!"); } public static void main (String args[]) { SurveyReader reader = new SurveyReader(); reader.showEvent(Nick"); }

162 InfoView Criando o SAX parser // Exemplo usando JAXP import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.XMLReader; public class SurveyReader extends DefaultHandler { public SurveyReader() { } public static void main (String args[]) { XMLReader xmlReader = null; try { SAXParserFactory spfactory = SAXParserFactory.newInstance(); SAXParser saxParser = spfactory.newSAXParser(); xmlReader = saxParser.getXMLReader(); } catch (Exception e) { System.err.println(e); System.exit(1); }

163 InfoView Associando o event handler ao parser... xmlReader = saxParser.getXMLReader(); xmlReader.setContentHandler(new SurveyReader()); } catch (Exception e) {...

164 InfoView Parsing os dados... import org.xml.sax.InputSource;... xmlReader = saxParser.getXMLReader(); xmlReader.setContentHandler(new SurveyReader()); InputSource source = new InputSource("surveys.xml"); xmlReader.parse(source); } catch (Exception e) {... Pronto! Falta apenas definir os eventos...

165 InfoView Criando um ErrorHandler... import org.xml.sax.SAXParseException; public class SurveyReader extends DefaultHandler { public SurveyReader() { } public void error (SAXParseException e) { System.out.println("Error parsing the file: "+e.getMessage()); } public void warning (SAXParseException e) { System.out.println("Problem parsing the file: "+e.getMessage()); } public void fatalError (SAXParseException e) { System.out.println("Error parsing the file: "+e.getMessage()); System.out.println("Cannot continue."); System.exit(1); } public static void main (String args[]) {...

166 InfoView Associando o ErrorHandler... xmlReader.setContentHandler(new SurveyReader()); xmlReader.setErrorHandler(new SurveyReader()); InputSource source = new InputSource("surveys.xml");...

167 InfoView Eventos: startDocument()... import org.xml.sax.SAXException; public class SurveyReader extends DefaultHandler {... public void fatalError (SAXParseException e) { System.out.println("Error parsing " + "the file: "+e.getMessage()); System.out.println("Cannot continue."); System.exit(1); } public void startDocument() throws SAXException { System.out.println("Tallying survey results..."); } public static void main (String args[]) {...

168 InfoView Eventos: startElement()... import org.xml.sax.Attributes; public class SurveyReader extends DefaultHandler {... public void startDocument() throws SAXException { System.out.println("Tallying survey results..."); } public void startElement( String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { System.out.print("Start element: "); System.out.println(localName); } public static void main (String args[]) { … }

169 InfoView startElement(): pegando atributos... public void startElement( String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { System.out.print("Start element: "); System.out.println(localName); for (int att = 0; att < atts.getLength(); att++) { String attName = atts.getLocalName(att); System.out.println(" " + attName + ": " + atts.getValue(attName)); }...

170 InfoView Obtendo Dados: characters() … // ch inclui o documento inteiro public void characters(char[] ch, int start, int length) throws SAXException { if (thisElement == "question") { printIndent(4); System.out.print(thisQuestion + ": "); System.out.println(new String(ch, start, length)); }...

171 InfoView Obtendo Dados: characters()

172 InfoView Obtendo Dados: characters() (completo)... public void printIndent(int indentSize) { for (int s = 0; s < indentSize; s++) { System.out.print(" "); } String thisQuestion = ""; String thisElement = ""; public void startElement( String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { if (localName == "response") { System.out.println("User: " + atts.getValue("username")); } else if (localName == "question") { thisQuestion = atts.getValue("subject"); } thisElement = localName; } public void endElement( String namespaceURI, String localName, String qName) throws SAXException { thisQuestion = ""; thisElement = ""; } public void characters(char[] ch, int start, int length) throws SAXException { if (thisElement == "question") { printIndent(4); System.out.print(thisQuestion + ": "); System.out.println(new String(ch, start, length)); }...

173 InfoView SAX versus DOM DOM Modelo baseado em árvore armazena o documento inteiro numa hierarquia de document nodes Dados são acessados rapidamente Provê facilidades para adicionar e remover nodes SAX Invoca métodos quando markup (tag) é encontrada Melhor performance do que DOM Menos overhead de memória do que DOM Tipicamente usado para ler documentos (não para modificá-los)

174 InfoView XSL - eXtensible Stylesheet Language

175 InfoView XSL - Motivação Vantagens de separar apresentação de conteúdo: Múltiplos formatos de saída: tamanhos diferentes, mídias diferentes (papel, online), dispositivos diferentes (PDA, celular, PC) Interface voltada para usuário (ex.: acessabilidade), cores, fontes, etc. Uso de estilos padrões Liberdade do autor não se preocupar com apresentação, que será tratada depois por um profissional.

176 InfoView Opções para mostrar XML

177 InfoView O que faz uma folha de estilo? Especifica a apresentação de XML em duas categorias: Uma transformação opcional do documento de entrada em outra estrutura Uma descrição de como apresentar a informação transformada

178 InfoView O que faz um folha de estilo? geração de texto supressão de conteúdo mover texto duplicar texto ordenação transformações mais complexas que computam nova informação baseada na informação existente.

179 InfoView Revisão de CSS CSS - Cascade Style Sheet Define o estilo de um documento para apresentação Pode ser inline ou externa ao documento Precedência de estilos: Autor > Usuário > Web Browser

180 InfoView External Style Sheets Contidas num arquivo.css Único style sheet usado por múltiplas páginas Usado com o elemento link

181 InfoView Exemplo de um CSS /* styles.css */ /* An external stylesheet */ a { text-decoration: underline; color: red; background-color: #ccffcc } li em { color: red; font-weight: bold} ul { margin-left: 2cm } Exemplo de CSS

182 InfoView XSL - Princípios gerais Como CSS, funcionamento a base de regras CSS não modifica a estrutura de um documento, XSL sim XSL utiliza a sintaxe XML

183 InfoView XSL - Histórico XML derivada de SGML Padronizada pelo W3C XSL derivada de DSSSL (Document Style Semantics and Specification Language) Primeira proposta formal em 1997 pela W3C (já continha conceitos de XSLT, como uso de templates) Novembro de 1999 XSLT tornou-se uma recomendação da W3C Última versão de XSL: Outubro de 2001 (incluindo XSL-FO)

184 InfoView Componentes de XSL XSL consiste logicamente de 3 componentes: XPath: XML Path Language-- linguagem para referenciar partes específicas de um documento XML XSLT: XSL Transformations-- linguagem para descrever como transformar um documento XML (representado como uma árvore) em outro XSL-FO: uma descrição de um conjunto de Formatting Objects e Formatting Properties

185 InfoView XSLT - Características Linguagem declarativa Descreve a transformação desejada, ao invés de prover uma sequência de instruções procedurais XSLT é essencialmente uma ferramenta para transformar documentos XML XSLT manipula árvores Uso de XSL Namespaces - O W3C provê um namespace para tags XSL

186 InfoView XSLT - Características Processadores XSLT Aplicam um stylesheet XSLT a um documento origem XML e produz um documento resultado. Tratam árvores Exemplos de processadores: Saxon, xt, MSXML3, Xalan (Apache) Web browsers já trazem tal processador sobretudo IE 6.0 e Netscape 6.0

187 InfoView XSLT - Estrutura de uma folha XSL Uma folha XSL é um conjunto de regras Uma regra associa um seletor a uma forma ou modelo O seletor define a estrutura a qual pode se aplicar esta regra A forma define a estrutura da sub-árvore gerada quando da ativação da regra Se várias regras se aplicam a um elemento, a mais específica é executada

188 188 XSLT - Características Elemento raiz de um documento XSL é ou corpo do template … corpo do template Documento XSL: Cabeçalho XML + ou + Conjunto de regras de template

189 InfoView XSLT - Características O corpo das regras de template é constituído por: Expressões XPath Elementos XSLT Funções XSLT e XPath Permite manipular partes de um documento Duas formas de utilizar um arquivo xsl: Através de uma linha de comando, que referencia os documentos envolvidos na transformação (p.e, o xml origem, o html resultado e o xslt) Incluindo uma referência no próprio arquivo xml

190 InfoView Bem-vindo ao InfoView 2002! Saudacao.xml Saudação de Hoje Bem-vindo ao InfoView 2002! Saudacao.html

191 InfoView Saudação de Hoje Saudacao.xsl Linha de comando para transformar Saudacao.xml em Saudacao.html via Saudacao.xsl: C:>saxon Saudacao.xml Saudacao.xsl > Saudacao.html

192 InfoView Bem-vindo ao InfoView 2002! Saudacao.xml Inclusão de uma referência ao arquivo xsl no próprio arquivo xml:

193 InfoView Exemplo 2 Stylesheet que transforma elementos e para HTML:

194 InfoView Exemplo 2(cont) Com a stylesheet anterior, o documento XML: Isto é um teste. seria transformado em: Isto é um teste.

195 InfoView Exemplo 3: Texto do capitulo Introducao Texto do capitulo XML XSL HTML

196 InfoView Templates A maioria dos templates têm a seguinte forma: The elemento é um template O match pattern determina onde este template se aplica Elementos XSLT vêm do XSL namespace

197 InfoView XSLT – Expressões XPath Contrutores sintáticos Chamadas de função - pode-se chamar funções embutidas ou definidas em XSLT concat() calculaDesconto() not(isbn) $ - referencia uma variável ou um parâmetro $X $ALPHA or, and - representa expressões booleanas or e and, respectivamente $x = 5 or $x = 10$x > 3 and $x < 8

198 InfoView Xpath - Exemplo de patterns (1) para associa todos filhos no contexto corrente para/emphasis associa com todos elementos que têm um pai / associa com a raiz do documento para//emphasis associa com todos elementos que têm um ancestral section/para[1] associa o primeiro filho de todos os filhos no contexto corrente //title associa todos elementos em qualquer lugar no documento.//title associa todos elementos que são descendentes do contexto corrente

199 InfoView XPath- Exemplo de patterns (2) section/*/note associa elementos que tenham como avós. associa elementos que têm um atributo "symbol" associa elementos que têm um atributo "symbol" com valor "XXXX" emphasis|strong associa elementos ou

200 InfoView XSLT - Elementos Elementos XSLT possuem sintaxe e semântica bem definidos Existem muitos elementos pré-definidos no namespace XSLT e que são interpretados por processadores XSLT Nem todos os elementos XSLT estão disponíveis para todos os processadores XSLT Forma:

201 InfoView XSLT - Elementos - Empire Burlesque Bob Dylan USA Columbia Hide your heart Bonnie Tyler UK CBS Records Exemplo Base de XML:

202 InfoView XSLT - Elementos Contém regras que serão aplicadas a um nó específico Possui o atributo match, que determina à qual elemento XML, a regra deve ser aplicada. É usado para selecionar o valor de um elemento XML e adicioná-lo à saída da transformação Possui o atributo select, que contém uma expressão Xpath que calcula o valor a ser adicionado ao documento resultado

203 InfoView My CD Collection Title Artist -

204 InfoView Resultado

205 InfoView XSLT - Elementos Permite a construção de loops Possui o atributo select, que contém uma expressão Xpath que vai determinar sobre que elemento será realizado o loop É usado para ordenar a saída Possui o atributo select, que indica qual elemento XML ordenar Possui o atributo order, que indica o tipo da ordenação: ascending ou descending.

206 InfoView My CD Collection Title Artist

207 InfoView Resultado

208 InfoView XSLT - Elementos Aplica um conteúdo apenas se uma condição especificada for verdadeira Possui o atributo test, que contém a expressão a ser avaliada conteúdo...

209 InfoView My CD Collection Title Artist

210 InfoView XSLT - Elementos

211 InfoView XSLT - Elementos É usado para adicionar atributos aos elementos cria um elemento (node) na saída

212 InfoView XSLT - Elementos Cria uma cópia do nó corrente do documento origem para o documento destino –Cria uma cópia do nó corrente (inclusive os nós filhos e atributos)

213 InfoView Mais popular na Inglaterra 431 Mais popular nos EUA 123 Mais popular no Brasil Exemplo: Seja o DB XML:

214 InfoView match elemento e sportes e aplica os templates aos nodes filhos esp ortes Use o atributo match para selecionar a raiz do documento XML Cria elemento titulo Cria atributo id para elemento titulo Cria comentário com o conteúdo do elemento para Exemplo (cont): XSL

215 InfoView Mais popular na Inglaterra Mais popular nos EUA Mais popular no Brasil Resultado produzido

216 InfoView XSLT - Elementos Elemento que define parâmetros Possui o atributo name para assinalar o nome do parâmetro Possui o atributo select, que armazena o valor do parâmetro Elemento que chama um determinado template Possui o atributo name para assinalar o nome do template

217 InfoView Elemento que define os valores dos parâmetros quando da chamada de um template Possui o atributo name para assinalar o nome do parâmetro Possui o atributo select, que armazena o valor do parâmetro Elemento usado para declarar variáveis Possui o atributo name para assinalar o nome da variável Possui o atributo select, que armazena o valor do variável XSLT - Elementos

218 InfoView XSLT - Elementos

219 InfoView XSLT - Elementos Elemento usado para escrever texto na saída.

220 InfoView XSLT - Funções Juntamente com XPath e os elementos XSLT, formam o core XSLT Em um stylesheet XSLT podem ser usadas dois tipos de funções built-in: Funções XPath Funções XSLT Existem ainda as funções que podem ser definidas pelo elemento XSLT function f1() { return Funcao 1; }

221 InfoView XSLT - Funções format-number() É usada para converter números em strings de acordo com algum padrão de formato format-number(value, format) => string > > generate-id() Gera um string, na forma de um nome XML, que unicamente identifica um nó. generate-id(nó) => string o código retornado depende do XSLT processor > >

222 InfoView XSLT - Funções current() Retorna o nó corrente current() => conjunto de nós > document() Retorna o nó raiz de um documento XML externo document(uri) => nó >

223 InfoView XSLT - Funções id() Retorna o nó com um determinado valor para seu atributo ID id(value) => nó > element-available() É usada para testar se um determinada instrução XSLT está disponível para uso. Element-available(name) => boolean >

224 InfoView XSLT - Funções count(arg1) retorna o número de nodes presentes no conjunto de nós passados como argumento sum(arg1) calcula a soma de um conjunto de valores numéricos contidos nos nodes do conjunto de nodes passados como argumento contains(arg1, arg2) testa se arg1 contém arg2 como substring é case sensitive Ex: contains (Paris, A) retorna false

225 InfoView XSLT - Exemplo Completo (Doc1 – Documento Origem XML)...

226 InfoView XSLT - Exemplo Completo (Doc1 – Documento Resultado XML)

227 InfoView XSLT - Exemplo Completo (Documento XSLT para conversão Doc1 => Doc2)

228 InfoView XSL: Extensible Stylesheet Language Formatting Objects Formatting objects Usado para formatar documentos XML para apresentação Tipicamente usado quando o resultado da transformção é para mídia impressa livros, revistas, encartes, etc. FOP Ferramenta em Java da Apache Transforma documentos XSL que contêm formatting objects Download em xml.apache.org/fop

229 InfoView XSLFO Exemplos de ferramentas - FOP para PDF - TeX para PDF - XSLFO para RTF - browser XML que usa FOP

230 InfoView Prefácio Este é um documento simples de teste. Ele mostra uma árvore fo-result parcial (sem usar page layout).... Exemplo

231 InfoView Exemplo

233 InfoView fonte margens e espaçamento bordas alinhamento horizontal/justification endentação dentre outros... Propriedades básicas

234 InfoView Exemplo Final

235 InfoView Exemplo (cont)

236 InfoView Consulta a dados semi-estruturados

237 InfoView Requisitos desejáveis (Maier 98) Expressividade linguagem de consulta ao estilo SQL possibilitar a restruturação de dados semi-estruturados Semântica precisa muito importante para XML Composição o resultado de uma consulta deve poder ser utilizado dentro de uma outra consulta Consulta ao esquema visando otimização Facilitar a geração automática de consultas Consulta

238 InfoView Expressões de caminho (Path expressions) Expressões que permitem navegar no grafo de dados Expressões de caminho simples sequências de labels exemplos root.pessoas {&p1,&p2,&p3} root.pessoas.filhos {&p2,&p3} semântica o resultado de uma expressão de caminho r.l1. ….ln, onde l1,…,ln são os labels e r um objeto, é o conjunto de nodos do grafo acessíveis de r por um caminho do grafo tal que os arcos percorridos passam sucessivamente pelos labels l1,…,ln.

239 InfoView Expressões de caminho Expressões de caminho generalizadas Idéia: além de especificar completamente um caminho, permite exprimir restrições (constraints) sobre o caminho Utilização de expressões regulares Exemplos _ é um caracter coringa que designa um label qualquer (pessoa|estudante)._.idade As expressões de caminho definidas até o presente retornam os conjuntos de objetos e não de dados semi-estruturados Consulta

240 InfoView Linguagem de Consulta X-Query

241 InfoView XQuery Baseda em Quilt (que é baseda em XML-QL) XML Query data model

242 InfoView FLWR (Flower) Expressions FOR... LET... WHERE... RETURN...

243 InfoView XQuery Encontre os títulos dos livros publicados após 1995: FOR $x IN document("bib.xml") /bib/book WHERE $x/year > 1995 RETURN $x/title FOR $x IN document("bib.xml") /bib/book WHERE $x/year > 1995 RETURN $x/title Resultado: abc def ghi

244 InfoView XQuery Para cada autor de um livro publicado pela Morgan Kaufmann, listar os livros publicados: FOR $a IN distinct( document("bib.xml") /bib/book[publisher=Morgan Kaufmann]/author) RETURN $a, FOR $t IN /bib/book[author=$a]/title RETURN $t FOR $a IN distinct( document("bib.xml") /bib/book[publisher=Morgan Kaufmann]/author) RETURN $a, FOR $t IN /bib/book[author=$a]/title RETURN $t distinct = elimina duplicatas

245 InfoView XQuery Resultado: Jones abc def Smith ghi

246 InfoView XQuery FOR $x in expr -- liga $x a cada valor na lista expr LET $x = expr -- liga $x à inteira lista expr Usado para subexpressões comuns e para agregações

247 InfoView XQuery count = função (aggregate) que retorna o número de elementos FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p

248 InfoView XQuery Encontre os livros cujos preços são maiores do que a média de preços: FOR $b in document("bib.xml") /bib/book LET $a=avg( document("bib.xml") /bib/book/price) WHERE $b/price > $a RETURN $b FOR $b in document("bib.xml") /bib/book LET $a=avg( document("bib.xml") /bib/book/price) WHERE $b/price > $a RETURN $b

249 InfoView XQuery Sumário: FOR-LET-WHERE-RETURN = FLWR FOR/LET Clauses WHERE Clause RETURN Clause Lista de tuplas Instância do modelo de dados Xquery

250 InfoView FOR versus LET FOR liga variáveis nodo iteration LET liga variáveis coleção one value

251 InfoView FOR versus LET FOR $x IN document("bib.xml") /bib/book RETURN $x FOR $x IN document("bib.xml") /bib/book RETURN $x Retorna:... LET $x IN document("bib.xml") /bib/book RETURN $x LET $x IN document("bib.xml") /bib/book RETURN $x Retorna:...

252 InfoView Coleções em XQuery Conjuntos e Bags /bib/book/author = uma coleção do tipo Bag Distinct(/bib/book/author) = uma coleção do tipo conjunto (Set) LET $a = /bib/book $a é uma coleção $b/author uma coleção (vários autores...) RETURN $b/author Retorna:...

253 InfoView Ordenação em XQuery FOR $p IN distinct(document("bib.xml")//publisher) RETURN $p/text(), FOR $b IN document("bib.xml")//book[publisher = $p] RETURN $b/title, $b/price SORTBY(price DESCENDING) SORTBY(name) FOR $p IN distinct(document("bib.xml")//publisher) RETURN $p/text(), FOR $b IN document("bib.xml")//book[publisher = $p] RETURN $b/title, $b/price SORTBY(price DESCENDING) SORTBY(name) Argumentos de sort referem-se ao namespace da cláusula RETURN e não da cláusula FOR

254 InfoView If-Then-Else FOR $h IN //holding RETURN $h/title, IF = "Journal" THEN $h/editor ELSE $h/author SORTBY (title) FOR $h IN //holding RETURN $h/title, IF = "Journal" THEN $h/editor ELSE $h/author SORTBY (title)

255 InfoView Quantificador Existencial FOR $b IN //book WHERE SOME $p IN $b//para SATISFIES contains($p, "sailing") AND contains($p, "windsurfing") RETURN $b/title FOR $b IN //book WHERE SOME $p IN $b//para SATISFIES contains($p, "sailing") AND contains($p, "windsurfing") RETURN $b/title

256 InfoView Quantificador Universal FOR $b IN //book WHERE EVERY $p IN $b//para SATISFIES contains($p, "sailing") RETURN $b/title FOR $b IN //book WHERE EVERY $p IN $b//para SATISFIES contains($p, "sailing") RETURN $b/title


Carregar ppt "InfoView20021 XML – eXtensible Markup Language Prof. Dr. Cláudio Baptista UFCG/DSC/SINBAD"

Apresentações semelhantes


Anúncios Google