Aprendendo XML
por meio de um
estudo de caso
Willie Dresler Leiva
São Carlos,
7 de outubro de 1999
•
•
•
•
•
•
•
•
•
•
•
•
•
Roteiro
Documentos WYSIWYG, HTML e XML
Descrição do estudo de caso
Passos para criar e apresentar documentos XML
Modelo dos objetos para laboratórios de pesquisa
Definição de tipo de documentos sobre laboratórios
Um documento XML com 2 laboratórios de pesquisa
Documento XSL para apresentar o documento XML
Modos alternativos para apresentar o documento XML
Processando XML com SAX
Processando XML com DOM
Relacionamentos entre os vários conceitos
Editores XML
Considerações finais
Documento WYSIWYG versus XML
XML
XSL
DTD
Limitações de HTML
• HTML não permite criar novos elementos
• Pouca semântica pode ser extraída de um documento,
levando à dificuldade de manutenção e compreensão. A
informação é representada em termos de layout
• Documentos não são reutilizáveis
Vantagens de XML
•Criar elementos e estruturas. Ex.: <Titulo> Seminário
</Titulo>, em vez de <H1>Seminário</H1> de HTML
• Há documento para definição de documentos (DTD)
• XML é mais legível e flexível que HTML
• Os elementos não influenciam na forma como os
documentos são apresentados
• XML é mais simples que SGML
Estudo de caso
• Objetivos: criar um documento XML sobre laboratórios
de pesquisa, apresentar esse documento na WWW
• Sobre cada laboratório, é importante incluir suas linhas
de pesquisa e os professores que nele atuam
• Dados gerais sobre cada laboratório: sigla, significado
da sigla, departamento, instituto, home-page, foto ou
logotipo
• Dados sobre as linhas de pesquisa: nome, descrição e
tópicos específicos
• Dados sobre os professores: nome, nível (titular,
adjunto ou associado), endereços eletrônicos, páginas
na WWW
Como implementar o estudo de caso
• Criar um modelo de objetos do domínio, definindo um
conjunto de classes que represente a informação
armazenada nos documentos XML desse domínio (a
literatura sobre XML não inclui esse passo)
• Definir o tipo do documento escrevendo uma DTD
• Com base na DTD, escrever o(s) documento(s) XML
• Definir correspondência entre elementos XML e HTML
• A partir dessa correspondência escrever o arquivo XSL
• Se quiser, incluir elementos da Cascading Style Sheet
Modelo de objetos, em UML
Como escrever uma DTD
• Uma DTD contém basicamente elementos e atributos
• Exemplos de como definir um elemento:
• <!ELEMENT Imagem EMPTY>
• <!ELEMENT QualquerCoisa ANY>
• <!ELEMENT cliente (nome, endereco, cidade)>
• <!ELEMENT fruta ( laranja | banana | pera )>
• <!ELEMENT pessoa (nome, endereco, telefone*)>
• <!ELEMENT empresa (nome, CGC, FAX?)>
• <!ELEMENT paragrafo (#PCDATA)>
Como descrever atributos na DTD
• Exemplos de como definir atributos de um elemento:
• <!ATTLIST Telefone DDD CDATA #IMPLIED>
• <!ATTLIST Fruta qualidade (Boa|Ruim|Indiferente)>
• <!ATTLIST Fruta comestivel #FIXED “SIM”>
• <!ATTLIST Aluno NumeroUSP ID #REQUIRED>
• <!ATTLIST Chamada Aluno IDREF #REQUIRED>
• <!ATTLIST Professor PAE IDREFS #IMPLIED>
DTD sobre laboratórios
<!-- Este DTD descreve os laboratorios de um Departamento -->
<!ELEMENT Laboratories (Laboratory+)>
<!-- Nao mostra o texto com espacos em branco adicionais -->
<!ATTLIST Laboratories xml:space (default | preserve) 'default'>
<!ELEMENT Laboratory (Group, Identification?, Department, Institute,
Page?, Picture?, Research*, Teacher+)>
<!ELEMENT Group (#PCDATA)>
<!ELEMENT Identification (#PCDATA)>
<!ELEMENT Department (#PCDATA)>
<!ELEMENT Institute (#PCDATA)>
<!ELEMENT Page (#PCDATA)>
<!ELEMENT Picture EMPTY>
<!-- Picture tem um texto alternativo, assim como IMG em HTML -->
<!ATTLIST Picture
file CDATA #REQUIRED
text CDATA #IMPLIED>
<!ELEMENT Research (Line, Description?, Topic*)>
<!ELEMENT Line (#PCDATA)>
<!ELEMENT Description (#PCDATA)>
<!ELEMENT Topic (#PCDATA)>
<!ELEMENT Teacher (Name, Email*, HomePage*)>
<!ATTLIST Teacher level (full | associate | assistant) #IMPLIED>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Email (#PCDATA)>
<!ELEMENT HomePage (#PCDATA)>
Um documento XML de laboratórios
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE Laboratories SYSTEM "lab.dtd">
<?xml-stylesheet type="text/xsl" href="lab.xsl"?>
<Laboratories>
<Laboratory>
<Group>LABES</Group>
<Identification>Laboratório de Engenharia de Software </Identification>
<Department>SCE</Department>
<Institute>ICMC</Institute>
<Page>http://nt-labes.icmc.sc.usp.br/</Page>
<Picture file="labes.jpg" text="LABES photo"/>
<Research>
<Line> Teste e Validação de Sistemas de Tempo Real/Reativos </Line>
<Description>Estudos de estratégias de teste e validação baseados em máquinas de
transição de estados como, por exemplo: máquinas de estados finitos(MEFs),
statecharts e redes de Petri, integrados a um ambiente de desenvolvimento de
software como o Statsim, que apóia a especificação e simulação de statecharts e
MEF </Description>
</Research>
Um documento XML (continuação)
<Research>
<Line> Estudo Teórico e Aplicação de Critérios de Teste e Validação na Produção
de Software </Line>
<Description> Estudo teórico e empírico, definição e comparação de critérios de
teste e implementação de ferramentas de apoio às atividades de teste na produção de
software. Atividades de comparação entre critérios de teste funcional, estrutural e
baseados em erros também são conduzidas. Esses aspectos são explorados tanto em
nível de teste de unidade como no teste de integração. Adicionalmente, dentro dessa
perspectiva, a abordagem do desenvolvimento de software orientado a objeto
também está sendo considerada. </Description> </Research>
<Research>
<Line> Modelagem de Aplicações Hipermídia </Line>
<Description>Um modelo para sistemas hipertexto baseado em StateCharts foi
inicialmente desenvolvido (HMBS). Ele foi estendido para aplicações multimídia,
com ênfase na sincronização. Um protótipo de suporte ao HMBS foi então
construído. Essa linha de pesquisa inclui também modelagem conceitual e avaliação
de hiperdocumentos, bem como o suporte a aplicativos da WWW. </Description>
</Research>
<Research>
<Line> Reengenharia de Software </Line>
<Topic>Engenharia Reversa de Software</Topic>
Um documento XML (final)
<Topic>FUSION-RE</Topic> <Topic>FUSION-RE/I</Topic>
<Topic>Engenharia Progressiva de Software</Topic> </Research>
<Research>
<Line> Qualidade de Software</Line>
<Topic>Desenvolvimento de ferramentas</Topic>
<Topic>Validação de técnicas para gestão de projetos de software</Topic>
</Research>
<Research>
<Line>Workflow e Gerenciamento de Documentos </Line> </Research>
<Teacher level="full">
<Name>Paulo César Masiero</Name> <Email>[email protected]</Email>
<HomePage>http://www.icmc.sc.usp.br/~masiero</HomePage>
<HomePage>http://www.icmc.sc.usp.br/staff/masiero.html </HomePage>
</Teacher>
<Teacher level="assistant">
<Name>J. Carlos Maldonado</Name> <Email>[email protected]</Email>
<HomePage>http://www.icmc.sc.usp.br/staff/jcmaldon.html </HomePage>
</Teacher>
</Laboratory>
....
</Laboratories>
Convertendo XML em HTML com XSL
XSL (2ª parte)
XSL (3ª parte)
XSL (4ª parte)
XSL
(5ª parte)
Documento XSL (última parte)
Document Object Model
• DOM fornece um modelo de objetos em árvore
• Um parser que implementa DOM cria na memória uma
hierarquia de objetos, com base no documento XML
Simple API for XML
• SAX é muito simples, porque o parser apenas
lê o documento XML e dispara alguns eventos,
dependendo das tags que encontra no
documento XML
• A aplicação que usa o parser SAX precisa criar:
• um modelo de objetos personalizado para
armazenar toda a informação própria de seus
documentos XML
• um interpretador dos eventos, gerados pelo
parser SAX, que crie objetos conforme o
modelo acima
Comparando DOM e SAX
• SAX pode ser rápido se o modelo de objetos for
simples. Neste caso, é mais rápido que DOM
porque dispensa a criação de um modelo de
objetos na forma de árvore.
• Para criar um sistema de gerenciamento de
informações sobre documentos, ou para lidar
com dados que são melhor descritos como uma
árvore, DOM é uma solução natural.
• Para trabalhar principalmente com dados
estruturados, ou gerados pelo computador, SAX
pode ser mais conveniente.
Exemplos de SAX e DOM
Baseado em árvore
<TABLE>
<TBODY>
<TR>
<TD>Shady Grove</TD>
<TD>Aeolian</TD>
</TR>
<TR>
<TD>Over the River, Charlie</TD>
<TD>Dorian</TD>
</TR>
</TBODY>
</TABLE>
Documento HTML
API DOM
API SAX
start table
start element: tbody
start element: tr
start element: td
characters: Shady Grove
end element: td
start element: td
caracteres: Aeolian
end element: td
end element: tr
Baseado em evento
Processando XML com SAX
XML e SAX (continuação)
XML e SAX (final)
Processando XML com DOM
XML Notepad
XML Editing Environment, Naturally in Java
Considerações Finais
• Grande vantagem do XML sobre o HTML:
separação entre conteúdo e apresentação
• Não existe uma especificação final do XSL
• XML é simples, XSL nem tanto!
• Nenhum browser hoje implementa XLL
•Tendência dos principais fabricantes
adotarem estas tecnologias
Bibliografia
•
•
•
•
•
•
•
Estudo de caso: http://www.icmc.sc.usp.br/~wdl/xml
“XML for the absolute beginner”
XSL Developer’s Guide
“SAX: the Simple API for XML”
Tutorial sobre SAX
“Should I use SAX or DOM?”
M.G. Pimentel, C.A. Teixeira e C.C. Pinto.
"Hiperdocumentos Estruturados na WWW: Teoria e
Prática". Anais do XIX Congresso da SBC, JAI, pp.
367-424.
Download

Conceitos de XML - Laboratório Associado de Computação e