tópicos especiais iii xml (extensible markup language)fernando.gauthier/egc6006/material/aula...
Post on 05-Oct-2018
262 Views
Preview:
TRANSCRIPT
Curso de Sistemas de Informação
Tópicos Especiais III XML (Extensible Markup Language)
��������������� ����������
Março de 2004.
Capítulo 1 Objetivo da disciplina
Habilitar o aluno a projetar e desenvolver documentos para a Internet
baseados
em um padrão de troca de informações entre sistemas heterogêneos. Introdução
Até recentemente, a tecnologia de informação visava, principalmente,
melhorar os processos internos nas organizações. As informações eram geradas e
processadas dentro dos limites da empresa.
Atualmente, as evoluções tecnológicas e nos negócios faz com que as
informações relevantes às organizações sejam geradas e processadas tanto
dentro como fora das organizações. Empregados que realizem vendas fora da
empresa podem utilizar tecnologias WAP. Clientes podem realizar compras
através da Web, em sites de comércio eletrônico. Empresas parceiras podem
trocar informações a respeito de estoques e produtos, através de sistemas
informatizados.
Figura 1 - Geração e tratamento das informações até recentemente
Conceitos como Gerenciamento do Conhecimento (Knowledge Management)
e Gerenciamento do Relacionamento com o Cliente (CRM – Customer
Relationship Management) visam obter informações gerenciais relevantes dos
dados que a empresa possui, levando em conta suas diferentes origens e
significados.
Figura 2 - Geração e tratamento das informações atualmente
As diferenças entre os tipos de sistemas envolvidos na geração e
processamento das informações dificultam as interações entre os mesmos.
Linguagens de Marcação
Em 1960, pesquisadores da IBM enfrentaram o problema de construir um
sistema poderoso e portátil para o intercambio e a manipulação de documentos
legais. Os diferentes tipos de arquivos com que se trabalhava tornava difícil a
comunicação entre os computadores. Percebeu-se, então, que a comunicação
seria facilitada pela existência de um formato comum, independente de sistema.
Vendedores
CRM
Empresas Parceiras Gerenciamento
do Conhecimento
����������Vendas
Processamento de Transações
� ��������
Decidiu-se, portanto, pela utilização de uma linguagem de marcação,
compatível entre muitas plataformas. A linguagem protótipo baseava-se na
marcação dos elementos estruturais do documento, em vez de formatar e exibir
um documento pronto. A formatação da informação seria mantida em arquivos
separados, chamados folhas de estilo, com os quais os computadores poderiam
formatar e exibir um documento pronto. Desta maneira, o processamento dos
documentos passou a ser diferente, pois percebeu-se que só poderiam ser
processados de maneira confiável aqueles que obedecessem a um padrão, de
modo que o sistema fosse capaz de reconhecer os documentos válidos e rejeitar
os inválidos (com falta de informações ou informações a mais). Assim, a estrutura
esperada para cada tipo de documento era definida em um arquivo separado
denominado definição de tipo de documento (DTD).
Por volta de 1969, a equipe desenvolveu uma linguagem com todas essas
possibilidades e a chamaram de Generalized Markup Language (GML).
Em 1974, provou-se que um analisador sintático (parser) poderia validar
um documento sem efetivamente processa-lo. Continuando-se os
desenvolvimentos adicionais, chegou-se, em 1986, na adoção da Standard
Generalized Markup Language (SGML) como padrão internacional. Esta
linguagem tornou-se rapidamente o padrão de negócios para o armazenamento e
intercâmbio de dados em todo mundo.
Com o advento da Web, em certo momento as limitações da HTML tornaram-
se visíveis, devido à sua falta de extensibilidade. Os fornecedores de
navegadores, na tentativa de ganhar mercado, começaram a criar comandos
específicos de formatação.
Para o W3C, esta atitude poderia vir a ameaçar a interoperabilidade e a
escalabilidade da Web, e buscou-se, então, uma reação. Foram criadas, assim, as
Cascade Style Sheets (CSS), uma tecnologia de folhas de estilo, que poderia ser
usada no lugar da marcação de propriedade dos fornecedores. Esta tecnologia,
entretanto, mostrava-se extensivelmente limitada.
World Wide Web Consortium (W3C)
Fundado em 1994, o W3C (http://www.w3c.org) é um consórcio que
destina-se ao desenvolvimento de tecnologias interoperantes, de domínio público,
para a World Wide Web, e uma de suas principais metas é tornar a Web
universalmente acessível.
O W3C é, ainda, uma organização de padronização, e as tecnologias Web
por este padronizadas são chamadas “Recomendações”, e estas não são
produtos reais de software, mas sim documentos que especificam o papel, a
sintaxe, as regras de uma tecnologia. Entre as recomendações atualmente em
uso, feitas pelo W3C, pode-se citar a HyperText Markup Language (HTML), a
Cascading Style Sheet (CSS) e a Extensible Markup Language (XML).
Assim surgiu a Extensible Markup Language (XML), combinando potência e
extensibilidade herdadas da SGML e a simplicidade exigida pela comunidade
Web. Enquanto o HTML é legível apenas pelas pessoas, os documentos XML
podem ser lidos pelas pessoas e manipuláveis pelos computadores.
XML é uma linguagem que descreve documentos estruturados e dados e
vem se tornando um novo padrão de troca e publicação de dados e integração
entre aplicações.
O XML torna os documentos estruturados disponíveis para processamento
automático, e é baseado na separação do conteúdo, descrição da estrutura e
apresentação.
Embora tenha muitos recursos avançados, a linguagem XML é acessível a
todos os níveis de programadores por causa de sua inerente simplicidade.
- É baseada em texto, portanto um documento pode ser criado com
as ferramentas de texto mais simples;
- Não se limita, entretanto, a descrever elementos textuais. Pode
descrever imagens, gráficos vetoriais, animações ou qualquer outro
tipo de dado para o qual seja estendida;
- É um padrão aberto, possibilitando ao desenvolvedor a escolha de
ferramentas que melhor se ajustem às suas necessidades,
independente da plataforma;
Devido a esta característica de extensibilidade e flexibilidade, diversas são as
áreas em que a linguagem XML está sendo adotada.
XML é recomendação W3C desde 1998. Atualmente na 2a. edição da versão
1.0 de 6/10/2000 (http://www.w3c.org/XML).
HTML x XML
Uma breve comparação pode ser feita entre o HTML e o XML.
A linguagem HTML consiste em comandos de formatação para apresentação
de texto e imagens em navegadores Web. Outras mídias podem ser exibidas por
componentes adicionais chamados plug-ins.
XML é um formato de dados auto-descritivos que contém, além dos dados,
os nomes e descrição de estruturas dos campos de dados. A linguagem não
contém marcações (tags) para formatação, mantendo as informações sobre o
conteúdo, descrição estrutural, e apresentação separadas.
As tags em um documento XML são diferentes das tags utilizadas na
apresentação nos navegadores, e por isso a apresentação dos documentos XML
em navegadores é de baixa qualidade.
Figura 3 - Arquivo HTML apresentado no navegador e seu código-fonte
Figura 4 - Arquivo XML apresentado no navegador e seu código-fonte
Conforme citado anteriormente, pode-se perceber a baixa qualidade de
apresentação do documento XML em um navegador. A não existência de tags de
apresentação, faz com que os dados sejam apresentados conforme sua estrutura.
O XML possui, entretanto, algumas características que o tornam um formato
de dados que pode ser utilizado em todos os tipos de cenários de aplicação:
A criação e processamento dos documentos XML é bastante simples, e estes
podem ser facilmente lidos por humanos e processados pelas máquinas.
Além dos dados, um documento XML contém a descrição destes. A
implementação das aplicações pode ser independente da estrutura específica dos
dados. Isto quer dizer que diferentes tipos de aplicações podem ser
implementadas utilizando apenas os dados que lhes são úteis. Além disso, a
extensão na estrutura dos documentos XML, através da criação de novos
elementos, não prejudica em nada as aplicações já existentes que utilizavam tal
documento.
As Aplicações podem responder de maneira diferente aos dados. Não é
necessária a adaptação de uma aplicação quando são inseridos novos elementos
de dados, se os mesmos não forem relevantes para esta. Além disso, a estrutura
aberta do XML permite que novos elementos sejam adicionados a qualquer
momento.
Quanto à utilização do XML, pode-se citar algumas aplicações:
Publicação – A separação entre o conteúdo e a apresentação, possibilita
que o mesmo documento XML possa ser apresentado de diferentes formas,
através da utilização de diferentes folhas de estilo.
Figura 5 - Apresentação HTML x XML
SVG (Scalable Vector Graphics) – é um formato para representação de gráficos.
XHTML – reformulação do HTML, conforme a sintaxe do XML.
XForms – para o desenvolvimento de aplicações baseadas em formulários.
WML (Wireless Markup Language) – originalmente desenvolvida para Protocolo
de Acesso Sem Fio (WAP). WML 2 contém elementos da XHTML.
VoiceXML – é uma das bases para o desenvolvimento de aplicações controladas
por voz.
SMIL (Synchronized Multimedia Integration Language) – utilizada no
desenvolvimento de apresentações audiovisuais interativas.
Troca de Dados – devido à sua simplicidade e flexibilidade de estrutura, o XML é
bastante indicado para a troca de dados entre organizações;
Web Services – são aplicações na Internet que provêm funcionalidades que
podem ser acessadas por outros sistemas.
Capítulo 2 Sintaxe do XML
Neste capítulo serão apresentados os diferentes componentes da estrutura
de um documento XML.
Estrutura do Documento XML
Os documentos XML contêm informações na forma de texto que
compreendem as marcações e o conteúdo.
As marcações descrevem os dados e são caracterizadas pelos sinas “<” e
“>”.
Um documento XML pode conter:
– Instruções de processamento <? ... ?>
– Comentários <!- - ... - ->
– Referência a entidades &ref;
– Seções CDATA
– Elementos e atributos (tags)
Considerando-se um simples documento XML (intro.xml) que marca uma
mensagem como XML (Figura 2.1).
Os documentos são geralmente armazenados em arquivos de texto que
terminam com a extensão .xml, embora isso não seja um requisito da XML.
Qualquer editor de texto pode ser utilizado para criar um documento XML. Muitos
pacotes de software também permitem que os dados sejam armazenados como
documentos XML.
Figura 6 - Documento simples XML contendo uma mensagem
Todos os documentos XML devem conter um elemento raiz (myMessage no
exemplo). O elemento raiz contém outros elementos. As linhas que precedem o
elemento raiz representam o prólogo do documento XML. O elemento message,
no exemplo, é chamado de elemento filho do elemento nyMessage porque está
aninhado dentro deste elemento. O elemento filho contém o texto Welcome to
XML!.
É necessário tomar cuidado para que não seja criado mais do que um
elemento raiz em um documento XML.
O aninhamento deve ser feito de forma adequada. Por exemplo,
<x><y>hello</x></y> é um erro, uma vez que o elemento aninhado y deve
terminar antes do elemento x.
Prólogo e Encoding
O prólogo é a parte introdutória de um documento XML, precedendo o
primeiro elemento, e contém, tipicamente, a versão da XML para a qual o
documento foi criado. O prólogo é representado na forma de instruções de
processamento.
<?xml version = “1.0”?>
Embora a declaração de XML seja opcional, ela deve ser usada para
identificar a versão da XML do documento. Caso contrário, no futuro, é possível
que seja assumido que um documento sem uma declaração de versão XML
obedece à ultima versão da XML, o que pode vir a ocasionar problemas.
Uma declaração adicional de encoding pode especificar o conjunto de
caracteres que é utilizado no documento. O conjunto de caracteres consiste nos
caracteres que podem ser representados em um documento. Por exemplo, o
conjunto de caracteres ASCII (American Standard Code for Information
Interchange) contém as letras do alfabeto, os números de 0-9 e os caracteres de
pontuação, como !, -, e ?.
<?xml version = “1.0” encoding=“ISO-8859-1”?>
Os documentos XML podem conter os caracteres de retorno de carro
(carriage return), avanços de linha (line feed) e caracteres Unicode. O Unicode é
o padrão do Unicode Consortium. Seu objetivo é possibilitar que os computadores
processem os caracteres das principais línguas do mundo (www.unicode.org).
Os documentos XML contêm dados de caracteres e texto de marcação. O
texto de marcação vem entre os sinais de menor que (<) e maior que (>). Os
dados de caracteres representam o texto entre uma marca de abertura e uma
marca de finalização.
Para garantir a internacionalização, os documentos XML devem ser
codificados no Unicode (UTF-x, UCS-x, etc.).
Elementos e Atributos
O conteúdo de um documento XML está representado na forma de seus
elementos e atributos.
Elementos são a mais comum forma de marcação. Delimitados pelos sinais
de menor e maior (< e >), a maioria dos elementos identificam a natureza do
conteúdo que envolvem, começando com uma marcação de inicio <elemento> e
uma de fim </elemento>, com seu conteúdo entre estes.
Os elementos sem conteúdo, chamados de vazios, são representados por
<elemento></elemento>. Tais elementos ainda podem ser representados através
de uma sintaxe modificada, que utiliza o final /> para isto. Assim, um programa
que processa o documento XML não precisa procurar pela marcação de fim do
elemento. Desta forma, pode-se representar um elemento vazio por <elemento/>.
Os nomes dos elementos não podem conter caracteres especiais nem
espaços, e devem começar por letras ou “_”.
Atributos são pares de valores nomeados que ocorrem dentro das marcas de
início, após o nome do elemento. Por exemplo:
<elemento classe="prefácio">
A linha acima representa um elemento chamado “elemento” cujo atributo classe
possui o valor prefácio. Em um documento XML, todos os valores de atributos
devem estar entre aspas ou apóstrofes.
Os atributos descrevem elementos. Um elemento pode ter zero, um ou mais
atributos a ele associados.
Os nomes de elementos e atributos em XML podem ter qualquer comprimento e
podem conter letras, dígitos, sublinhados, hífens e pontos, mas devem começar
por uma letra ou um sublinhado e não podem conter espaços.
Figura 7 - Documento XML que representa um livro (Fonte: Deitel et. al., 2001)
A primeira linha do documento XML representado na Figura 7
(<?xml:stylesheet type = "text/xsl" href = "usage.xsl"?>) é exemplo de uma
instrução de processamento (PI). A informação contida em uma PI é passada para
a aplicação que está usando o documento XML e fornece informações adicionais
específicas da aplicação sobre o documento. As instruções de processamento são
delimitadas por <? e ?>. Este valor PI faz referência a uma folha de estilo XSL,
conforme indicado pelo alvo PI xml:stylesheet, cujo valor é type=”text/xsl”
href=”usage.xsl”. O funcionamento deste tipo de instrução será explicado
posteriormente, no capítulo 7.
Seções CDATA
Uma vez que o caractere “<” denota o início de uma marcação, não poderia
ser utilizado no conteúdo de um elemento. As seções CDATA são seções de um
documento XML que podem conter texto, caracteres reservados (por exemplo, <)
e caracteres espaços em branco. Os caracteres contidos nas seções CDATA são
excluídos da interpretação.
Um uso comum das seções CDATA é o código de criação de scripts
(Javascript ou VBScript), que freqüentemente contêm os caracteres &, <, >, ` e “.
Figura 8 - Usando uma seção CDATA
O exemplo representado na Figura 6 apresenta dois elementos sample. O
primeiro dos elementos representa os dados de maneira convencional, e o
segundo representa o mesmo conteúdo utilizando-se uma seção CDATA. A
diferença que se pode notar é que no segundo caso não é necessário que se faça
a substituição dos caracteres <, > e &.
Figura 9 - Usando seção CDATA (navegador)
A Figura 9 demonstra a apresentação em um navegador de um documento
XML que contém uma seção CDATA. Conforme pode-se perceber pelo código-
fonte na Figura 8, é possível a utilização dos caracteres reservados (como é o
caso de < e &), sem que o processamento do documento seja prejudicado, uma
vez que o conteúdo de uma seção CDATA é ignorado no processamento.
Esta característica faz com que as seções CDATA sejam adequadas para,
por exemplo, o armazenamento de trechos de código em linguagens de
programação.
Exercícios
1. Explique para que servem as marcações em um documento HTML e em um documento XML, identificando suas principais diferenças:
2. Explique como é feita a apresentação de documentos XML, em comparação com o que acontece nos documentos HTML:
3. Identifique o significado das seguintes marcações e sua utilização em documentos XML:
a. ��������� b. ������������� c. ������������
4. Explique a diferença entre elemento e atributo, e a forma de representá-los: 5. Explique para que servem as seções CDATA: 6. Explique a razão de a linguagem XML ser largamente utilizada para troca
de informações:
�
�
Capítulo 3 � Documentos XML Bem Formados
Uma vez que a XML, como o próprio nome sugere, é uma linguagem, está
sujeita a certas regras, indicam como escrever um documento bem formado.
Essas regras são chamadas de sintaxe.
A observação dessas regras é fundamental para que um navegador consiga
interpretar o código XML.
Um documento XML é considerado bem-formado se ele estiver
sintaticamente correto. A sintaxe da XML requer um único elemento como nó
raiz, uma tag de abertura e finalização para cada elemento, tags corretamente
aninhadas e valores de atributos entre aspas. Além disso, a XML faz diferença
entre maiúsculas e minúsculas, de modo que as maiúsculas devem ser
grafadas corretamente nos nomes de elementos e atributos. Os documentos que
atendem a estes requisitos de sintaxe são, portanto, documentos bem-formados.
Explicando de forma mais clara as regras que um documento XML deve
atender para ser considerado bem-formado:
1. Possuir um elemento raiz (root) que contém todos os outros:
<books> <book> <title>XML Como Programar</nome> <publisher>Bookman</publisher> </book> <book> <nome>Learning XML</nome> </book> <books>
A tag <books> é a raiz do documento.
2. Cada tag de abertura deve ter uma tag de fechamento correspondente:
3. Respeitar a hierarquia e o aninhamento das tags:
4. Os valores de atributos devem estar entre aspas ou apóstrofes:
<books> <book> <title>XML Como Programar <publisher>Bookman</publisher> </book> <books> A tag <title> não possui fechamento (</title>), por isto o documento é mal-formado.
<books> <book>
<title>XML Como Programar <publisher>Bookman</title> </publisher> </book> <books> A tag <publisher> não pode encerrar-se depois da tag <title>, por isto o documento é mal-formado.
<books> <book code=10>
<title>XML Como Programar <publisher>Bookman</title> </publisher> </book> <books> O valor do atributo code não contém aspas nem apóstrofes, o que torna o documento mal-formado.
5. Existe diferença entre maiúsculas e minúsculas (case-sensitive):
Existem softwares que são chamados de analisadores sintáticos (parsers),
que lêem os documentos, verificando sua sintaxe e relatando possíveis erros,
permitindo, via programa, acesso ao conteúdo dos documentos.
Caracteres Reservados
Existem caracteres que, por serem reservados, não podem ser utilizados em
documentos XML. A linguagem XML oferece substitutos para estes casos. Tais
substitutos começam por “&” e terminam por “;” (referência a entidade).
Os caracteres reservados para a linguagem XML e suas referências são:
Para caracteres especiais que não possam ser inseridos utilizando-se o
teclado, o código direto do caractere pode ser utilizado, de acordo com a tabela
empregada.
A Tabela 1 apresenta alguns dos caracteres especiais utilizados nos
documentos XML, e suas respectivas referências.
< < > > & & ‘ ' “ "
<books> <book code=10>
<title>XML Como Programar <publisher>Bookman</title> </publisher> </Book> <books> A tag de fechamento </Book> possui um caractere em maiúsculo, e a de abertura (<book>) não, tornando o documento mal-formado.
Uma lista completa das referências a entidades pode ser obtida no site do W3C em:
http://www.w3.org/TR/REC-html40/sgml/entities.html
Tabela 1 - Algumas Referências de Entidades
Caractere Referência Caractere Referência Espaço   ê ê
§ § ì ì © © í í ® ® î î ¼ ¼ ñ ñ ½ ½ ò ò ¾ ¾ ó ó À à ô ô á á õ õ â â ÷ ÷ ã ã ù ù å å ú ú ç ç û û è è • • é é ™ ™
O exemplo representado na Figura 8 demonstra a utilização de referências
de entidades, apresentando o caractere 1 em diferentes tabelas de caracteres.
Figura 10 - Exemplo da utilização de caracteres especiais
Comentários
Os comentários em um documento XML contêm informações e notas. As
marcações são <!-- para início, e --> para fim de comentário. Caracteres
reservados (<, >) podem estar contidos dentro de comentários.
Figura 11 - Exemplo de utilização de comentários
Como se pode perceber na segunda linha de comentário existe um caractere
reservado <, mas a visualização do documento no navegador acontece de
maneira normal.
Assim como acontece nas linguagens de programação, os comentários em
documentos XML podem ser utilizados no sentido de prover maiores informações
para os desenvolvedores que os manipulam.
Marcação
O elemento de marcação XML, como já citado, consiste em uma marca de
abertura, no conteúdo e em uma marca de finalização. Diferentemente do HTML,
todas as marcas de abertura em XML devem ter uma marca de finalização. Por
exemplo,
<img src = “logo.gif”>
está correto em HTML, mas em XML a marca de finalização também deveria ser
fornecida, como em
<img src = “logo.gif”> </img>
Como este elemento não cantem conteúdo (dados de caracteres), ele é chamado
de elemento vazio. A marca vazia pode ser escrita de forma mais concisa, como
<img src = “logo.gif”/>
que usa a barra ( / ) para indicar o término.
Conforme citado no capítulo 2, os elementos definem a estrutura, e podem ou nao
ter conteúdo (elementos filhos ouo dados de caracteres). Os atributos descrevem
elementos. Um elemento pode ter zero, um ou mais atributos a ele associados e
são colocados dentro da marca de abertura do elemento.
Os nomes de elementos e atributos em XML podem ter qualquer comprimento e
podem conter letras, dígitos, sublinhados, hífens e pontos, mas devem começar
com uma letra ou um sublinhado. Além disso, não podem conter espaços em
branco.
Assim, a marcação
<telefone residencial> </telefone residencial>
está errada, pois contém espaço em branco no nome do elemento, uma
alternativa seria, por exemplo, o uso do sublinhado
<telefone_residencial> </telefone_residencial>
Estrutura Lógica dos Documentos XML
Uma vez que os elementos, em um documento XML, estão organizados
hierarquicamente, um documento pode ser representado na forma de uma árvore
sem que haja a perda de nenhuma informação. Elementos filhos aparecem como
nós filhos de um elemento pai.
Os atributos não são considerados como nós filhos de um elemento, mas
como informações adicionais aos elementos.
Figura 12 - Exemplo de estrutura de documento XML
Assim, tendo-se o documento de exemplo apresentado na Figura 9, pode-se
representá-lo na forma de uma árvore, conforme na Figura 10, pode-se visualizar
a sua estrutura lógica.
Figura 13 - Estrutura lógica de um documento XML
A representação da estrutura lógica de um documento XML na forma de uma
árvore é apenas uma forma de se obter uma melhor visualização da maneira
como estão dispostos os elementos do documento e sua estrutura.
Exercícios
1. Identifique e corrija o(s) erro(s) em cada um dos seguintes itens:
a) <my Tag>texto do elemento<my Tag>
b) <!PI value!> <!-- uma instrução de processamento simples -->
c) <myXML>trabalhando com XML!!</MyXML>.
d) <CDATA>aqui temos uma CDATA . </CDATA>
e) <xml> x<5 && x>y </xml> <!-- condição para um teste em Java -->
2. Faça uma análise do documento XML abaixo indicando onde e quais são
os erros de formação que existem:
a)
<?xml version=”1.0” encoding=UTF-8?> <MICRO>
<HD>Capacidade 20 Gb</Hd> <DISQUETE>Capacidade 1,44 Mb</MICRO> </DISQUETE>
b)
<xml version=”1.0” encoding=”ISO-8859-1”?> <curso>
<DISCIPLINA fase=“6”>Tópicos Especiais III <OBJETIVO>Ensinar XML</OBJETIVO> <METODOLOGIA>Laboratórios<metodologia> <professor>Rafael</Professor> </Curso>
3. Corrija os erros do documento do exercício 1.b. e adicione mais duas
disciplinas da 6ª fase ao documento.
4. Represente, na forma de uma árvore, a estrutura lógica do documento
obtido como resposta do exercício 3.
5. De posse das estruturas em forma de árvore abaixo, construa a estrutura
do documento XML correspondente.
a)
top related