Você está na página 1de 44

XML

Extensible Markup Language

XML Viso Geral


Quando referido XML, estamos normalmente a referir XML e a um conjunto de tecnologias relacionadas
XSLT XML XQL SGML

W3C

HTML

SAX

DO M

JDOM

Onde utilizado XML


Configurao
Usado extensivamente na arquitectura J2EE

Troca de dados
Um modo alternativo aos formatos proprietrios de troca de informao

B2B transaces na Web


Electronic business orders (ebXML) Financial Exchange (IFX) Messaging exchange (SOAP)

O que a Anotao dum texto?


Um meio de tornar explcita uma interpretao desse texto.

Exemplo1: sinais de pontuao


A linguagem Java muito produtiva !

Exemplo2: anotao (i.e marca)


A linguagem <nome>java</nome> muito produtiva <esclamacao/>
4

Anotar um documento
A tarefa de anotar um documento num sistema de processamento compreende as seguintes fases:
1. Analisar a estrutura da informao e os atributos que a caracterizam 2. Determinar quais as funes de processamento que produziro o formato desejado para cada elemento 3. Inserir as marcas/anotaes no texto (pode ser uma aplicao a faz-lo)
5

Estrutura, semntica e formato


Exemplo: registo de uma msica
HTML
Semntica <dt> <strong> Grndola </strong> <dd>msica <b> usada </b> como sinal de aco militar <ul> <li>Autor: Jos Afonso <li>Data: 1972 Estrutura Formatao <li>Editora: Valentim de Carvalho </ul>

XML
<MUSICA> Semntica <TITULO>Grndola</TITULO> <OBS>msica usada como sinal de aco militar</OBS> <AUTOR>Jos Afonso</AUTOR> <DATA>1972</DATA> <EDITORA>Valentim de Carvalho</EDITORA> </MUSICA> Estrutura

Comparao
HTML:
Estrutura Semntica Formato

XML:
mais semntica, tambm estrutura, sem formato Facilita a leitura e a interpretao relativamente realidade Suporta a pesquisa Flexvel Necessita indicaes de apresentao
7

Metalinguagem
SGML Standard Generalized Markup Language (1986, ISO 8879) Charles Goldfarb, Ed Mosher, Ray Lorie (1969, IBM) Anotao de documentos para facilitar o seu processamento Define os mecanismos bsicos para as linguagens concretas HTML Hypertext Markup Language (1993) Tim Berners-Lee (criou a Web) Linguagem SGML concreta para facilitar a apresentao de documentos na Internet

XML eXtensible Markup Language (1996) Jon Bosak para W3C (WWW Consortium) conjunto de regras que os documentos devem seguir (simplificao do SGML, de processamento pesado, pelas excepes que admite)

Exemplo de um documento XML Simple


<?xml version="1.0"?> <authors> <name> <firstname>Larry</firstname> <lastname>Brown</lastname> </name> <name> <firstname>Marty</firstname> <lastname>Hall</lastname> </name> ... </authors>

Estrutura de um Documento XML

XML Prolog Elementos Atributos Character Data (CDATA) Processing Instructions Comments Entity References
10

Documento XML - Estrutura e sintaxe


Documento de texto (Unicode character set); Estrutura de um documento XML:
document ::= prolog? element

Documento

<?xml version=1.0?>

Opcional

<elemento_raiz> ... </elemento_raiz>

Implicaes desta estrutura:


Um documento XML contm um ou mais elementos; Existe exactamente um elemento que no est contido por nenhum outro;

Este elemento denominado por root ou document element;

11

Documento XML - Estrutura e sintaxe


O prlogo (prolog) opcional e pode conter:
Declarao do XML
Contm informao relativa ao documento a ser utilizada pelo parser.

Prlogo

<?xml version=1.0 encoding=UTF-8 standalone=yes?>

version - verso da especificao que o documento cumpre;

encoding - tipo de codificao utilizado (por defeito: UTF-8 ou UTF-16);

standalone - indica se a informao que resulta do processamento do documento depende ou no de declaraes externas ao mesmo (opcional).

Declarao do DTD

Indica quais as restries a aplicar ao documento atravs de DTD (Document Type Definition) interna e/ou externa ao documento.

12

Exemplo Prolog
<?xml version="1.0" standalone="yes"?> <DOCTYPE authors [ <!ELEMENT authors (name)*> <!ELEMENT name (firstname, lastname)> <!ELEMENT firstname (#PCDATA)> <!ELEMENT lastname (#PCDATA)> ]> <authors> <name> <firstname>James</firstname> <lastname>Gosling</lastname> </name> ... </authors>

13

Documento XML - Estrutura e sintaxe


Elementos
Estrutura de um elemento:
element ::= ( STag content ETag ) | EmptyElementTag

Exs:
<nome> Ana Santos </nome>

Elemento com contedo

<idade/>

Elemento sem contedo

O contedo (content) de um elemento pode ser qualquer combinao de texto e outros elementos

O texto utilizado nas marcas (STag, ETag ou EmptyElementTag) case-sensitive


14

Documento XML - Estrutura e sintaxe


Elementos

Elementos
Componentes bsicos de um doc. XML. So identificados por tags Exemplos:
<titulo>O Rei vai nu</titulo> <autor>Eu</autor>

Podem existir elementos vazios. Terminam com o smbolo /


<p/>

O nome dos elementos devem comear por uma letra case-sensitive: <p> diferente de <P> Pode conter texto ou outros elementos
<titulo>O Rei vai nu <autor>Eu</autor></titulo>

No se podem omitir ou sobrepor


<titulo>O Rei vai nu<autor>Eu</titulo></autor> No vlido

15

Documento XML - Estrutura e sintaxe


Atributos
Um elemento pode conter atributos. A sintaxe a seguinte: Attribute ::= attName = AttValue
Ex:

<contacto tipo = pessoal > <nome> Paulo Direito </nome>

<email endereo = pad@mail.pt />


</contacto>
AttValue ::= charSequence | charSequence

Atributos num elemento: com contedo STag ::= < elementName (S Attribute)* S? > sem contedo EmptyElementTag ::= < elementName (S Attribute)* S? /> Separadores: S ::= {#x20 | #x9 | #xD | #xA}+

16

Documento XML - Estrutura e sintaxe


Atributos

Atributos
Pares de nome-valor includos dentro dos elementos O valor deve estar sempre entre aspas <titulo nome=O Rei vai nu/> <frase autor=Eu>O Benfica o maior</frase> No se pode repetir o mesmo atributo num mesmo elemento

<frase autor=Eu autor=Tu/> No vlido

17

Documento XML - Estrutura e sintaxe


Referncias
Character References:
Possibilitam utilizar no documento o cdigo Unicode de um carcter em vez do seu literal. CharRef ::= (&# decimalCode ;) | (&#x hexadecimalCode ;)

Entity References:
Mecanismo semelhante s macros da linguagem C. Permitem inserir no documento o contedo de entidades prdefinidas ou definidas atravs de DTD. EntityRef ::= (& entityName ;). Nomes das 5 entidades pr-definidas: apos - amp - & quot - lt - <

18

Documento XML - Estrutura e sintaxe


Referencias - Exemplo
<?xml version=1.0?> <!-- Exemplo de utilizao de references --> <catlogo> <item> <descrio> Descrio do &lt; item &gt; </descrio> <preo> Preo em &#x20ac; </preo> </item> </catlogo>

19

CDATA
Quando um elemento XML processado, o texto entre as marcas tambm processado. A existncia de certos caracteres especiais no texto (<,>, etc..) pode provocar a ocorrncia de erros de processamento. A soluo usar referencia a entidades ou usar um seco CDATA
<?xml version="1.0" encoding="ISO-8859-1"?> <server> <port status="accept"> <![CDATA[8001 <= port < 9000]]> </port> </server>

20

CDATA
Character Data (CDATA)
Permite inserir caracteres no tratados pelo parser Caracteres do tipo: >, >, &, tags, etc.. Syntax: <![CDATA[]>
<MarkupSample> Isto um exemplo errado de uso XMl com <tags> </MarkupSample>
<MarkupSample> Isto um exemplo correcto de uso XMl com <![CDATA[<tags>]] </MarkupSample>

21

Primeiro documento

Um documento XML
<?xml version="1.0" standalone="yes" ?> <foo> Bom dia a quem chegou a horas! </foo>

<? ... ?> uma instruo de processamento (xml)


Um atributo um par nome=valor Standalone=yes significa que no so necessrios documentos auxiliares O elemento <foo> constitudo por uma marca de incio, uma marca de fim e contedo 22

Ainda o primeiro documento


Variante
<?xml version="1.0" standalone="yes" ?> <p> Bom dia a quem chegou a horas! </p> <?xml version="1.0" standalone="yes" ?> <saudacao> Bom dia a quem chegou a horas! </saudacao>

Outra

As marcas podem ter trs tipos de significado


Estrutura, semntica e estilo
Estrutura organiza o documento (em rvore) Semntica relaciona com o mundo Estilo determina a apresentao

As trs formas do documento so equivalentes pois tm a mesma estrutura e contedo O significado est na cabea do leitor (terceira forma a melhor)

23

Apresentao
Ensinando o navegador a apresentar os elementos
Definir folha de estilo (CSS) Partilhvel por vrios documentos, tal como um conjunto de marcas partilhado Diferentes estilos permitem adequar a diferentes meios

Ficheiro saudacao.css
saudacao {display : block; font-size : 24pt; font-weight : bold; }

Nova instruo de processamento liga o estilo


<?xml version="1.0" standalone="yes" ?> <?xml-stylesheet type="text/css" href="saudacao.css" ?> <saudacao>

24

Verificao de documentos XML


Um documento XML diz-se bem-formado sse:

<?xml version="1.0" standalone="...?> valores de atributos entre aspas a marcas de abertura correspondem marcas de fecho marcas so encaixadas correctamente

Isto atravs do processamento possvel construir uma estrutura em rvore


25

Documento XML bem formado - Exemplo


<?xml version=1.0?> <!- Documento XML bem formado --> <contactos> <contacto tipo=profissional> <nome> Ana Pires </nome> <email endereo= ana@mail.pt /> </contacto> <contacto tipo=profissional> <nome> joao das Neves </nome> <email endereo=jneves@mail.pt /> </contacto> <contacto tipo=pessoal> <nome> Ana Paulo </nome> <email endereo=paulo@mail.pt /> </contacto> </contactos>

Resultado no IE6

26

Exemplos de erros de m formao


Estrutura
<?xml version= "1.0"?> <!-- Documento XML bem formado exemplo1 --> <contactos> <contacto tipo= "profissional"> <nome> Ana Pires <email endereco ="ana@mail.pt" /> </contacto> </nome> <contacto tipo='profissional'> <nome> joao das Neves </nome> <email endereco = "jneves@mail.pt" /> </contacto> <contacto tipo= "pessoal"> <nome> Ana Paulo </nome> <email endereco = "paulo@mail.pt" /> </contacto> </contactos>

27

Exemplos de erros de m formao


Sintaxe
<?xml version= "1.0"?> <!-- Documento XML bem formado exemplo1 --> <contactos> <contacto tipo= "profissional"> <nome> Ana Pires <email endereco ="ana@mail.pt" /> </contacto> </nome> <contacto tipo='profissional'> <nome> joao das Neves </nome> <email endereco = "jneves@mail.pt" /> </contacto> <contacto tipo= pessoal> <nome> Ana Paulo </nome> <email endereco = "paulo@mail.pt" /> </contacto> </contactos>

28

Resumindo regras

29

Resumindo regras

Maisculas e Minsculas so tratadas de forma diferente No se podem sobrepor marcas


<a><b></a></b> no permitido

No se podem ignorar marcas


</p> e </b> no podem ser esquecidas

Caso no contenham texto, o fim da marcapode ser representada com / na marca de incio
<br></br> equivalente a <br />

30

Exemplo de HTML/XML - Receita


<html> <body> <h1>Rhubarb Cobbler</h1> <h2>Maggie.Herrick@bbs.mhv.net</h2> <h3>Wed, 14 Jun 95</h3> <font face="arial,Helvetica"> Rhubarb Cobbler made with bananas as the main sweetener.<br> It was delicious. Basicly it was <p> <table border=1> <tr><td> 2 1/2 cups <td> diced rhubarb <tr><td> 2 tablespoons <td> sugar <tr><td> 2 <td> fairly ripe bananas <tr><td> 1/4 teaspoon <td> cinnamon <tr><td> dash of <td> nutmeg </table>

<p>
Combine all and use as cobbler, pie, or crisp.<br> Related recipes: <a href="#GardenQuiche">Garden Quiche</a> </font> </body>

</html>

31

Exemplo de HTML/XML - Receita

32

Exemplo de HTML/XML - Receita


<?xml version="1.0" encoding="iso-8859-1"?> <recipe id="117" category="dessert"> <title>Rhubarb Cobbler</title> <author><email>Maggie.Herrick@bbs.mhv.net</email></author> <date>Wed, 14 Jun 95</date> <description> Rhubarb Cobbler made with bananas as the main sweetener. It was delicious. </description> <ingredients> <item><amount>2 1/2 cups</amount><type>dicedrhubarb </type></item> <item><amount>2 tablespoons</amount><type>sugar</type></item> <item><amount>2</amount><type>fairly ripe bananas</type></item>

<item><amount>1/4 teaspoon</amount><type>cinnamon</type></item>
<item><amount>dash of</amount><type>nutmeg</type></item> </ingredients> <preparation> Combine all and use as cobbler, pie, or crisp.

</preparation>
<related url="#GardenQuiche">Garden Quiche</related> </recipe>

33

Exemplo de HTML/XML - Receita

34

Namespaces

35

Problema
<table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>
informao sobre uma tabela

<table> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table>


informao em uma tabela

Se estes dois XML forem colocados juntos num mesmo documento, existir um conflito de nomes porque em ambos os documentos existe o elemento <table> com definio e contedo diferente
36

Problema (2)
<table> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table> <table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>
37

Resoluo uso de prefixo


<h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table>
informao sobre uma tabela

<f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>


informao em uma tabela

Agora no haver conflito de nomes porque os dois elementos usam diferentes nomes para as tabelas<table> (<h:table> e <f:table>).
38

Resoluo
NameSpaces
Os URLs so usados no por apontarem para uma dada localizao mas por serem exclusivos Problema: quando se juntam dois documentos que usam a mesma etiqueta com significados diferentes Soluo: NameSpace - uma super-etiqueta com a forma dum URL
39

Resoluo uso de prefixo


<h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table>

<f:table xmlns:f="http://www.w3schools.com/furniture"> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>

40

Etiquetao parcial: prefixos


Declara-se um prefixo especial para o NameSpace e utiliza-se esse prefixo para etiquetar os elementos desejados. Os prefixos declaram-se com xmlns:prefix.

Um prefixo nunca poder comear por XML ou xml.


Note que o endereo usado para identificar o namespace, no o usado pelo analisador sintctico para obter informao. O nico propsito dar ao namespace um nico nome. frequentemente usar-se o namespace como ponteiro para uma pgina Web contendo informao sobre o namespace.

41

Simple API for XML (SAX)


Interface orientada a eventos org. xml. sax.* package

Evento
<?xml version="1.0" ?> <trip> </trip>

Evento
SAX Evento
42

Document Object Model (DOM)


Interface orienta a uma estrutura em forma de rvore
Apresenta um modelo do documento acessvel atravs de objectos API:
org. w3c. dom.* package

DOM pode ser utilizado para construir documentos XML


<?xml version="1.0" ?> <trip> </trip>

DOM
43

Concluso da introduo
XML pode codificar uma representao para
um documento ordinrio um registo estruturado (e.g. ordem de compra) um registo de dados (e.g. o resultado de uma interrogao) um objecto com dados e mtodos meta-dados, entidades e tipos (XMI) meta-contedos acerca de um site Web (CDF)

XML auto-contido e pode ser validado, interpretado e processado sem interveno humana Pode ser usado para:
formato de ligao (para transferncia de dados entre cliente e servidor) formato de troca de informao (e.g. entre a aplicao e a base de dados) formato persistente (para guardar dados)

Alguns DTD existentes: CDF (contedo Web), OFX (Financial), OSD (Open Software Distribution), CML (Chemical), MML (Mathematical)

44

Você também pode gostar