Módulo III
Introdução a XML
Prof. Ismael H F Santos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1
Ementa
Modulo III – XML
SGML - Standard Generalized Markup Language
XML - Extensible Markup Language
XML Validação
DTD x XML/Schema
XML Processing - XSLT
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 2
1
Bibliografia
Linguagem de Programação JAVA
Ismael H. F. Santos, Apostila UniverCidade, 2002
The Java Tutorial: A practical guide for programmers
Tutorial on-line: http://java.sun.com/docs/books/tutorial
Java in a Nutshell
David Flanagan, O´Reilly & Associates
Just Java 2
Mark C. Chan, Steven W. Griffith e Anthony F. Iasi, Makron
Books.
Java 1.2
Laura Lemay & Rogers Cadenhead, Editora Campos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 3
Livros
Core Java 2, Cay S. Horstmann, Gary Cornell
Volume 1 (Fundamentos)
Volume 2 (Características Avançadas)
Java: Como Programar, Deitel & Deitel
Thinking in Patterns with JAVA, Bruce Eckel
Gratuito. http://www.mindview.net/Books/TIJ/
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 4
2
POO-Java SGML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 5
SGML - Standard Generalized Markup
Language
ISO 8879 definido em 1986
Conceitos básicos:
separação entre conteúdo e apresentação de
documentos
conteúdo estruturado logicamente
informação específica à apresentação
objetivo principal do SGML é estruturar a
informação, lidando com conteúdo e estrutura
apresentação é feita usando outros
mecanismos (style sheets)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 6
3
SGML - Standard Generalized Markup
Language
Marcação descritiva
(documento pode ser
processado por
diferentes programas)
Documento tipado
(método padrão para
descrever a estrutura do
documento)
Independêcia de sistema
para representar o script
no qual o texto é escrito
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 7
SGML - Standard Generalized Markup
Language
Uso em larga escala:
HTML 2.0: especificado como aplicação SGML (1994)
Conteúdo:
elementos lógicos estruturados
hierarquicamente =>
Árvore do Documento
(Document Tree)
Processamento automatizado do documento
índice, lista de figuras, tabelas
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 8
4
SGML
<antologia>
Classe de documentos <poema><titulo>São demais os perigos desta
vida</titulo>
especificada através de <estrofe>
<linha>São demais os perigos desta vida</linha>
uma DTD - Document <linha>pra quem tem paixão</linha>
<linha>Principalmente quando uma lua chega de
repente</linha>
Type Definition <linha>e se deixa no céu como esquecida</linha>
</estrofe>
<estrofe>
os elementos de uma <linha>E se ao luar que atua desvairado</linha>
<linha>vem se unir uma música qualquer</linha>
classe de documentos e <linha>Aí, então, é preciso ter cuidado</linha>
<linha>porque deve andar perto uma mulher</linha>
seus atributos </estrofe>
<estrofe>
<linha>Uma mulher que é feita</linha>
as regras para combinar <linha>de música, luar e sentimento</linha>
<linha>E que a vida não quer de tão perfeita</linha>
esses elementos, </estrofe>
<estrofe>
especificando o <linha>Uma mulher que é como a própria
lua</linha>
conteúdo permitido para <linha>Tão linda que só espalha sofrimento</linha>
<linha>Tão cheia de pudor que vive nua</linha>
cada elemento </estrofe>
</poema>
<!-- mais poemas -->
</antologia> ( ... poema de Vinícius de Moraes )
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 9
SGML
DTD
<!ELEMENT antologia (poema+)>
<!ELEMENT poema (titulo?,estrofe+)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT estrofe (linha+)>
<!ELEMENT linha (#PCDATA)>
Exemplo de DTD de um livro:
<!ELEMENT book (author, heading, chapter+)>
<!ELEMENT chapter (heading, (paragraph|figure)*, section*)>
<!ELEMENT section (heading, (paragraph|figure)*)>
<!ELEMENT (author|heading) (#PCDATA)>
<!ELEMENT paragraph ((#PCDATA|reference)*)>
<!ELEMENT reference EMPTY>
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 10
5
SGML
Especificando atributos dos elementos
<!ATTRLIST (chapter|section) id CDATA #IMPLIED>
<!ATTRLIST reference id CDATA #REQUIRED type
(section|page) section>
Usando
<chapter id=“sgml”>
<heading>Standard Generalized Markup Language</heading>
<paragraph> ... </paragraph>
<section id=“content”>
<heading>Content and Presentation</heading>
<paragraph> ... </paragraph>
... in section <reference type=“section”
id=“content”></reference> on page <reference type=“page”
id=“content”></reference> bla bla bla ...
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 11
Parser SGML
Declaração SGML
delimitadores de
marcação
nomes reservados
(ELEMENT, ATTRLIST, ...)
tamanho máximo dos
nomes dos elementos
se delimitadores de
ínicio e fim podem ser
opcionais
• DTD
• Documento
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 12
6
POO-Java XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 13
XML – Extensible Markup Language
XML é um documento de Texto
Dois tipos de elementos
Marcação – Guarda a estrutura do documento
Dados – Informação propriamente dita
Uma maneira de representar informação
não é uma linguagem específica
não define vocabulário de comandos
não define uma gramática, apenas regras mínimas
Exemplo:
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 14
7
XML x HTML
HTML mostra
como
apresentar
XML mostra
o que
significa
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 15
Anatomia de um documento XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 16
8
Componentes de um documento XML
Árvore XML
nós,
raiz,
galhos e
folhas
Prólogo
Comentários
Instruções de processamento
Elementos
Atributos
Nós de texto
Entidades
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 17
Partes de um documento XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 18
9
Árvore XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 19
Estrutura XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 20
10
Prólogo XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 21
Nó raiz e elementos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 22
11
Atributos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 23
Nós de Texto
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 24
12
Entidades
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 25
Entidades de caracteres
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 26
13
Elementos e Atributos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 27
Elementos e Atributos (2)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 28
14
Quando usar elementos/atributos
Questão de design
Elementos geralmente referem-se a coisas
que têm atributos
Atributos geralmente são características
dessas coisas que podem ser descritas com
poucas palavras
Questão de suporte tecnológico
Atributos não podem conter subelementos
Atributos são mais fáceis de serem
validados num DTD
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 29
Identificadores
Nomes de atributos e elementos
Podem conter
qualquer caractere alfanumérico ou
ideograma
. (ponto)
- (hífen)
_ (sublinhado)
Não podem começar com
ponto,
hífen ou
número
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 30
15
Identificadores (2)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 31
Conteúdo misto
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 32
16
Seção CDATA (Character DATA)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 33
Instruções de processamento
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 34
17
Declaração XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 35
Documento XML bem-formado
Documento bem-formado
ter um único elemento raiz
etiquetas iniciais e finais combinam (levando em conta
que caracteres maiúsculos e minúsculos são diferentes)
elementos bem aninhados
valores de atributos entre aspas ou apóstrofes
atributos não repetidos
identificadores válidos para elementos e atributos
comentários não devem aparecer dentro das etiquetas
sinais < ou & nunca devem ocorrer dentro dos valores
dos atributos ou nos nós de texto do documento.
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 36
18
XML Namespaces
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 37
XML Namespaces
Limita o escopo de elementos
Evita conflitos quando duas linguagens se cruzam no
mesmo documento
Consiste da associação de um identificador a cada
elemento/atributo da linguagem, que pode ser
herdado através do escopo de uma sub-árvore
atribuído explicitamente através de um prefixo
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 38
19
Outro Exemplo
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 39
Exemplo com 3 Namespaces
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 40
20
Por que usar XML para compartilhar dados?
Porque é um padrão aberto
Facilidade para converter para formatos proprietários
Porque é texto
Fácil de ler, fácil de processar, menos
incompatibilidades
Porque promove a separação entre estrutura,
conteúdo e apresentação
Facilita geração de dados para visualização dinâmica
Evita repetição de informação / simplifica manutenção
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 41
Por que usar XML para compartilhar dados?
Porque permitirá semântica na Web
Elementos HTML não carregam significado, apenas
dicas de formatação: mecanismos de busca ficam
prejudicados
Solução com XML dependerá de suporte dos clientes
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 42
21
POO-Java XML
Validação
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 43
Por que validar ?
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 44
22
Definindo um Esquema XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 45
Classes x Instâncias
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 46
23
Documentos Válidos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 47
O que define um Esquema XML
DTD
Documento Váido
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 48
24
Documentos não-válidos
Diga porque os documentos são não-válidos ?
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 49
DTD Externo SYSTEM
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 50
25
DTD Publico
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 51
DTD Interno
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 52
26
DTD Incompleto
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 53
DTD exemplo
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 54
27
<!ELEMENT> e #PCDATA
PCDATA - Parsed Character Data
Elemento pode conter texto
Não pode conter elementos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 55
Seqüências de Elementos-filho
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 56
28
Seleção de um Elemento-filho
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 57
Conteúdo Misto
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 58
29
Elementos Vazios e Any
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 59
<!ATTLIST>
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 60
30
Exemplos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 61
Tipos de Dados XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 62
31
CDATA e NMTOKEN
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 63
Seleção
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 64
32
ID
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 65
IDREF
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 66
33
IDREFS
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 67
Valores Default
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 68
34
<!NOTATION> e tipo NOTATION
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 69
<!ENTITY>
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 70
35
Entidades gerais internas
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 71
Entidades gerais externas
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 72
36
Entidades externas não processadas
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 73
Entidades de parâmetro
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 74
37
Entidades de parâmetro externas
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 75
Condicionais
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 76
38
Utilidades dos Condicionais
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 77
Namespaces e XML Schema
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 78
39
POO-Java DTD
x
XML/Schema
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 79
XLink
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 80
40
Exemplos de XLink
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 81
XPointer
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 82
41
Onde usar XML?
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 83
Como produzir XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 84
42
Documentos XML bem formados
Para que possa ser manipulado como uma árvore,
um documento XML precisa ser bem formado
Documentos que não são bem formados não são
documentos XML
Documentos bem-formados obedecem as regras de
construção de documentos XML genéricos
Regras incluem
Ter um, e apenas um, elemento raiz
Valores dos atributos estarem entre aspas ou
apóstrofes
Atributos não se repetirem
Todos os elementos terem etiqueta de fechamento
Elementos estarem corretamente aninhados
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 85
XML válido
Um XML bem construído pode não ser válido em
determinada aplicação
Aplicação típica pode esperar que
elementos façam parte de um vocabulário limitado,
certos atributos tenham valores e tipos definidos,
elementos sejam organizados de acordo com uma
determinada estrutura hierárquica, etc.
É preciso especificar a linguagem!
Esquema: modelo que descreve todos os elementos,
atributos, entidades, suas relações e tipos de dados
Um documento XML é considerado válido em relação a
um esquema se obedecer todas as suas regras
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 86
43
Esquemas XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 87
DTD vs. XML Schema
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 88
44
POO-Java XML
Processing
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 89
Visualização em um browser
Folha de estilo: conjunto de regras para formatar
ou transformar as informações de um documento
XML
CSS - Cascading Style Sheets
Transformação visando apresentação visual
Aplicação do estilo em tempo de execução no
cliente
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 90
45
Visualização em um browser
XSLT - eXtensible Stylesheet Language
Transformação em texto, HTML ou outro formato
Aplicação em tempo real ou prévia (no servidor)
Se não estiver associado a uma folha de estilo, o
documento XML não tem uma "aparência"
definida
Internet Explorer e outros mostram a árvore-fonte
XML
Netscape mostra apenas os nós de texto
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 91
Como manipular XML?
Há duas APIs padrão para manipular (interpretar,
gerar, extrair dados e tratar eventos) arquivos XML:
W3C Document Object Model (W3C DOM)
Simple API for XML (SAX)
Servem a finalidades diferentes
Implementações disponíveis em várias linguagens
SAX oferece métodos que respondem a eventos
produzidos durante a leitura do documento
notifica quando um elemento abre, quando fecha, etc.
DOM monta uma árvore, que permite a navegação na
estrutura do documento
propriedades dos objetos podem ser manipuladas
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 92
46
Leitura de XML com SAX
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 93
Criação de documentos com DOM (1)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 94
47
Criação de documentos com DOM (2)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 95
XPath
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 96
48
XSLT
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 97
XSLT: documento-fonte (1)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 98
49
XSLT: folha de estilos (2)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 99
XSLT: documento-resultado (3)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 100
50
XLink, XPointer e XQuery
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 101
XSL-FO
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 102
51
XSL-FO: menor documento
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 103
XHTML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 104
52
SVG
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 105
Exemplo SVG
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 106
53
Algumas outras linguagens XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 107
Ferramentas XML
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 108
54
Conclusões
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 109
55