You are on page 1of 10

XML Introduo

A XML eXtensible Markup Language uma linguagem de marcadores como a HTML e foi desenhada para descrever dados , a sua grande vantagem que ela extensvel , ou se a , voc! n"o esta limitado a um certo n#mero de tags , e pode criar as suas pr$prias tags, assim sendo ela uma linguagem auto definvel % &ara descrever os dados a XML usa a 'T' Document Type Definition% Antes que voc! fique confuso , a XML n"o uma linguagem que veio para su(stituir a HTML pois XML foi criada com um o( etivo diferente da HTML% )nquanto HTML foi criada para exi(ir dados e ela se preocupa como os dados ser"o exi(idos, a XML foi criada para descrever dados e ela se preocupa com o que os dados s"o% HTML esta relacionada com exi(ir dados enquanto que XML esta relacionada em descrever dados% As tags usadas em documentos HTML e a estrutura dos documentos HTML s"o predefinidas e o autor de um documento HTML pode usar somente as tags que est"o definidas em HTML padr"o% *+ a XML permite que o autor defina as suas pr$prias tags e a pr$pria estrutura do seu documento% A utili,a-"o de XML vem crescendo dia a dia , mas n"o devemos pensar que ela ser+ a su(stituta da HTML , ela ser+ um complemento a HTML e ser+ usada para descrever e estruturar os dados enquanto HTML ser+ usada para formatar e exi(ir os mesmos dados%

A sintaxe da XML
.e amos um exemplo de documento XML /vamos dar a ele o nome de aviso.xml 0, e a seguir vamos analisar cada linha de c$digo1 <?xml version="1.0"?> <aviso> <para>Janice data="01/04/2000"</para> <de>Jefferson</de> <cabecalho> embre!se</cabecalho> <corpo>"manha voce tem prova de matematica</corpo> </aviso> "viso.xml <?xml version="1.0"?> )sta primeira linha do documento uma declara-"o XML e deve sempre ser incluida pois define a vers"o XML do documento% 2este caso estamos especificando a vers"o 3%4 da XML% 5 6nternet )xplorer vem com um analisador XML que atende o padr"o 3%4% <aviso> )sta linha define o primeiro elemento do documento o elemento rai,%/n$ rai,0 <para>Janice data="01/04/2000"</para> <de>Jefferson</de> <cabecalho> embre!se</cabecalho> <corpo>"manha voce tem prova de matematica</corpo> )stas quatro linhas definem 7 elementos filhos da rai, ( para, de, cabecalho e corpo0 </aviso> A #ltima linha define o fim do elemento rai,%

.oc! de Ter estranhado as tags usadas no documento , pois , elas foram criadas pelo autor8 somente a primeira linha o(rigat$ria pois define a XML para o analisador do navegador% .e amos as caractersticas principais de um documento XML1 &erce(a que cada tag inicial tem um tag final , ou se a , as tags s"o usadas sempre em pares% .oc! n"o pode usar1 de! *efferson Todo documento XML possui um elemento rai, % 5s demais elementos devem estar aninhados dentro de um elemento rai,%

<rai#> <filho1> <filho2> </filho2> </filho1> </rai#>


elemento rai, possui um atri(uto , a data de cria-"o do documento8 da mesma forma os elementos podem possuir atri(utos aos pares nome"#alor, e , o atri(uto deve sempre vir entre aspas% As tags usadas em XML s"o case sensitive , ou se a , voc! deve escrever uma tag de fechamento da mesma maneira que escreveu uma tag de incio% Assim para! e "$ara! ir+ ocasionar um erro no documento XML%

%sando atributos em XML


5s atri(utos em XML s"o usados para descrever os elementos XML ou para fornecer uma informa-"o adicional so(re os elementos% )m HTML quando us+vamos a seguinte linha 1 IM& '()*+computer,gif+! tinhamos 9:; como um atri(uto do elemento 6M< que fornecia informa-"o adicional so(re o elemento% .e amos o exemplo a seguir em XML1 $sando %m atrib%to para o sexo& <pessoa sexo="feminino"> <nome>Ana</nome> <sobrenome>Rachel</sobrenome> </pessoa> $sando %m elemento para o 'exo& <pessoa> <sexo>feminino</sexo> <nome>Ana</nome> <sobrenome>Rachel</sobrenome> </pessoa> 2o primeiro exemplo sexo um atri(uto 8 no #ltimo exemplo sexo um elemento% 2"o existe uma regra que indique quando voc! deve usar um ou outro, o que vale o (om senso% Mas a utili,a-"o de atri(utos deve ser evitada se voc! pode descrever seus dados com elementos% .e amos outro exemplo para mostrar como os elementos podem ser mais efetivos que os atri(utos% Temos tr!s exemplos de documentos XML que contm a mesma informa-"o1 2o primeiro usamos um

atri(uto para a data, no segundo usamos um elemento para a data, e no terceiro usamos um elemento expandido para data1 <?xml version="1.0"?> <aviso date="12/11/ "> <para>!anice</para> <de>!efferson</de> <cabecalho>"embre#se</cabecalho> <corpo>Amanha voce tem prova de matematica</corpo> </aviso> <?xml version="1.0"?> <aviso> <data>12/11/ </data> <para>!anice</para> <de>!efferson</de> <cabecalho>"embre#se</cabecalho> <corpo>Amanha voce tem prova de matematica</corpo> </aviso> <?xml version="1.0"?> <aviso> <data> <dia>12</dia> <m$s>11</m$s> <ano> </ano> </data> <para>!anice</para> <de>!efferson</de> <cabecalho>"embre#se</cabecalho> <corpo>Amanha voce tem prova de matematica</corpo> </aviso> As principais desvantagens na utili,a-"o de atri(utos s"o1 Atri(utos n"o podem conterm m#ltiplos valores /os elementos podem0 Atri(utos n"o s"o expansveis Atri(utos n"o podem descrever estruturas Atri(utos s"o de difcil manuten-"o%

)riando um documento XML #-lido


&ara que um documento XML se a um arquivo v+lido temos que usar o que chamamos de 'efini-"o do Tipo do 'ocumento ou , originalmente 'ocument T=pe 'efinition 'T'% 5 prop$sito da 'T' definir uma constru-"o de (locos v+lidas para um documento XML, e ela define a estrutura do documento usando uma lista de elementos v+lidos% A 'T' pode ser declarada dentro de um documento XML ou num arquivo + parte% 5 'T' permite descrever cada marca e fornecer regras para interpretar cada informa-"o usada em um arquivo XML% >uando usada em um arquivo XML a 'T' aparece entre colchetes ? e termina com um colchete , seguido de um sinal de maior /@A0% Bsando 'T' em nosso arquivo aviso%xml temos o seguinte c$digo1

CDxml versionEF3%4FDA CG'5;TH&) note ? CG)L)M)2T aviso /para,de,ca(ecalho,corpo0A CG)L)M)2T para /I&;'ATA0A CG)L)M)2T de /I&;'ATA0A CG)L)M)2T ca(ecalho /I&;'ATA0A CG)L)M)2T corpo /I&;'ATA0A @A CavisoA CparaA*anice dataEF43J47JK444FCJparaA CdeA*effersonCJdeA Cca(ecalhoALem(reLseCJca(ecalhoA CcorpoAAmanha voce tem prova de matematicaCJcorpoA CJavisoA Ar.ui#o a#iso,xml com defini/es DTD
6nterpretando o c$digo 'T' usado temos1 0D1)T2$3 nota 4 L 'eclara um se-"o do documento com um 'T' com o nome de nota L03L3M35T a#iso define o elemento FavisoF como tendo 7 elementos /para, de, ca(ecalho e corpo0 L03L3M35T para L define o elemento FparaF como sendo do tipo F;'ATAF L03L3M35T de L define o elemento FdeF como sendo do tipo F;'ATAF L03L3M35T cabecal6o L define o elemento Fca(ecalhoF como sendo do tipo F;'ATAF L03L3M35T corpo L define o elemento FcorpoF como sendo do tipo F;'ATAF 5(s1 Bm 3L3M35T define a forma e os termos de uma marca XML usada% &ara usar a 'T' em um arquivo externo (asta fa,er o seguinte1 3L6nsira uma declara-"o informando o nome do arquivo externo onde est"o as defini-Mes 'T'

CDxml versionEF3%4FDA CG'5;TH&) note 9H9T)M Fnota%dtdFA


<aviso>

<para>!anice data="01/0%/2000"</para> <de>!efferson</de> <cabecalho>"embre#se</cabecalho>

CcorpoAAmanha Ar.ui#o a#iso,xml com declarao do ar.ui#o DTD


KL0 ;rie o arquivo com as defini-Mes 'T' e salveLo usando o nome declarado no arquivo XML % 2o nosso caso 1 nota%dtd

CDxml versionEF3%4FDA CG)L)M)2T aviso /para,de,ca(ecalho,corpo0A CG)L)M)2T para /I&;'ATA0A CG)L)M)2T de /I&;'ATA0A CG)L)M)2T ca(ecalho /I&;'ATA0A CG)L)M)2T corpo /I&;'ATA0A 5ota,dtd
A 'T' pode ser usada para compartilhar e intercam(iar dados usando defini-Mes 'T' comuns%

3xibindo o XML na 738


Atualmente somente o 6nternet )xplorer suporta o padr"o XML 3%4 e o '5M % )sses padrMes s"o definidos pelo cons$rcio NO; World Wide Web Consortium% 9e voc! a(rir o nosso primeiro arquivo exemplo /aviso%xml0 usando o 6nternet )xplorer ir+ o(ter o seguinte1

2ada amig+vel , n"o mesmo D )nt"o como exi(ir os dados de um documento XML aos seus usu+rios na Ne( D Pem , voc! pode fa,er isto de duas maneiras1

;onvertendo XML usando o '5M Bsando as folhas de estilo/X9L0 do XML

3L0 3xibindo XML usando D1M 5 '5M uma interface de programa-"o para documentos HTML e XML e define a maneira como o documento pode ser acessado e manipulado% Ao usar '5M voc! pode criar um documento , percorrer sua estrutura e incluir, modificar ou excluir elementos% A '5M , que tam(m uma especifica-"o do cons$rcio NO;, tem como o( etivo fornecer uma interface de programa-"o padr"o que pode ser usada em diversos am(ientes e aplica-Mes% .amos exi(ir o arquivo (oletim%xml , cu o c$digo do documento dado a seguir , usando '5M1 <?xml version="1.0"?> <boletim data="20/04/2000"> <al%no> <nome>J"()*+</nome> <notas> <port%,%es>-</port%,%es> <matematica>.</matematica> <ciencias>/</ciencias> </notas> </al%no> <al%no> <nome>J+00+1'2(</nome> <notas> <port%,%es>3</port%,%es> <matematica>.</matematica> <ciencias>-</ciencias> </notas> </al%no> </boletim>

8oletim,xml
&ara poder exi(ir os dados do documento (oletim%xml iremos usar um arquivo de script A9& onde iremos usar a '5M% 5 c$digo do arquivo (oletim%asp 1 <&lan'(a'e = )*+cript&> <html> <head> <title> ,-" #> ./- </title> </head> <& dim ,-"doc0 rai10 item 0 nome0 strnotas set ,-"doc = +erver.2reate/b3ect4"-icrosoft.,-"./-"5 ,-"doc.load4+erver.-ap6ath4"boletim.xml"55 set rai1 = ,-"doc..oc(ment7lement Response.8rite "<h2> 7xibindo ,-" com ./- # " Response.8rite rai1.Attrib(tes.9et:amed;tem4"data"5.text < "</h1>" < vbcrlf ;f rai1.has2hild:odes45 then =or each aviso in rai1.child:odes =or each item in aviso.2hild:odes

if "nome"= item.node:ame then response.>rite "<b>" < item.text < "</b>" elseif "notas" = item.:ode:ame then strnotas="" for i=0 to item.child:odes.len'th ? 1 strnotas = strnotas < item.child:odes4i5.text < " @ " next strnotas = left4strnotas0 len4strnotas5#15 < "#" < "<br>" < vbcrlf response.>rite " @ " < strnotas end if next next end if &> </bodA> </html> .amos analisar o c$digo do arquivo (oletim%asp1 L set XMLdoc * 'er#er,)reate1b9ect:+Microsoft,XMLD1M+; ;riamos uma instQncia do '5M usando o o( eto Microsoft%XML'5M XMLdoc,load:'er#er,Map$at6:+boletim,xml+;; ;arregamos o arquivo (oletim%xml L set rai< * XMLdoc,Document3lement :ecuperamos o primeiro n$ do documento , o n$ rai, , que o elemento F(oletimF L (esponse,7rite rai<,Attributes,&et5amedItem:+data+;,text = + "6>!+ = #bcrlf :ecuperamos o atri(uto FdataF usado no elemento F(oletimF If rai<,6as)6ild5odes:; t6en .erificamos se h+ realmente elementos filhos /aluno0 no documento =or each aviso in rai1.child:odes =or each item in aviso.2hild:odes if "nome"= item.node:ame then response.>rite "<b>" < item.text < "</b>" elseif "notas" = item.:ode:ame then strnotas="" for i=0 to item.child:odes.len'th ? 1 strnotas = strnotas < item.child:odes4i5.text < " @ " next strnotas = left4strnotas0 len4strnotas5#15 < "#" < "<br>" < vbcrlf response.>rite " @ " < strnotas end if next next 5 c$digo acima fa, o looping em todos os n$s filhos /a#iso,)6ild5odes0 ? e, atravs de outro loop iteramos nos n$s filhos FnomeF e FnotasF exi(indo os dados ao usu+rio%

5 resultado final do processamento mostrado na figura a(aixo1

KL %sando as fol6as de estilo X'L 2$s + vimos que as tags usadas em um documento XML podem ser criadas pelo usu+rio , ent"o como o 2avegador ir+ interpretar essas tags , + que n"o existem tags padr"o em XML D &ara exi(ir documentos XML ser+ necess+rio um mecanismo que descreva como o documento ser+ exi(ido% )sse mecanismo chamaLse X9L 3xtensible 'tyles6eet Language e , usado para transformar XML em HTML% A X9L pode ser encarada como um linguagem que pode transformar XML em HTML , pode filtrar e ordenar dados em documentos XML e que pode formatar dados XML% )la pode ser usada para definir em como um arquivo XML ser+ exi(ido pela transforma-"o em um arquivo reconhecido pelo navegador do usu+rio% <eralmente este servi-o feito pela transforma-"o de cada elemento XML em um elemento HTML, sendo que a 9XL pode incluir novos elementos, remover elementos , rearran ar e ordenar elementos e ainda testar e tomar decisMes% .amos criar um arquivo XML chamado catalago,xml e a seguir usar a X9L e transform+Llo no arquivo catalogo,xsl1 <?xml version="1.0" encodin'=";+/BBC #1" ?> <2ADA"/9/> <2.> <D;DE"/>-inas</D;DE"/> <ARD;+DA>-ilton :ascimento</ARD;+DA> <6A;+>*RAF;"</6A;+> <2/-6A:;A>2ol(mbia</2/-6A:;A> <6R72/>1C. 0</6R72/> <A:/>1 BC</A:/> </2.> </2ADA"/9> *atalo,o.xml Em catGlo'o de 2. como doc(mento ,-"

5 arquivo catalogo,xsl correspondente tem o seguinte c$digo1 <?xml version=H1.0H?> <xslIstAlesheet xmlnsIxsl="httpI//>>>.>J.or'/DR/8.#xsl"> <xslItemplate match="/"> <html> <bodA> <table border="2" b'color="Aello>"> <tr> <th>Dit(lo</th>

<th>Artista</th> </tr> <xslIfor#each select="2ADA"/9//2."> <tr> <td><xslIval(e#of select="D;DE"/"/></td> <td><xslIval(e#of select="ARD;+DA"/></td> </tr> </xslIfor#each> </table> </bodA> </html> </xslItemplate> </xslIstAlesheet> *atalo,o.xsl .e amos a explica-"o do c$digo usado no arquivo catalgo%xsl1 xsl@styles6eet 6ndica que o documento um st=lesheet folha de estilo% L xsl@template matc6*+"+! informa que este um modelo que corresponde a rai, /J0 de um documento fonte XML L A xml #ersion*B>,CBA! ;omo um arquivo X9L tam(m um arquivo XML ele deve iniciar com uma declara-"o XML #<xsl&for!each select="*"4" 252/*6"> 5 elemento xsl@forDeac6 locali,a elementos no documento XML e repete o modelo para cada elemento% 5 atri(uto select descreve o elemento na fonte do documento #<td><xsl&val%e!of select="4)4$ 2"/></td> <td><xsl&val%e!of select=""14)'4""/></td> 2essas linhas o elemento xsl@#alueDof seleciona um n$ filho na hierarquia e insere o conte#do do n$ filho no modelo% &ara transformar o arquivo catalogo%xml em um arquivo HTML (asta incluir uma refer!ncia ao arquivo catalogo%xsl criado acima no arquivo catalogo%xml % .e a no exemplo a seguir1

CDxml versionEF3%4F encodingEF695RRSTL3F DA CDxmlLst=lesheet t=peEFtextJxslF hrefEFcatalogo%xslFDA


<2ADA"/9/> <2.> <D;DE"/>-inas</D;DE"/> <ARD;+DA>-ilton :ascimento</ARD;+DA> <6A;+>*RAF;"</6A;+> <2/-6A:;A>2ol(mbia</2/-6A:;A> <6R72/>1C. 0</6R72/> <A:/>1 BC</A:/> </2.> </2ADA"/9> &ara fa,er esta transforma-"o no cliente , usamos o c$digo a seguir1

<html> <bodA> <script lan'(a'e="3avascript"> // carre'a ,-" var xml = ne> Active,/b3ect4"-icrosoft.,-"./-"5 xsl.asAnc = false xml.load4"catalo'o.xml"5 // carre'a ,+" var xsl = ne> Active,/b3ect4"-icrosoft.,-"./-"5 xsl.asAnc = false xsl.load4"catalo'.xsl"5 // Dransforma ,-" em KD-" doc(ment.>rite4xml.transform:ode4xsl55 </script> </bodA> </html> # var xml = ne7 "ctive82b9ect:";icrosoft.8; 62;"< 5 primeiro (loco de c$digo cria uma instQncia da XML usando o Microsoft%XML'5M # xml.load:"catalo,o.xml"< ;arrega o documento XML na mem$ria # var xsl = ne7 "ctive82b9ect:";icrosoft.8; 62;"< )sta linha de c$digo cria uma instQncia XML # xsl.load:"catalo,.xsl"< ;arrega o documento X9L na mem$ria # doc%ment.7rite:xml.transform(ode:xsl<< Transforma o documento XML usando o documento X9L e gera um documento HTML )m(ora a XML este a nos prim$rdios , dia a dia ela cada ve, mais usada % ;om esta pequena introdu-"o espero que XML e X9L deixem de ser apenas um par de siglas sem sentido para voc! e passem a or(itar os seus scripts A9& pois pode ter certe,a, voc! ainda vai ouvir falar muito nessa dupla%

)opyrig6t :c; ECCC D FosG )arlos Macoratti

You might also like