140
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009 XML: Utilização, validação e transformação Ricardo Terra rterrabh [at] gmail.com XML 1

Apostila XML, DTD, XSD e XSLT

Embed Size (px)

Citation preview

Page 1: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

XML: Utilização, validação e transformação

Ricardo Terra rterrabh [at] gmail.com

XML 1

Page 2: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

CV

Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868

Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1)

Background Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos)

Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)

XML 2

Page 3: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

Sumário

1.  Introdução à Linguagem XML

2.  Sintaxe XML

3.  Esquemas de validação (DTD e XML Schema)

4.  XSLT

3 XML

Page 4: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1. INTRODUÇÃO À LINGUAGEM XML

4 XML

Page 5: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1.1. W3C

§  World Wide Web Consortium (W3C) é um consórcio de várias empresas mundiais de tecnologia (aproximadamente 500 empresas) fundada por Tim Berners Lee no ano de 1994 com o objetivo de levar a Internet ao seu potencial máximo, através de desenvolvimento de protocolos comuns e fóruns abertos que promovem a sua evolução e garantem a sua interoperabilidade.

§  O W3C desenvolve tecnologias, ou melhor, padrões para a criação e a interpretação dos conteúdos para a Internet. Sites desenvolvidos segundo esses padrões, podem ser acessados e visualizados por qualquer pessoa ou tecnologia independente do hardware ou do software utilizados, por exemplo, PC com Linux, PDA com Windows CE, entre outros exemplos.

5 XML

Page 6: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009 XML

§  Apesar do W3C não ser muito conhecido no Brasil, seus padrões como Hyper Text Markup Language (HTML), Extensible Hypertext Markup Language (XHTML), Extensible Markup Language (XML) e Cascading Style Sheets (CSS), são muito populares, contudo em muitos casos são usados de forma errônea devido ao não conhecimento da especificação.

§  É da responsabilidade do desenvolvedor Web respeitar e seguir os padrões deste órgão, pois se assim não fizer, estará impondo barreiras tecnológicas a diversas pessoas e, com isto, desestimulando e até mesmo impedindo o acesso a suas páginas.

1.1. W3C

6

Page 7: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1.2. XML

§  1.2.1. Conceitos

§  1.2.2. Motivação

§  1.2.3. Características

§  1.2.4. Vantagens e Desvantagens

7 XML

Page 8: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1.2.1. Conceitos

§  Extensible Markup Language (XML) se tornou uma recomendação da W3C no dia 10 de fevereiro de 1998 cujo objetivo seria a geração de linguagens de marcação para necessidades especiais.

§  O W3C começou a trabalhar em um projeto de uma linguagem de marcação que combinasse a flexibilidade do SGML (Standard Generalized Markup Language) com a simplicidade do HTML. O principio do projeto era criar uma linguagem que pudesse ser lida por software, e se integrar com as demais linguagens. Sua filosofia seria incorporada por vários princípios importantes:

8 XML

Page 9: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1.2.1. Conceitos

§  separação do conteúdo e da formatação: é uma linguagem cujo aspecto importante é o conteúdo. A formatação poderia ser realizada por uma outra linguagem.

§  possibilidade de criação de tags sem limitação: o uso de tags pode ser altamente utilizado, sem nenhuma limitação, contudo a estrutura deve ser respeitada e seguida.

§  legibilidade tanto pelas pessoas quanto por máquinas: a estrutura do XML é bem completa e ilimitada e, ao mesmo tempo, simples tornando de fácil leitura por pessoas.

§  criação de arquivos para validação de estrutura: arquivos de validação, a serem visto posteriormente neste estudo, permitem verificar se um XML além de bem formado, é também válido de acordo com uma estrutura.

§  interligação: sua utilização permite interligar SGBDs (Sistema de Gerenciamento de Banco de Dados) distintos.

§  simplicidade

Existem linguagens baseadas em XML como RDF, SMIL, MathML, NCL, XSIL e SVG. O SVG, por exemplo, é um formato gráfico vetorial (graphics scalar vector) e o MathML é uma linguagem de marcação desenvolvida para o aspecto matemático.

9 XML

Page 10: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1.2.2. Motivação

§  Maioria dos formatos de troca de dados eram: §  proprietários (custo); §  necessidades específicas (solução específica); §  binários (diferentes aplicações e plataformas).

10 XML

Page 11: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1.2.3. Características

§  Provê uma forma baseada em texto: §  caractere é sua unidade principal; §  aplica uma estrutura baseada em árvore para armazenar a informação; §  facilidade na edição e manutenção.

§  Foco na informação. §  Simplicidade e legibilidade. §  Criação de marcações sem limitação.

11 XML

Page 12: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1.2.4. Vantagens e Desvantagens

§  Dentre as principais vantagens, destacam-se: §  Formato legível para pessoas e máquinas. §  Suporta UNICODE, permitindo que quase qualquer linguagem escrita possa ser

comunicada. §  Representa a maioria das estruturas de dados da computação: registros, listas e

árvores. §  Seu próprio formato descreve a estrutura e os nomes dos campos.

§  Dentre algumas desvantagens, destacam-se:

§  Sintaxe cheia e redundante. §  A redundância pode afetar a eficiência através do armazenamento alto e do

custo de transmissão. §  A interpretação não suporta diretamente tipos de dados. §  Mapear o XML em um paradigma relacional ou orientado a objetos é uma tarefa

custosa, entretanto o inverso é fácil. §  Algumas pessoas insistem em dizer que o XML pode ser utilizado para

armazenamento de dados somente se o arquivo é de baixo volume; Todavia, este informação não é verdadeira, grandes estruturas XML podem ser acessadas muito rapidamente.

12 XML

Page 13: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

1.3. XML x HTML

§  Tanto o XML quanto o HTML são linguagens derivadas do SGML. O que alguns pensam é que o XML foi criado com o propósito de substituir o HTML. Isto não é verdade e, antes de comentarmos o porquê, falaremos um pouco sobre o HTML.

§  O HTML é uma linguagem de marcação cujo objetivo é produzir páginas na internet. Suas tags consistem em uma marca de início e outra de término, suas marca de início é simbolizada por < e sua marca de término por />.

§  O XML funciona como o HTML, possui tags de início e término, utiliza os mesmos símbolos, todavia não possui a maior característica do HTML: tags pré-estabelecidas. O XML é amplo, as tags são ilimitadas e qualquer tag pode ser criada desde que a estrutura seja mantida.

§  Enquanto o HTML é mais flexível, permitindo que não se feche algumas das tags, o XML é altamente estruturado. Isto indica que no XML, ao criar uma tag deve-se obrigatoriamente fechá-la, caso contrário, sua estrutura não será validada e o arquivo estará inválido; problema que não ocorre com o HTML no quais algumas de suas tags geralmente não são fechadas ou possuem alguma flexibilidade de estruturação.

13 XML

Page 14: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2. SINTAXE XML

14 XML

Page 15: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.1. Sintaxe HTML

15 XML

Page 16: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.2. Partes do documento

Um documento XML bem-formado compreende três partes: §  Prólogo: Opcional. §  Corpo: Contém um ou mais elementos, na forma de uma árvore hierárquica. §  Epílogo: Opcional.

16 XML

Page 17: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.2.1. Prólogo

Um documento XML começa com um prólogo. O prólogo é usado para sinalizar o começo dos dados XML, descrever seu método de codificação de caractere,e apresentar algumas outras dicas de configuração ao parser XML. O mais importante componente do prólogo é a declaração XML. Todos os documento XML podem (e devem) começar com uma única declaração XML. Apesar da declaração usar uma sintaxe similar a uma instrução de processamento, tecnicamento falando dentro dos termos da recomendação XML não se trata de uma instrução. Veja a sintaxe completa da declaração XML: <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>!

17 XML

Page 18: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.2.1. Prólogo

Os atributos definidos pela especificação XML 1.0: §  version à obrigatória; valor tem que ser "1.0"; este atributo permite o suporte de

futuras versões do XML. §  encoding à opcional. O valor tem que ser uma codificação de caractere legal,

como "UTF-8", "UTF-16" ou "ISO-8859-1" (a codificação de latin1). Todos os parses XML devem oferecer suporte a pelo menos UTF-8 e UTF-16.

§  standalone ! opcional. O valor tem que ser “yes” ou “no”; onde “yes“ significa que todas as declarações de entidade necessárias estão contidas no elemento, e “no” significa que um DTD externo é necessário.

18 XML

Page 19: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.3. Elementos

Os elementos são blocos de construção básicos de uma marcação XML. Eles podem conter outros elementos, dados de caractere, referência de caractere, referências de entidade, instruções de processamento, comentários e/ou seções de CDATA. Todos estes termos serão abordados. Os elementos são delimitados usando tags que consistem em nome de tipo de elemento fechada por um par de parênteses angulares (“< >”). Todo elemento deve conter uma tag inicial e outra tag final (que não pode ser esquecida como no HTML): <h1>Olá</h1> à válido. <br> à inválido. Deve ser: <br></br> Exceção única quando é um elemento sem conteúdo, onde o elemento é representado por um par de tags inicial/final, ou usando-se uma forma híbrida abreviada, a tag de elemento vazia. Ex: <br> à inválido. <br /> à válido. Uma vez que representam objetos discretos, os elementos podem ser considerados como “substantivos”.

19 XML

Page 20: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.4. Elementos do documento

20 XML

Page 21: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.5. Aninhamento de elementos

21 XML

Page 22: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.6. Atributos

22 XML

Page 23: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.7. Referências de caractere e entidade

23 XML

Page 24: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.7.1. Referências de caractere

24 XML

Page 25: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.7.2. Referências de entidade

25 XML

Page 26: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.8. Instruções de processamento

26 XML

Page 27: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.9. Comentário

27 XML

Page 28: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

2.10. Seções CDATA

28 XML

Page 29: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3. ESQUEMAS DE VALIDAÇÃO

29 XML

Page 30: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.1. Modelagem de dados

30 XML

Page 31: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.2. XML bem formado e válido

31 XML

Page 32: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.3. Esquemas de validação

32 XML

Page 33: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.3. Esquemas de validação

33 XML

Nós pensamos que tão logo XML Schemas serão utilizados na maioria das aplicações Web como uma substituição aos DTDs. Estas são algumas razões: ! XML Schemas são extensíveis para adições futuras. ! XML Schemas são mais ricos e mais úteis que os DTDs. ! XML Schemas são escritos em XML ! XML Schemas suportam tipos de dados ! XML Schemas suportam namespaces (INTRODUCTION TO XML SCHEMA, W3C, 2006. Tradução nossa).

O mais interessante do XML Schema é o suporte aos tipos de dados. O DTD

somente consegue validar se é um tipo binário (PCDATA) ou tipo alfanumérico (CDATA) enquanto o XML Schema possui vários tipos de dados o que o torna mais ricos e com validações mais úteis. Por ser escrito em formato XML pode ser transformado em outro XML Schema utilizando o XSLT conferindo a ele a extensibilidade citada pelo W3C. Observando a quantidade de novos recursos que o XML Schema oferece, conclui-se que o XML Schema sucederá o DTD em pouco tempo. Veremos na Figura 3, um exemplo demonstrando um XML vinculado a uma validação DTD e uma validação pelo XML Schema.

Page 34: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.3. Esquemas de validação

34 XML

Page 35: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.3. Esquemas de validação

35 XML

Page 36: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4. DTD

36 XML

Page 37: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.1. Declaração Interna

37 XML

Page 38: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.2. Declaração Externa

38 XML

Page 39: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.3. Blocos de Construção de Documento XML

39 XML

No ponto de vista do DTD, todos os documentos XML são formados pela os seguintes simples blocos de construção:

! Elementos Elementos são os principais blocos de construção de documentos. Como já foi visto, elementos pode conter texto, outros elementos ou, simplesmente, ser vazios. Exemplos: <body>body text in between</body> <message>some message in between</message>

! Atributos Atributos provêm informações extras sobre os elementos. Atributos são sempre inseridos dentro na tag inicial do elemento. Atributos sempre vem na forma de pares de nome/valor. O elemento “img” tem informação adicional, observe: <img src="computer.gif" /> O nome do elemento é “img”. O nome do atributo é “src”. O valor do atributo é "computer.gif". Partindo do pressuposto que o elemento é vazio, ele é fechado utilizando uma marcação híbrida de abertura/fechamento.

Page 40: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.3. Blocos de Construção de Documento XML

40 XML

! Entidades

Como já visto, entidades são variáveis usadas para definir texto comum.

! PCDATA PCDATA significa dados de caracteres a ser feito o parser. O texto sera examinado pelo parser para entidades e marcações. As marcações e entidades serão reconhecidas pelo parser.

! CDATA CDATA significa também dados de caractere. CDATA é um texto que NÃO será tratado pelo parser. Elementos e

entidades não serão tratados como elementos e entidades, respectivamente.

Page 41: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.4. Elementos

41 XML

Em DTD, a declaração de elementos possui uma sintaxe própria: <!ELEMENT element-name category>

ou <!ELEMENT element-name (element-content)>

! Elementos Vazios: são declarados utilizando a palavra-chave de

categoria EMPTY: <!ELEMENT element-name EMPTY> example: <!ELEMENT br EMPTY> XML example: <br />

Obs: Vale observar que a sintaxe <br></br> também é válida, mas a sintaxe de marcação híbrida é muito mais elegante.

Page 42: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.4. Elementos

42 XML

Page 43: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.4. Elementos

43 XML

Page 44: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.4. Elementos

44 XML

Page 45: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.4. Elementos

45 XML

Page 46: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.4. Elementos

46 XML

Page 47: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.4. Elementos

47 XML

Page 48: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.5. Atributos

48 XML

Page 49: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.5. Atributos

49 XML

Page 50: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.5. Atributos

50 XML

Page 51: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.5. Atributos

51 XML

Page 52: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.5. Atributos

52 XML

Page 53: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.5. Atributos

53 XML

Page 54: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.5. Atributos

54 XML

Page 55: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.4.6. Entidades

55 XML

Page 56: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5. XML Schema

56 XML

Existem algumas características do XML Schema que devem ser lembradas e nunca esquecidas:

! XML Schema também é um padrão W3C; ! XML Schema é um alternativa baseada em XML para o DTD; ! Um XML Schema, como o DTD, descreve a estrutura de um documento

XML; ! XML Schema também é conhecido como XML Schema Definition, o que é

faz com que sua extensão seja (XSD). ! XML Schema vem como sucessor do DTD, principalmente por:

o ser extensível; o ser mais rico e mais poderoso; o ser escrito em XML; o suportar tipos de dados; o suportar espaço de nomes (namespaces)

O nosso interesse não é dominar todo o XML Schema, pois o mesmo é muito

amplo. Nosso intuito é aprender a utilizá-lo visando os mais utilizados recursos da linguagem.

Page 57: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.1. Declaração

57 XML

Page 58: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.2. O elemento Schema

58 XML

Page 59: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.2. O elemento Schema

59 XML

Page 60: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.3. Referenciando um Schema em um XML

60 XML

Page 61: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.3. Referenciando um Schema em um XML

61 XML

Page 62: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

62 XML

Page 63: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

63 XML

Page 64: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

64 XML

Page 65: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

65 XML

Page 66: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

66 XML

Page 67: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

67 XML

Page 68: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

68 XML

Page 69: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

69 XML

Page 70: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

70 XML

Page 71: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

71 XML

Page 72: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

72 XML

Page 73: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

73 XML

Page 74: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

74 XML

Page 75: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

75 XML

Page 76: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

76 XML

Page 77: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

77 XML

Page 78: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.4. Elementos XSD Simples

78 XML

Page 79: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

79 XML

Page 80: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

80 XML

Page 81: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

81 XML

Page 82: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

82 XML

Page 83: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

83 XML

Page 84: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

84 XML

Page 85: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

85 XML

Page 86: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

86 XML

Page 87: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

87 XML

Page 88: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

88 XML

Page 89: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

89 XML

Page 90: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

90 XML

Page 91: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

91 XML

Page 92: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

92 XML

Page 93: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

93 XML

Page 94: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

94 XML

Page 95: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

95 XML

Page 96: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

96 XML

Page 97: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

97 XML

Page 98: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

98 XML

Page 99: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

99 XML

Page 100: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

100 XML

Page 101: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

3.5.5. Elementos XSD Complexos

101 XML

Page 102: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4. XSLT

102 XML

Page 103: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4. XSLT

103 XML

Page 104: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4. XSLT

104 XML

Page 105: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.1. XSLT e CSS

105 XML

Page 106: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.2. Características, objetivos e cenários aplicáveis

106 XML

Page 107: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.2. Características, objetivos e cenários aplicáveis

107 XML

! XSLT deve ser desenvolvida para ser livre de efeitos colaterais. Em outras palavras, XSLT é desenvolvida para que várias diferentes regras de estilo possam ser aplicadas simultaneamente. O maior impacto disto é que as variáveis não podem ser modificadas (static binding). Uma vez iniciada a variável, você não poderá alterar seu valor; se as variáveis pudessem ser alteradas, então o processamento de uma regra de estilo poderia gerar efeitos laterais, que impactaria outras regras de estilo.

XSLT é altamente influenciada pelo projeto de linguagens de programação funcional, tal como Lisp, Scheme e Haskell. Estas linguagens também possuem variáveis imutáveis como característica. Ao invés de definir regras como o XSLT, linguagens de programação funcional definem programas como uma série de funções, cada uma delas gera uma saída bem definida (livre de efeitos colaterais, com certeza) em resposta a uma entrada bem definida. O objetivo é executar as instruções de uma dada regra XSLT sem afetar a execução de qualquer outra regra. (TIDWELL, 2001, p. 03. Tradução nossa).

Page 108: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.2. Características, objetivos e cenários aplicáveis

108 XML

Page 109: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.2. Características, objetivos e cenários aplicáveis

109 XML

Acima observamos várias características e objetivos do XSLT. Estas informações são altamente relevantes, pois nos faz pensar na seguinte questão: Onde poderemos utilizar esta tecnologia? E, ainda a partir das idéias do Tidwell, cito:

! Seu website necessita entregar informações para uma variedade de dispositivos, isto é, computadores, celulares, notebooks, palmtops, entre outros dispositivos. Seria excelente disponibilizar estas informações em documentos estruturados e, então transformá-los em qualquer formato que necessite.

! Você necessita trocar informações de uma de suas empresas com outras, mas você utiliza diferentes sistemas de banco de dados. Seria excelente se pudesse definir um XML comum de formato de dado e, então transformá-lo no arquivo de importação que necessita (SQLs, comma-separated values , entre outros formatos de importação de dados existentes).

! Informação XML de um outro sistema deve ter sua estrutura modificada para que seja armazenada no sistema local.

! Sistemas como J2EE, .NET, Natural Web pode responder a uma requisição de um usuário com uma página XML e, este XML ser convertido em HTML na máquina-cliente.

Page 110: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.2. Características, objetivos e cenários aplicáveis

110 XML

Como pôde ser visto, existem vários cenários no qual a aplicação do XSLT é altamente apropriada. Estes vários cenários, na visão de Kay (2004) podem ser descritos simplesmente em dois cenários principais:

! Conversão de dados; ! Apresentação (publicação) de dados.

Em uma visão altamente superficial cujo propósito é expor o que será visto a

frente podemos definir como conversão de dados, toda situação em que você necessita de converter um XML em um outro XML, com as mesmas ou a grande maioria das informações em uma estrutura igual ou diferente para uma outra aplicação. Em contrapartida, podemos definir como apresentação de dados, toda situação em que você, a partir de um documento XML, necessite publicar seu conteúdo de uma forma mais apresentável, seja HTML, PDF ou até gráficos, músicas (MIDI), etc.

Page 111: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3. Prática do XSLT

111 XML

Page 112: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3. Prática do XSLT

112 XML

Page 113: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3. Prática do XSLT

113 XML

Page 114: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3. Prática do XSLT

114 XML

Page 115: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3. Prática do XSLT

115 XML

Page 116: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.1. Regras (Templates)

116 XML

Uma folha de estilos XSLT consiste em 1 ou mais grupo de regras chamados templates.

Cada template contém regras para serem aplicadas quando um nodo específico é encontrado.

! O elemento <xsl:template>

O elemento <xsl:template> é utilizado para construir templates.

• O atributo match é utilizado para associar um template com um elemento

XML. Este atributo também pode ser utilizado para definir um template para o documento XML inteiro. O valor deste atributo é uma expressão XPath (que não será abordada a fundo na disciplina), isto é, quando você disser match=”/”, indica o elemento raiz do documento.

Page 117: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.1. Regras (Templates)

117 XML

Page 118: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.2. O elemento <xsl:value-of>

118 XML

Page 119: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.2. O elemento <xsl:value-of>

119 XML

Page 120: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.3. O elemento <xsl:for-each>

120 XML

Page 121: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.3. O elemento <xsl:for-each>

121 XML

Page 122: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.3. O elemento <xsl:for-each>

122 XML

Page 123: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.3. O elemento <xsl:for-each>

123 XML

Page 124: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.4. O elemento <xsl:sort>

124 XML

Page 125: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.4. O elemento <xsl:sort>

125 XML

Page 126: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.5. O elemento <xsl:if>

126 XML

Page 127: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.5. O elemento <xsl:if>

127 XML

Page 128: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.5. O elemento <xsl:if>

128 XML

Page 129: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.6. O elemento <xsl:choose>

129 XML

Page 130: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.6. O elemento <xsl:choose>

130 XML

Page 131: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.6. O elemento <xsl:choose>

131 XML

A saída do campo departamento será de acordo com o seu valor, caso nenhum bata, será o valor do próprio documento XML, observe a saída:

Page 132: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.7. O elemento <xsl:apply-templates>

132 XML

Page 133: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.7. O elemento <xsl:apply-templates>

133 XML

Page 134: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.7. O elemento <xsl:apply-templates>

134 XML

Page 135: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.8. O elemento <xsl:output>

135 XML

Page 136: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.9. O elemento <xsl:variable>

136 XML

Page 137: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

4.3.9. O elemento <xsl:variable>

137 XML

Page 138: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

Bibliografia

§  ABOUT the World Wide Web Consortium, W3C. Disponível em: <http://www.w3.org/Consortium/>. Acesso em: 16 abr. 2006.

§  BOOLEAN, Wikipédia. Disponível em: <http://en.wikipedia.org/wiki/Boolean>. Acesso em: 11 jun. 2006.

§  BRAGANHOLO, Vanessa de Paula; HEUSER, Carlos A. XML Schema, RDF(S) e UML: uma comparação. Disponível em: <http://www.dcc.ufrj.br/~braganholo/ artigos/ideas2001.pdf >. Acesso em: 04 jun. 2006.

§  DUCHARME, Bob. XSLT. Rio de Janeiro: Ciência Moderna, 2002. §  EXTENSIBLE Markup Language (XML), W3C. Disponível em: <http://

www.w3.org/XML/>. Acesso em: 21 fev. 2006. §  FLAG: computing, Wikipédia. Disponível em: <http://en.wikipedia.org/ wiki/

Flag_(computing)>. Acesso em: 11 jun. 2006. §  HTML, Wikipédia. Disponível em: <http://pt.wikipedia.org/wiki/HTML/>. Acesso

em: 16 abr. 2006. §  HYPERTEXT Markup Language (HTML) Home Page, W3C. Disponível em:

<http://www.w3.org/MarkUp/>. Acesso em: 16 abr. 2006. §  INTRODUCTION TO DTD, W3C. Disponível em: <http://www.w3schools.com/

dtd/dtd_intro.asp>. Acesso em: 27 maio 2006.

138 XML

Page 139: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

Bibliografia

§  INTRODUCTION TO XML SCHEMA, W3C. Disponível em: <http://www.w3schools.com/schema/schema_intro.asp>. Acesso em: 21 maio 2006.

§  KAY, Michael. XSLT programmer’s reference. Birmingham: Wrox Press, 2000. §  KAY, Michael. XSLT 2.0 programmer’s reference. 3 ed. Indianapolis: Wiley

Publishing, 2004. §  MACORATTI, José Carlos. Conceitos básicos de modelagem de dados.

Disponível em: <http://www.macoratti.net/cbmd1.htm>. Acesso em: 27 maio 2006.

§  MYER, Tom. A really, really, really good introduction to XML. Disponível em: <http://www.sitepoint.com/article/really-good-introduction-xml>. Acesso em: 21 maio 2006.

§  NAMESP ACE: Computer science. Wikipédia. Disponível em: <http://en.wikipedia.org/wiki/Namespace_(computer_science)#XML>. Acesso em: 27 maio 2006.

§  REFSNES, Jan Egil. XML DTD: an introduction to XML document type definitions. Disponível em: <http://www.xmlfiles.com/dtd/default.asp>. Acesso em: 21 maio 2006.

§  SERIALIZATION, Wikipédia. Disponível em: <http://en.wikipedia.org/wiki/ Serialization>. Acesso em: 10 jun. 2006.

139 XML

Page 140: Apostila XML, DTD, XSD e XSLT

Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009

Bibliografia

§  SISTEMA DE GERENCIAMENTO de banco de dados, Wikipédia. Disponível em: <http://pt.wikipedia.org/wiki/SGBD>. Acesso em: 11 jun. 2006.

§  TIDWELL, Doug. XSLT. Sebastopol: O'Reilly Media, 2001. §  W3C, Wikipédia. Disponível em: <http://pt.wikipedia.org/wiki/W3C/>. Acesso em:

16 abr. 2006. §  XML, Wikipédia. Disponível em: <http://pt.wikipedia.org/wiki/XML/>. Acesso em:

16 abr. 2006. §  XML Path Language (XPath) 2.0, W3C, 03 nov. 2005. Disponível em: <http://

www.w3.org/TR/xpath20/>. Acesso em: 05 mar. 2006. §  XML Schema Part 0: Primer Second Edition, W3C, 28 out. 2004. Disponível em:

<http://www.w3.org/TR/xmlschema-0/>. Acesso em: 21 fev. 2006. §  XML TO XML WITH XSLT. Disponível em: <http://www.topxml.com/xslt

Stylesheets/xslt_XML_to_XML.asp>. Acesso em: 04 jun. 2006. §  XPATH Tutorial, W3Schools. Disponível em: <http://www.macoratti.net/

vb_xpath.htm>. Acesso em: 14 mar. 2006. §  XSL Transformations (XSLT) Version 2.0, W3C, 03 nov. 2005. Disponível em:

<http://www.w3.org/TR/xslt20/>. Acesso em: 21 fev. 2006.

140 XML