Você está na página 1de 27

XML: uma introduo prtica

<xml:fundamentos />
Helder da Rocha
www.argonavis.com.br

Como criar um documento XML


XML no estabelece nenhum vocabulrio mas

apenas regras mnimas de estrutura


Para criar o menor arquivo XML possvel:
Abra um editor de textos
Salve o arquivo com extenso .xml
Escreva um elemento raiz vazio

<x/>

Salve o arquivo
Abra no Internet Explorer

Um dos menores documentos XML

<nome> Fulano de Tal </nome>


Elemento raiz

Um elemento

<nome> Fulano de Tal </nome>


Etiqueta
inicial

Contedo do
Elemento

Etiqueta
final

Elemento vazio

<nome></nome>

<nome/>

Elementos podem conter elementos


fulano_de_tal.xml

<contato>
<nome>Fulano de Tal</nome>
<email>fulano@site.com.br</email>
<telefone>
<ddd>11</ddd>
<numero>8765 4321</numero>
</telefone>
</contato>
5

Componentes de um documento
rvore XML
ns,
raiz,
galhos e
folhas
Prlogo
Comentrios
Instrues de processamento
Elementos
Atributos
Ns de texto
Entidades
6

Estrutura XML
Um documento XML pode ser representado como uma

rvore. A estrutura formada por vrios ns.

<?xml version="1.0" encoding="iso-8859-1" ?>


<!-- Isto um comentrio -->
informaes usadas
pelo processador XML
<cartao-simples>
<logotipo href="/imagens/logo14bis.gif" />
<nome>Alberto Santos Dumont</nome>
<endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco>
<email>dumont@14bis.com.br</email>
um "n" pode ser ...
<telefone tipo="residencial" >
um elemento,
<ddd>21</ddd>
um atributo,
um bloco de texto,
<numero>2313011</numero>
um comentrio,
</telefone>
uma instruo,
</cartao-simples>
uma declarao,

uma entidade, ... 7

Prlogo
Declarao XML
Comentrio
Instruo de processamento
Declarao de tipo de documento
<?xml version="1.0" encoding="iso-8859-1" ?>
<!-- Isto um comentrio -->
<?comando tipo="simples" parametro ?>
<!DOCTYPE cartao-simples SYSTEM "cartoes.dtd">
<cartao-simples>
<logotipo href="/imagens/logo14bis.gif" />
<nome>Alberto Santos Dumont</nome>
<endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco>
<email>dumont@14bis.com.br</email>
<telefone tipo="residencial" >
<ddd>21</ddd>
<numero>2313011</numero>
</telefone>
</cartao-simples>

N raiz e elementos
elemento raiz

n raiz ( / )

<?xml version="1.0" encoding="iso-8859-1" ?>


<cartao-simples>
<logotipo href="/imagens/logo14bis.gif" />
<nome>Alberto Santos Dumont</nome>
<endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco>
<email>dumont@14bis.com.br</email>
<telefone tipo="residencial" >
<ddd>21</ddd>
elementos
elementos
<numero>2313011</numero>
</telefone>
</cartao-simples>

Atributos
S podem conter um descendente (s texto)
<?xml version="1.0" encoding="iso-8859-1" ?>
<cartao-simples>
<logotipo href="/imagens/logo14bis.gif" />
<nome>Alberto Santos Dumont</nome>
<endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco>
<email>dumont@14bis.com.br</email>
<telefone tipo="residencial" >
<ddd>21</ddd>
<numero>2313011</numero>
</telefone>
atributos
</cartao-simples>

10

Ns de texto
No podem ter descendentes (so as folhas da rvore)
<?xml version="1.0" encoding="iso-8859-1" ?>
<cartao-simples>
<logotipo href="/imagens/logo14bis.gif" />
<nome>Alberto Santos Dumont</nome>
<endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco>
<email>dumont@14bis.com.br</email>
<telefone tipo="residencial" >
<ddd>21</ddd>
<numero>2313011</numero>
ns de
</telefone>
texto
</cartao-simples>

11

Entidades
So constantes associadas a um valor de texto
Podem aparecer em qualquer lugar do documento
Substitudas durante o processamento do documento
Sintaxe:
&ENTIDADE;
Exemplo:
&data_de_hoje;
Entidades pr-definidas:
&lt; que corresponde a <
&gt; que corresponde a >
&amp; que corresponde a &
&quot; que corresponde a "
&apos; que corresponde a '

12

Entidades de caracteres
Substitudas durante o processamento do documento
Sintaxe:
&#CDIGO_16b_decimal;
&#xCDIGO_16b_hexadecimal;
Exemplo:
&#x0020; ou &#32;
Um espao em Unicode
Veja em www.unicode.org/charts/

13

Elementos e atributos
Regras bsicas
Etiqueta inicial e final tm que ter o mesmo nome
(considerando diferena de maiscula e minscula)
No pode haver espao depois do < nas etiquetas iniciais
nem depois do </ nas finais
Atributos tm sempre a forma nome="valor" ou nome =
'valor':
aspas podem ser usadas entre apstrofes e apstrofes podem

ser usados entre aspas


aspas e apstrofes no podem ser neutralizados mas sempre
podem ser representados pelas entidades &apos; e &quot;

No pode haver atributos na etiqueta final


14

Elementos e atributos (2)


Elementos mal formados
<Profisso>Arquiteto</profisso>
<TR><TD>item um</td></tr>
<>139.00</>
H vrias maneiras de representar a mesma

informao em XML

<data>23/02/1998</data>
<data dia="23" mes="02" ano="1998" />
<data>
<dia>23</dia>
<mes>02</mes>
<ano>1998</ano>
</data>
15

Quando usar elementos/atributos


Questo de design
Elementos geralmente referem-se a coisas que tm
atributos
Atributos geralmente so caractersticas dessas coisas
que podem ser descritas com poucas palavras
Questo de suporte tecnolgico
Atributos no podem conter subelementos
Atributos so mais fceis de serem validados num DTD

16

Identificadores
Nomes de atributos e elementos
Podem conter
qualquer caractere alfanumrico ou ideograma
. (ponto)
- (hfen)
_ (sublinhado)
No podem comear com
ponto,
hfen ou
nmero

17

Identificadores
Elementos bem formados
< >

</ >

< xml:lang='ru'>
<> </>
< ="1799"
="1837"> </>
</>
<_1_/>
<cdd:gen.inf cdd:cod="005">Introduo a XML</cdd:gen.inf>

Elementos mal formados


<3-intro>Fundamentos</3-intro>
<carto de crdito>1234567887654321</carto de crdito>

18

Contedo misto
<trecho>
<secao>2</secao>
<paragrafo>A unidade de informao
dentro de um documento XML o
<definicao>elemento</definicao>. Um
elemento formado por duas
<definicao>etiquetas</definicao> que
atribuem algum significado ao contedo.
</paragrafo>
</trecho>

19

Seo CDATA
Ignora efeitos especiais dos caracteres
<titulo>Curso de XML</titulo>
<exemplo>Considere o seguinte trecho de
XML:
<![CDATA[
<empresa>
<nome>Joo & Maria S/A</nome>
</empresa>
]]>
</exemplo>

20

Instrues de processamento
Instrues dependentes do processador
Funcionam como comentrios para os processadores

que no a conhecem
<?nome-do-alvo rea de dados ?>
<?query-sql select nome,
email
from agenda
where id=25 ?>

21

Comentrios
Iguais aos comentrios HTML
<!-- Isto um comentrio -->
<!--

isto um erro -- srio! -->

22

Declarao XML
Opcional (exceto queno conjunto de

caracteres usado for diferente de UTF-8


<?xml version="1.0"
encoding="iso-8859-1"
standalone="yes" ?>

23

Documento bem formado


ter um nico elemento raiz
etiquetas iniciais e finais combinam (levando em conta que

caracteres maisculos e minsculos so diferentes)


elementos bem aninhados
valores de atributos entre aspas ou apstrofes
atributos no repetidos
identificadores vlidos para elementos e atributos
comentrios no devem aparecer dentro das etiquetas
sinais < ou & nunca devem ocorrer dentro dos valores dos
atributos ou nos ns de texto do documento.

24

XML Namespaces
Permite que elementos de mesmo nome de diferentes

aplicaes sejam misturados sem que haja conflitos


Um namespace (universo de nomes) declarado usando
atributos reservados
xmlns="identificador" (namespace default)

associa o identificador com todos os elementos que no

possuem prefixo. Ex: <nome>

xmlns:prefixo="identificador"

associa o identificador com os elementos e atributos cujo

nome local precedido do prefixo. Ex <prefixo:nome>


O prefixo arbitrrio e s existe dentro do documento
O identificador (geralmente uma URI) deve ser reconhecido
pela aplicao

25

Exemplo
Vale para todo
o elemento
<cartao>

Esta URI
est associada a
este prefixo

<ct:cartao
xmlns:ct="01.234.567/0001-89/cartoes">
<ct:nome>Alberto Santos Dumont</ct:nome>
<ct:endereco>Rua do Encanto, 22 - Centro
25600-000 - Petrpolis - RJ</ct:endereco>
<ct:email>dumont@14bis.com.br</ct:email>
<ct:telefone tipo="residencial">
<ct:ddd>21</ct:ddd>
<ct:numero>2313011</ct:numero>
</ct:telefone>
</ct:cartao>
26

Exemplo com 3 namespaces


<departamento
<departamento
Namespace
xmlns:ct="01.234.567/0001-89/cartoes"
xmlns:ct="01.234.567/0001-89/cartoes"
default
xmlns="01.234.567/0001-89/empresa"
xmlns="01.234.567/0001-89/empresa"
xmlns:html="http://www.w3.org/1999/xhtml">
xmlns:html="http://www.w3.org/1999/xhtml">
URI padro
<ct:nome>Fulano
<ct:nome>Fulano de
de Tal</ct:nome>
Tal</ct:nome>
XHTML
<nome>Contabilidade</nome>
<nome>Contabilidade</nome>
<endereco>Rua
<endereco>Rua Projetada,
Projetada, 33</endereco>
33</endereco>
<html:a
<html:a href="web.html">
href="web.html">
<html:strong>link
<html:strong>link negrito
negrito HTML</html:strong>
HTML</html:strong>
</html:a>
</html:a>
<urgencia><ct:numero>2313011</ct:numero></urgencia>
<urgencia><ct:numero>2313011</ct:numero></urgencia>
</departamento>
</departamento>

27

Você também pode gostar