Introdução
Definição
Validação
Apresentação
Processamento
Banco de Dados
Universo XML
Prof. Enzo Seraphim
Popularidade do HTML
✔
✔
✔
✔
✔
✔
Extremamente simples
Estilo próprio para formatação de
documentos
Ligações de hipertexto criadas facilmente
Suporte a formulários
Interação homem x máquina
Estrutura limitada e simples
– número fixo de tags
– projetado para formatação de documentos
entregues através da Web
Quem deveria suportar?
O que mudou entre as versões de HTML?
✔ Tags de apresentação
✔ O formato que descreve como uma página
Web deve ser exibida;
✔ não oferece nenhuma descrição dos dados.
✔ Como prover suporte a crescente
necessidade de desenvolvedores de
acrescentarem tags para o padrão?
✔
Solução XML
✔
W3C: World Wide Web Consortium
– http://www.w3.org
Quem?
✔
Quando?
Extensible Markup Language - XML.
– W3C Recommendation, 10 February 1998,
[Online]
Como?
– http://www.w3.org/XML/
Onde?
XML x HTML
✔
XML
✔
HTML
✔
Define o conteúdo (dados)
✔
✔
Tags descrevem os dados,
como temperatura, humidade,
etc.
Descreve o formato
de apresentação
✔
Número limitado e
não extensível de
tags
✔
Inadequado para
gerenciamento de
grande volume de
dados
✔
Tags definidas pelo criador do
documento
✔
Apresentação definida por
folhas de estilo
✔
Dados separados da
apresentação e do
processamento dos dados
XML x HTML
<h1>José da Silva</h1>
H <h2>[email protected]</h2>
T <p>
M <b>Av. Brasil, 123</b>
<i>(099)1234 5678 com</i>
L </p>
X
M
L
<cartao>
<nome> José da Silva </nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
Universo XML
✔
✔
✔
✔
✔
Estrutura e Semântica (Validação):
– DTDs e XML Schemas
Apresentação:
– CSS, XSLT e XPath
Metadados e mais semântica:
– RDF
Estrutura de hipertexto:
– XLink e XPointer
Processamento de documentos XML
– DOM, SAX
Linguagens derivadas XML
Introdução
Definição
Validação
Apresentação
Processamento
Banco de Dados
Universo XML
Prof. Enzo Seraphim
XML – Extensible Markup Language
✔
✔
✔
✔
✔
✔
Uma maneira de representar informação
Documentos XML são documentos de texto.
É uma linguagem de marcação (markup),
onde as tags (marcas) são utilizadas para
estruturar a informação.
Essa estrutura define uma hierarquia de
elementos a partir de uma raiz
A hierarquia das tags são criadas de forma
simples pelo autor do documento XML.
Menor documento tem um elemento raiz
(vazio ou não)
Documento XML
✔
✔
Todo documento deve ter somente um elemento raiz.
Elementos podem incluir outros elementos,
formando uma estrutura de alinhamento de
elementos.
– Não é permitido desrespeitem desse alinhamento
<i> <b> itálico e
✔
negrito </i> </b>
Instrução de processamento para Parses:
– versão XML e o character set utilizada.
<?xml version ="1.0" encoding="ISO-8859-1" ?>
✔
Parsers XML não devem corrigir e interpretar
– Documentos que não estão bem formatado
Partes de um DOC XML
PRÓLOGO (opcional)
– Instruções processamento - atributos opcionais:
version, encoding, standalone
– Document Type Declaration:
• Interno quando o DTD está definido no mesmo
arquivo XML.
• Externo quando o DTD é um outro arquivo:
✔ Corpo
– um ou mais elementos hierarquicamente
organizados;
✔ EPÍLOGO (opcional)
– pode conter comentario, instruções de
processamento e/ou brancos
✔
<?xml version ="1.0" encoding="ISO-8859-1" ?>
<?comando parametro="abc" ?>
<!DOCTYPE cartao [
<!ELEMENT cartao (nome,email,endereco,telefone)>
<!ELEMENT nome (#PCDATA)>
Prólogo
<!ELEMENT email (#PCDATA)>
<!ELEMENT endereco (#PCDATA)>
<!ELEMENT telefone (ddd, numero)>
<!ATTLIST telefone tipo CDATA #REQUIRED>
<!ELEMENT ddd (#PCDATA)>
<!ELEMENT numero (#PCDATA)> ]>
Corpo
Epílogo
<cartao>
<nome>José da Silva</nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
<!-- exemplo cartao visita -->
Elementos de um DOC XML
✔
Instruções de Processamento
✔
Comentário
✔
Elementos
✔
Atributos
✔
Nó de Texto
Instruções de Processamento
✔
✔
✔
Mecanismo de inserção de informações explícitas
em um documento destinadas a alguma aplicação.
Sintaticamente uma instrução de processamento é:
<?comando parametro= "valor"?>
Os parsers XML não interpretam tais informações,
somente a instrução inicial;
– <?xml version ="1.0" encoding="ISO-8859-1" ?>
✔
A aplicação deve saber o que fazer com a instrução
definida.
Codificação Caracteres
<?XML version=“1.0” encoding=“UTF-8”?>
✔
✔
✔
✔
✔
ASCII - 1 byte, 7 bits → 128 combinações
ISO 8859-1 (Latin-1) → 256 combinações (ASCII +
Europa Ocidental)
ISO 8859-(2...15) → 256 combinações (ASCII +
outras línguas)
Unicode →2bytes → 65534 combinações, onde
40.000 estão definidas (20000 usadas para os
ideogramas Han  japonês, chinês, koreano) e
25.000 reservado para futuras extensões.
UTF-8 → versão compacta do Unicode que usa 1
byte para a maioria dos caracteres e 3 bytes para os
menos comuns
Instruções de Processamento
<?xml version ="1.0" encoding="ISO-8859-1" ?>
<!-- exemplo cartao visita -->
<?comando parametro="abc" ?>
<cartao>
<nome>José da Silva</nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
Comentários
✔
✔
✔
✔
Todo dado entre essas marcas é ignorado pelo
processador XML.
Sintaticamente uma instrução de processamento é:
<!-- e terminam com -->
Os parsers XML não interpretam tais informações;
Não podem acontecer :
– antes da instrução de processamento XML que
deve ser a primeira sentença de um documento;
– nem dentro de um elemento.
– não pode aparecer em um comentário, exceto
como parte dos delimitadores.
Comentários
<?xml version ="1.0" encoding="ISO-8859-1" ?>
<!-- exemplo cartao visita -->
<?comando parametro="abc" ?>
<cartao>
<nome>José da Silva</nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
Elementos
✔
✔
✔
✔
✔
Construtor básico de um documento que
forma a estrutura de alinhamento do
documento.
Elementos podem incluir descendentes:
outros elementos; atributos; e nó de texto
Os elementos de abertura são definidos:
<nome do elemento>
Os elementos de fechamento são definidos:
</nome do elemento>
Elemento vazio são definidos:
<nome do elemento/>
Nomeação dos Elementos
✔
✔
✔
✔
✔
Os nomes dos elementos são sensitivos a
maiúsculo e minúsculo
devem começar com uma letra ou "_";
caracteres seguintes podem incluir letras,
dígitos, hífens, pontos ou " _";
não pode conter caracter espaço.
dois pontos é válido, embora é reservado
para composições especiais de nomes
(Namespaces )
Elementos
<?xml version ="1.0" encoding="ISO-8859-1" ?>
<!-- exemplo cartao visita -->
<?comando parametro="abc" ?>
<cartao>
<nome>José da Silva</nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
Atributos
✔
✔
✔
✔
✔
Estão dentro dos elementos de abertura ou
elementos vazios;
As mesmas regras de composição de nomes
de elementos aplicam-se para nomes de
atributos.
Os valores dos atributos devem ser
delimitadas por aspas.
Elementos podem incluir um descendente nó
de texto
Um elemento pode conter um ou mais
atributos, que são pares nome="valor".
Atributos
<?xml version ="1.0" encoding="ISO-8859-1" ?>
<!-- exemplo cartao visita -->
<?comando parametro="abc" ?>
<cartao>
<nome>José da Silva</nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
Nó de Texto
✔
Armazenam os valores para os elementos ou
atributos
<?xml version ="1.0" encoding="ISO-8859-1" ?>
<!-- exemplo cartao visita -->
<?comando parametro="abc" ?>
<cartao>
<nome>José da Silva</nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
Hierarquia
/
cartao
nome
Jose da Silva
email
[email protected]
endereco
Av. Brasil, 123
telefone
tipo
comercial
ddd
099
numero
1234 5678
raiz
nó elemento
nó atributo
nó texto
Introdução
Definição
Validação
Apresentação
Processamento
Banco de Dados
Universo XML
Prof. Enzo Seraphim
Validação de documento
Pode-se definir a gramática de um
documento XML através:
– Document Type Definition (DTD)
– XML SCHEMA
✔ O documento XML é válido somente se
satisfaz todas definições da gramática.
✔ Documentos não válidos são individualistas
e não é possível prever a hierárquica do
documentos
✔
A Criação de um DTD
✔
Requer análise de documentos
– que elementos irão ocorrer?
– como se relacionam entre si?
– como irão os usuários interagir com eles?
✔
Tarefa difícil
– quanto mais amplo o escopo maior a
complexidade
– difícil conseguir a concordância de todos os
envolvidos
Document Type Declaration
✔
Interno quando o DTD está definido no mesmo
arquivo XML.
<!DOCTYPE livroreceita[
…
]>
✔
Externo quando o DTD é um outro arquivo:
<!DOCTYPE livroreceita
SYSTEM "receita.dtd">
Exemplo (cartao.xml)
<?xml version ="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE cartao SYSTEM "cartao.dtd">
<agenda>
<cartao>
<nome>José da Silva</nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
</agenda>
Exemplo (cartao.dtd)
<!DOCTYPE agenda [
<!ELEMENT agenda(cartao*)
<!ELEMENT cartao(nome,email?,endereco,telefone)>
<!ATTLIST cartao apelido ID #REQUIRED">
<!ELEMENT nome (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT endereco (#PCDATA)>
<!ELEMENT telefone (ddd, numero)>
<!ATTLIST telefone tipo CDATA #REQUIRED">
<!ELEMENT ddd (#PCDATA)>
<!ELEMENT numero (#PCDATA)> ]>
Declarações DTD
✔
ELEMENT → declaração do elemento
✔
ATTLIST → declaração do atributo do
elemento
✔
ENTITY → conteúdo reusável
✔
NOTATION → declarações de conteúdo
externo que não deve ser parsed
Elemento
✔
Define a hierarquia do documento;
<agenda>
+ <cartao>
- <nome>
- <email>
- <endereco>
+ <telefone>
- <ddd>
- <numero>
+ <cartao>
...
<agenda>
<cartao>
<nome> José da Silva </nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>
</agenda>
ELEMENT
✔
✔
✔
✔
✔
✔
✔
“,” : elementos devem ocorrer na ordem
especificada;
“|”: apenas um elemento deve ocorrer;
“+”: o elemento deve ocorrer 1 ou + vezes;
“*”: o elemento pode ocorrer zero ou +
vezes;
“? “: o elemento é opcional;
#PCDATA: uma seqüência de caracteres;
EMPTY: indica que o elemento é vazio;
Exemplo (cartao.dtd)
<!DOCTYPE agenda [
<!ELEMENT agenda(cartao*)
<!ELEMENT cartao(nome,email?,endereco,telefone)>
<!ATTLIST cartao apelido ID #REQUIRED">
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
nome (#PCDATA)>
email (#PCDATA)>
endereco (#PCDATA)>
telefone (ddd, numero)>
<!ATTLIST telefone tipo CDATA #REQUIRED">
<!ELEMENT ddd (#PCDATA)>
<!ELEMENT numero (#PCDATA)> ]>
ATTLIST
✔
CDATA: string
✔
ID: ident único
✔
✔
IDREF/IDREFS: referencia(s) para um ID
(existente)
#REQUIRED: obrigatório
#IMPLIED: opcional
#FIXED: sempre fixo, aparece opcionalmente
apenas valor: valor assumido qdo não especificado
✔
[Valor enumerado]: um entre os valores
✔
✔
✔
Exemplo (cartao.dtd)
<!DOCTYPE agenda [
<!ELEMENT agenda(cartao*)
<!ELEMENT cartao(nome,email?,endereco,telefone)>
<!ATTLIST cartao apelido ID #REQUIRED">
<!ELEMENT nome (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT endereco (#PCDATA)>
<!ELEMENT telefone (ddd, numero)>
<!ATTLIST telefone tipo CDATA #REQUIRED">
<!ELEMENT ddd (#PCDATA)>
<!ELEMENT numero (#PCDATA)> ]>
Elemento x Atributo
Em geral elemento armazena dado e
atributos armazenam metadados
✔ Os elementos armazenam as informações
mais relevantes, enquanto os detalhes ficam
nos atributos
✔ Atributos não representam bem estruturas
✔
ENTITY
✔
Entidades parâmetros: para reuso em DTDs
✔
Gerais: para reuso, deve resultar em XML
bem-formado após parsing
<!ENTITY unifei “Universidade de Federal
de Itajubá”>
<aluno universidade=“&unifei”/>
Outras Formas de Validação
✔
✔
✔
DTD
✔ vantagem: é simples;
✔ desvantagens: não usa sintaxe XML e é
limitado.
XML Schema
✔ vantagem: é XML; permite validação mais
detalhada.
✔ desvantagem: é muito mais complicado que
DTD
Em certos casos é preciso realizar validação
adicional usando processamento em alguma
linguagem (Python, Java)
Introdução
Definição
Validação
Apresentação
Processamento
Banco de Dados
Universo XML
Prof. Enzo Seraphim
Benefícios
✔
✔
✔
✔
✔
Acesso mais fácil à informação através de
atribuição de significado mais relevante aos
dados;
Desenvolvimento de aplicações mais flexíveis;
Integração de dados de origens diferentes;
Múltiplas visões dos dados;
Formas de Transformação:
✔ CSS Style Sheet
✔ XSL Style Sheet
CSS – Cascading Style Sheets
Originalmente preparada para HTML.
✔ Uma lista de regras, onde cada regra começa
com um seletor (nomes do elemento) ao qual
os estilos de apresentação são aplicados.
✔ Se não houver regras que especifiquem o
estilo de um determinado elemento, esse
elemento as herda de seu elemento pai.
✔ Duas versões versão CSS1e CSS2.
✔
CSS – Cascading Style Sheets
Atribui estilos somente a conteúdo que já
aparece no documento.
✔ Não pode:
✔ adicionar conteúdo;
✔ transformar o conteúdo.
✔ Através de instrução de processamento
✔
<?xml-stylesheet type="text/css"
href=“arq.css" ?>
Exemplo:
X
M
L
<nome> José da Silva </nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
nome { display: inline; font-size: 16pt; fontweight: bold; border: 2px inset }
email { display: inline; font-size: 16pt; fontweight: bold; border: 2px inset }
endereco { color: red; display: block; font-size:
12pt }
ddd { color: blue; display: block; font-size:
12pt }
ddd { color: blue; display: block; font-size:
12pt }
XSL – Extensible Style Language
✔
✔
✔
✔
✔
✔
✔
Recomendação da W3C.
Geração de texto constante
Supressão de conteúdo
Movimentação de texto (ex: mudança de ordem de
nome e sobrenome)
Duplicação de texto (ex: cópia de títulos para
produção de um índice)
Ordenação
Transformações mais complexas que computem
novas informações em função das informações
existentes.
XSL – Extensible Style Language
Transformação
Através de instrução de processamento
<?xml-stylesheet type="text/xsl"
href=“arq.xsl" ?>
✔ Transformação no clientes:
✔ Web Browser
✔ Transformação no Servidor:
✔ Web Aplication Cocoon – Apache
✔ novas características foram adicionadas.
✔
Elementos XLS
✔
✔
✔
✔
✔
✔
✔
xsl:for-each
select
xsl:value-of
xsl:if
xsl:attribute
xsl:sort
xsl:number
Introdução
Definição
Validação
Apresentação
Processamento
Banco de Dados
Universo XML
Prof. Enzo Seraphim
Processamento
✔
✔
✔
✔
✔
✔
carregar dados do documento
separar diversos tipos de dados (nome dos
elementos, atributos, conteúdo, subelementos...)
expandir todas as entidades utilizadas
verificar se o documento é válido
montar uma estrutura que represente o
documento
navegar pela estrutura montada e acessar os
componentes do documento
Motivação
Construir um programa para processar
documentos XML
– Pode ser uma tarefa trabalhosa se não for
utilizado algum ferramental de suporte.
✔ Bibliotecas ajudam na manipulação do XML
✔ Como construir uma biblioteca que funcione
em qualquer linguagem de programação?
– Definição de API permitindo que sejam
implementadas em sua linguagem de
programação favorit
✔
Aplication Programming Interface
Baseados Eventos SAX
✔ Oferece métodos que respondem a
eventos produzidos durante a leitura do
documento;
✔ Baseados Árvores Document Object
Model (DOM)
✔ monta uma estrutura hierárquica de
objetos, em forma de árvore, que permite
a navegação na estrutura do documento;
✔
SAX
✔
✔
✔
Foi editada e publicada por David Megginsom (
www.megginson.com/SAX)
É um parser baseado em eventos
Dispara eventos durante processamento do
documento
– eventos podem ser capturados por ouvintes cadastrados
– ações podem ser tomadas em cada situação
✔
Exemplos de Eventos:
–
–
–
–
inicio e fim do documento
início e fim do elemento (pode-se descobrir qual)
nó de caractere
nó de comentário
Implementação (Eventos)
<carta>
<mensagem id="1">Bom dia!</mensagem>
</carta>
 startDocument()
 startElement("carta", [])
 startElement("mensagem", [Attribute("id","1")])
 characters("Bom dia!")
 endElement("mensagem")
 endElement("carta")
 endDocument()
✔
Programador deve implementar um objeto "ouvinte" para
capturar os eventos e extrair as informações desejadas
DOM
✔
✔
✔
W3C (http://www.w3.org/DOM/) estabeleceu a
recomendação DOM – Document Object Model.
Os documentos XML são representados
– estrutura de árvore que reflete a sua estrutura
lógica hierárquica.
Suporta a manipulação da estrutura e conteúdo do
documento, permitindo :
– criar um novo documento XML
– navegar na árvore XML
– modificar, remover ou adicionar nós (elementos,
atributos, texto, comentários, etc.)
DOM: Hierarquia
Introdução
Definição
Validação
Apresentação
Processamento
Banco de Dados
Universo XML
Prof. Enzo Seraphim
Oracle
Suporta para padronizar o SQL para
normalizado pelo consórcio W3C através do
XQuery;
✔ A Oracle a partir do banco de dados 9i
oferece suporte XML:
✔
–
–
–
–
Transformar modelo relacionar para XML
Inserir dados XML
Consulta em campos XML
Indexação de campos XML
Transformando Select em XML
✔
XMLElement (nome tag, campo)
– Adiciona elementos no select
✔
XMLAttributes( campo as "valor chave")
– Adiciona atributos no select
✔
O alinhamento de XMLElement formam a
hierarquia do documento.
Transformando Select em XML
✔
select XMLElement ("cliente", nome)
from enderecos;
✔
select
XMLElement ("cartao",
XMLAttributes (nick as "apelido"),
XMLElement ("cliente", nome),
XMLElement ("endereco", email))
from enderecos;
Armazenamento XML
✔
Na tabela com o tipo de dado (Oracle 9i) :
– XMLType
✔
Exemplo de criação
create table cartoes (
nome varchar(30),
cartaoXML XMLType);
✔
Para inserir em um campo XMLType deve-se usar
a função XMLType;
Armazenamento XML
✔
Exemplo
insert into cartoes values ('zé',
XMLType('
<cartao>
<nome>José da Silva</nome>
<email>[email protected]</email>
<endereco>Av. Brasil, 123</endereco>
<telefone tipo="comercial">
<ddd>099</ddd>
<numero>1234 5678</numero>
</telefone>
</cartao>'));
Consulta campos XML
✔
extractValue(campo XML, expressão Xpath)
– Extrai um valor de um campo XML sem os tags
✔
Exemplo:
select
extractValue(cartaoXML, '/cartao/telefone@tipo'),
extractValue(cartaoXML, '/cartao/telefone/ddd'),
extractValue(cartaoXML, '/cartao/telefone/numero')
from cartoes;
Consulta campos XML
✔
existsNode(campo XML, expressão Xpath)
– Verifica se existe o path e retorna um elemento XML
– Se o elemento existir retorna 1, caso contrário retorna 0
– Essa função só deve ser usada na cláusula where.
✔
Exemplo:
select nome from cartoes
where existsNode(cartaoXML ,
'/cartao[nome ="José da Silva"]') = 1;
Criando índice
✔
Um índice pode ser criado para ajudar o
algoritmo de busca
✔
Exemplo:
create index ind_cartao on cartoes
(extractValue(cartaoXML, '/cartao/email') );
Autor:
Prof. Enzo Seraphim
Os logotipos, marcas comerciais e
nomes de produtos citados nesta
publicação tem apenas o propósitos
de identificação e podem ser marcas
registradas de suas respectivas
companhias.
Universo XML
Download

XML - Unifei