Anotações
Apresentação de slides
Estrutura de tópicos
1
Módulo III
Introdução a XML
  • Prof. Ismael H F Santos


2
Ementa
  • Modulo III – XML
    • SGML - Standard Generalized Markup Language
    • XML - Extensible Markup Language
    • XML Validação
    • DTD x XML/Schema
    • XML Processing - XSLT



3
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
4
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/
5
POO-Java
6
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)
7
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
8
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
9
SGML
  • <antologia>
    • <poema><titulo>São demais os perigos desta vida</titulo>
    • <estrofe>
      • <linha>São demais os perigos desta vida</linha>
      • <linha>pra quem tem paixão</linha>
      • <linha>Principalmente quando uma lua chega de repente</linha>
      • <linha>e se deixa no céu como esquecida</linha>
    • </estrofe>
    • <estrofe>
      • <linha>E se ao luar que atua desvairado</linha>
      • <linha>vem se unir uma música qualquer</linha>
      • <linha>Aí, então, é preciso ter cuidado</linha>
      • <linha>porque deve andar perto uma mulher</linha>
    • </estrofe>
    • <estrofe>
      • <linha>Uma mulher que é feita</linha>
      • <linha>de música, luar e sentimento</linha>
      • <linha>E que a vida não quer de tão perfeita</linha>
    • </estrofe>
    • <estrofe>
      • <linha>Uma mulher que é como a própria lua</linha>
      • <linha>Tão linda que só espalha sofrimento</linha>
      • <linha>Tão cheia de pudor que vive nua</linha>
    • </estrofe>
    • </poema>
  • <!-- mais poemas -->
  • </antologia>               ( ... poema de Vinícius de Moraes )


10
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>
11
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 ...
12
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
13
POO-Java
14
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:


15
XML x HTML
  • HTML mostra        como             apresentar




  • XML mostra                  o que                 significa



16
Anatomia de um documento XML
17
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


18
Partes de um documento XML
19
Árvore XML
20
Estrutura XML
21
Prólogo XML
22
Nó raiz e elementos
23
Atributos
24
Nós de Texto
25
Entidades
26
Entidades de caracteres
27
Elementos e Atributos
28
Elementos e Atributos (2)
29
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

30
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

31
Identificadores (2)
32
Conteúdo misto
33
Seção CDATA (Character DATA)
34
Instruções de processamento
35
Declaração XML




36
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.
37
XML Namespaces
38
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

39
Outro Exemplo
40
Exemplo com 3 Namespaces
41
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
  • 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
42
POO-Java
43
Por que validar ?
44
Definindo um Esquema XML
45
Classes x Instâncias
46
Documentos Válidos
47
O que define um Esquema XML
48
Documentos não-válidos
  • Diga porque os  documentos são não-válidos ?


49
DTD Externo SYSTEM
50
DTD Publico
51
DTD Interno
52
DTD Incompleto
53
DTD exemplo
54
<!ELEMENT> e #PCDATA








  • PCDATA - Parsed Character Data
    • Elemento pode conter texto
    • Não pode conter elementos
55
Seqüências de Elementos-filho
56
Seleção de um Elemento-filho
57
Conteúdo Misto
58
Elementos Vazios e Any
59
<!ATTLIST>
60
Exemplos
61
Tipos de Dados XML
62
CDATA e NMTOKEN
63
Seleção
64
ID
65
IDREF
66
IDREFS
67
Valores Default
68
<!NOTATION> e tipo NOTATION
69
<!ENTITY>
70
Entidades gerais internas
71
Entidades gerais externas
72
Entidades externas não processadas
73
Entidades de parâmetro
74
Entidades de parâmetro externas
75
Condicionais
76
Utilidades dos Condicionais
77
Namespaces e XML Schema
78
POO-Java
79
XLink
80
Exemplos de XLink
81
XPointer
82
Onde usar XML?
83
Como produzir XML
84
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

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
86
Esquemas XML
87
DTD vs. XML Schema
88
POO-Java
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
90
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

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

92
Leitura de XML com SAX
93
Criação de documentos com DOM (1)
94
Criação de documentos com DOM (2)
95
XPath
96
XSLT
97
XSLT: documento-fonte (1)
98
XSLT: folha de estilos (2)
99
XSLT: documento-resultado (3)
100
XLink, XPointer e XQuery
101
XSL-FO
102
XSL-FO: menor documento
103
XHTML
104
SVG
105
Exemplo SVG
106
Algumas outras linguagens XML
107
Ferramentas XML
108
Conclusões