Escolar Documentos
Profissional Documentos
Cultura Documentos
da Teoria Prtica
20 de Abril de 2001
XML e XSL: da Teoria Prtica
2
c FCA - EDITORA DE INFORMTICA
Prefacio
Quando o projecto desta obra nasceu, ainda no ano de 2000, o objectivo era escrever
um livro sobre XML. A ideia era a de criar um livro que pudesse servir ao curioso
mas tambm ao estudante da rea e utilizador mais experiente. A temtica do XML
cedo se revelou insuficiente. Um utilizador de XML, normalmente, quer fazer algu-
ma coisa com os documentos que vai criando. Para isso, necessrio transformar os
documentos XML. Assim, este livro cobre, exaustivamente, numa primeira parte, o
XML e, numa segunda parte, a temtica da transformao dos documentos.
No necessrio voltar a reforar aqui a importncia do XML. Hoje, esta norma
invadiu todas as reas do saber onde a informtica est presente. Domnios to di-
versos como a medicina, a indstria aeronutica, o xadrez, a matemtica, a msica,
as letras e o teatro fazem parte das reas de aplicao desta tecnologia. Da a preo-
cupao de fazer uma obra abrangente que possa dar resposta a quem trabalha em
todas aquelas reas.
O livro reflecte a experincia acumulada dos autores. Alm de descrever os concei-
tos bsicos, apresenta metodologias e maneiras de fazer que s se adquirem aps
vrios anos de experincia. Um dos objectivos deste livro tambm o de acelerar
a curva de aprendisagem do XML que ainda grande e apontada como umas das
desvantagens da tecnologia.
Quando se escreve uma obra h, num determinado momento, a necessidade de co-
locar um ponto final e terminar. Foi o que fizemos mas, ficando com a sensao que
c FCA - EDITORA DE INFORMTICA ix
XML e XSL: da Teoria Prtica
muito podia ainda ser escrito. No momento em que este livro estiver a ser impresso,
estaremos j a trabalhar na prxima edio, para que esta d mais e melhor.
x
c FCA - EDITORA DE INFORMTICA
Indice
I XML 1
c FCA - EDITORA DE INFORMTICA xi
XML e XSL: da Teoria Prtica
xii
c FCA - EDITORA DE INFORMTICA
3.2 XPath como selector de nodos . . . . . . . . . . . . . . . . . . . . 62
3.2.1 Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.2.2 Selectores Simples . . . . . . . . . . . . . . . . . . . . . . 62
3.2.3 Selectores Relativos e Selectores Absolutos . . . . . . . . . 63
3.2.4 Seleccionar: para alm de elementos . . . . . . . . . . . . . 64
3.2.5 Selectores Complexos . . . . . . . . . . . . . . . . . . . . 66
3.3 Eixos de Navegao . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.4 Predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.5 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.6 Exemplos de expresses XPath . . . . . . . . . . . . . . . . . . . . 74
c FCA - EDITORA DE INFORMTICA xiii
XML e XSL: da Teoria Prtica
xiv
c FCA - EDITORA DE INFORMTICA
Parte I
XML
c FCA - EDITORA DE INFORMTICA 1
Documentos
1 XML bem
formados
Como o leitor pode constatar, um documento XML formado por dados e anota-
es.
As primeiras perguntas que podem surgir so: o que que so anotaes? Como
distingui-las dos dados?
Num documento XML, os dados so blocos de texto. Pode ser que um dia os dados
noutros formatos que no texto possam vir a fazer parte de um documento XML,
mas neste momento so externos aos documentos, podendo ser referidos atravs de
entidades (captulo ??).
A anotao de um documento descreve a sua estrutura e induz uma interpretao do
seu contedo. A anotao composta por: marcas de incio de elementos, marcas de
fim de elementos, marcas de elementos vazios, referncias a entidades, comentrios,
limitadores de seces especiais de texto (CDATA seco 1.6), declaraes de tipo
de documento e instrues de processamento.
Veja-se agora, representado em XML, o exemplo tradicionalmente usado noutros
contextos.
c FCA - EDITORA DE INFORMTICA 3
XML e XSL: da Teoria Prtica
Uma anotao comea sempre por < e termina por >. Por isso fcil ver que o
nosso exemplo tem trs anotaes: <?xml ...?>, <doc> e </doc>.
<?xml
version="1.0"
standalone="yes"
encoding="iso-8859-1" ?>
version O valor deste atributo indica a verso de XML que est a ser utilizada.
Neste momento, apenas o valor "1.0" possvel. Este atributo obrigatrio e
tem de estar presente em todas as declaraes.
standalone Este atributo opcional e pode ter um de dois valores: o valor "yes"
indica que o documento est autocontido, no tem referncias a entidades
externas; o valor "no"indica que o documento contm referncias a entidades
externas (por exemplo: outros documentos).
4
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
encoding Este atributo tambm opcional e indica qual a codificao usada para
os caracteres: o valor por omisso UTF-8, mas tambm poder ser UCS-2,
UCS-4, ISO-XXX. No nosso caso, usamos caracteres portugueses, por isso,
este atributo ter sempre o valor "iso-8859-1".
1.2 Comentrios
Um comentrio pode aparecer em qualquer ponto de um documento XML.
Comea pela marca <!-- e termina com a marca -->.
Alm da sua funo bvia de documentao, os comentrios podem ainda ser utili-
zados para remover temporariamente partes do documento, desde que essas partes
no contenham comentrios.
c FCA - EDITORA DE INFORMTICA 5
XML e XSL: da Teoria Prtica
<RECEITAS>
<TITULO> O Meu Livro de Receitas </TITULO>
<RECEITA ORIGEM="Portugal">
<TITULO> Bolo </TITULO>
<!--
<INGREDIENTE> 500g de farinha </INGREDIENTE>
-->
<INGREDIENTE> 200g de aucar </INGREDIENTE>
<INGREDIENTE> 300g de manteiga </INGREDIENTE>
</RECEITA>
</RECEITAS>
6
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
Neste exemplo, alm da j referida declarao XML, esto presentes duas instrues
de processamento anlogas:
<?html ...?> estas duas instrues de processamento identificam ordens que deve-
ro ser executadas aquando da transformao deste documento para HTML.
Neste caso concreto, indica-se que, quando o processamento do documento
XML coincidir com a gerao da sua verso HTML, devero ser geradas duas
marcas hr nas posies onde se encontram as instrues de processamento.
1.4 Elementos
A estrutura de um documento XML definida custa de elementos que determi-
nam os blocos lgicos em que o texto global pode ser partido ou decomposto. Um
1
Embora os dois primeiros possam aparecer em qualquer ponto do corpo do documento.
c FCA - EDITORA DE INFORMTICA 7
XML e XSL: da Teoria Prtica
elemento composto pela sua anotao de incio, pelo seu contedo e pela sua
anotao de fim.
Uma anotao de incio comea por < e termina com >, e uma anotao de fim
comea por </ e termina com >. Quer uma quer outra contm no meio o nome
do elemento que inicia ou que termina, respectivamente.
No texto abaixo, a palavra Braga est anotada como sendo um elemento de nome
lugar.
Uma restrio inerente ao XML a de que o nome de uma anotao de fim tem de
ser igual ao da anotao de incio imediatamente anterior (este ser um dos princ-
pios da bem formao de um documento).
Um elemento tem de estar completamente contido noutro elemento, excepto o an-
cestral de todos os elementos (o elemento raiz). Algumas estruturas hierrquicas
podem ser recursivas. Um elemento pode conter directa ou indirectamente instn-
cias de si prprio, como iremos ver mais frente num caso de estudo (exemplo
23). Esta possibilidade de recursividade ou aninhamento ir causar, muitas vezes,
problemas no momento de processar a informao, mas necessria para modelar
certo tipo de informao.
As regras a que o nome de um elemento deve obedecer so as seguintes:
8
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
<Doc:princ> </Doc:princ>
<documento> </documento>
<_secreto> </_secreto>
<aluno4> </aluno4>
<DB_tab5> </DB_tab5>
c FCA - EDITORA DE INFORMTICA 9
XML e XSL: da Teoria Prtica
<RECEITAS>
<RECEITA> ... </RECEITA>
<RECEITA> ... </RECEITA>
<RECEITA> ... </RECEITA>
...
</RECEITAS>
<lugar>Braga</lugar>
<INGREDIENTE>Meia dzia de ovos</INGREDIENTE>
<data>(1922)</data>
10
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
Por ltimo, um elemento pode no ter qualquer contedo. Este tipo de elemento
normalmente designado por elemento vazio.
Estes elementos so normalmente utilizados pelo seu significado posicional. Al-
guns exemplos conhecidos do HTML so os elementos BR e HR que marcam, res-
pectivamente, a quebra de uma linha e o traar de uma linha horizontal. O leitor
aqui poderia interrogar-se: "No ser isto uma anotao procedimental?". Ter um
pouco de razo, mas relembre a discusso sobre uma anotao equilibrada (??).
H, no entanto, elementos vazios puramente descritivos como o caso de elementos
que representam referncias. Para alm da posio, contm informao nos atribu-
tos (1.5). Eis um exemplo de um destes elementos:
Outro exemplo deste tipo de elementos, que aparecer mais frente nalguns casos
de estudo, o de um elemento que marca o ponto onde dever ser inserida uma
imagem.
Como j deve ter notado, estes elementos tm uma sintaxe diferente. So represen-
tados por uma nica anotao que iniciada por < e termina em />, que a
forma abreviada de escrever <elem-ident></elem-ident>.
Na prxima seco, vamos analisar os atributos que surgiram nestes ltimos exem-
plos.
c FCA - EDITORA DE INFORMTICA 11
XML e XSL: da Teoria Prtica
1.5 Atributos
Um elemento pode ter um ou mais atributos que, por sua vez, podem ser opcionais
ou obrigatrios. Os atributos visam qualificar o elemento a que esto associados.
Ao pensar no problema da distino entre elemento e atributo, podemos traar um
paralelo com a lngua portuguesa: os elementos so os substantivos, e os atributos
os adjectivos. Podemos ento estabelecer a seguinte equivalncia:
<agenda>
<entrada id="e1" tipo="pessoa">
<nome>Jos Carlos Ramalho</nome>
<email>jcr@di.uminho.pt</email>
<telefone>253 604479</telefone>
</entrada>
...
</agenda>
12
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
<agenda>
<entrada id="e1" tipo="pessoa" nome="Jos Carlos Ramalho"
email="jcr@di.uminho.pt" telefone="253 604479"/>
...
</agenda>
Este documento tambm um documento XML bem formado o que mostra a fra-
gilidade da fronteira entre atributo e elemento mas, como veremos mais frente,
muito mais difcil de processar.
xml:lang Este atributo pode ser associado a qualquer elemento e indica qual
a lngua em que o texto desse elemento est escrito. Esta faceta til em
ambientes multilingues. Poderamos ter por exemplo:
c FCA - EDITORA DE INFORMTICA 13
XML e XSL: da Teoria Prtica
<para xml:lang="en">Hello</para>
<para xml:lang="pt">Ol</para>
<para xml:lang="fr">Bonjour</para>
14
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
ser:
c FCA - EDITORA DE INFORMTICA 15
XML e XSL: da Teoria Prtica
Terminou aqui a descrio dos elementos a que se pode recorrer para a constituio
de um documento XML bem formado.
Um documento XML deve ter sempre uma declarao XML no incio Apesar
de no ser obrigatria, muitos processadores no funcionaro correctamente
se ela estiver ausente. Nos nossos documentos, em lngua portuguesa, a de-
clarao XML ter sempre a seguinte forma:
16
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
</aula>
...
</sumarios>
c FCA - EDITORA DE INFORMTICA 17
XML e XSL: da Teoria Prtica
1.8 NameSpaces
Usando XML, o utilizador tem uma liberdade total na definio da sua linguagem,
podendo atribuir os nomes que bem entender aos seus elementos e atributos. No
entanto, medida que o nmero de utilizadores e de aplicaes XML foi crescen-
do, surgiu um problema que no estava previsto; comearam a aparecer conflitos
nos nomes dos elementos: quando num documento XML se importam pedaos de
outros documentos XML escritos por outros autores, podero surgir conflitos como
anotaes com o mesmo nome, mas com semnticas diferentes ou utilizadas em
contextos contraditrios.
18
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
<livro>
<titulo>XML: da teoria prtica</titulo>
<resumo>Livro que cobre duma maneira geral mas com
alguma profundidade a temtica XML.</resumo>
<temas>
<tema>XML</tema>
<tema>XSL</tema>
</temas>
</livro>
<encomenda>
... pagamento e envio ...
<item>
<livro>
<titulo>XML: da teoria prtica</titulo>
<isbn>1-999999-88-7</isbn>
</livro>
<quantidade>4</quantidade>
<preo EUR="17 euros"/>
</item>
</encomenda>
O elemento livro apresenta duas semnticas diferentes nos dois contextos em que
usado.
Se estivssemos perante um outro documento formado com elementos de ambos
os documentos apresentados, teramos alguma dificuldade em interpretar os com-
ponentes livro que aparecessem, pois no saberamos descobrir a provenincia
desses elementos livro.
c FCA - EDITORA DE INFORMTICA 19
XML e XSL: da Teoria Prtica
Para garantir tal unicidade, convencionou-se que se usaria a sintaxe dos URL para o
prefixo. Assim, partindo do princpio de que cada utilizador tem um URL prprio,
acabam-se os conflitos.
O World Wide Web Consortium (W3C) publicou uma recomendao com o ttulo
Namespaces in XML, onde se define um Namespace como:
xmlns="http://xml.di.uminho.pt/XMLSamples/livro.dtd"
xmlns="livro.dtd"
xmlns="meu-URL/DTDs/livro.dtd"
20
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
1.8.2 Prefixos
xmlns:catalogo="http://xml.di.uminho.pt/Samples/livro.dtd"
xmlns:encomenda="livro.dtd"
xmlns:jcr="meu-URL/DTDs/livro.dtd"
<catalogo:livro
xmlns:catalogo="http://xml.di.uminho.pt/Samples/livro.dtd"
xmlns:jcr="http://jcr.di.uminho.pt/DTD/coment.dtd">
c FCA - EDITORA DE INFORMTICA 21
XML e XSL: da Teoria Prtica
Como se disse atrs, o atributo xmlns pode ser utilizado em qualquer elemento e
no apenas no elemento raiz. Assim, e para o tornar mais claro, o exemplo anterior
poderia ser reescrito da seguinte maneira:
<catalogo:livro
xmlns:catalogo="http://xml.di.uminho.pt/DTD/livro.dtd">
<catalogo:titulo>XML: da teoria prtica
</catalogo:titulo>
<jcr:opiniao
xmlns:jcr="http://jcr.di.uminho.pt/DTD/coment.dtd">
Um bom ponto de partida ...</jcr:opiniao>
<catalogo:resumo>Livro que cobre duma maneira geral mas
com alguma profundidade a temtica XML.
</catalogo:resumo>
...
</catalogo:livro>
A declarao do Namespace ficou agora junto do elemento que faz uso dela
(jcr:opiniao).
22
c FCA - EDITORA DE INFORMTICA
Documentos XML bem formados
<livro
xmlns="http://xml.di.uminho.pt/DTD/livro.dtd">
<titulo>XML: da teoria prtica</titulo>
<jcr:opiniao
xmlns:jcr="http://jcr.di.uminho.pt/DTD/coment.dtd">
Um bom ponto de partida ...</jcr:opiniao>
<resumo>Livro que cobre duma maneira geral mas com
alguma profundidade a temtica XML.
</resumo>
...
</livro>
Como o Namespace associado a livro foi declarado sem prefixo, todos os ele-
mentos filhos de livro so considerados como pertencentes a esse NameSpace,
excepo daqueles que tenham um NameSpace declarado localmente (como o
caso de jcr:opiniao).
Mais frente, veremos a relao dos NameSpaces com os DTD e com os XML
Schema. Mais tarde, iremos utiliz-los quando estivermos a discutir o XSL.
Para terminar o captulo, vamos ver uma variante do XML que est relacionada com
a representao abstracta da informao num documento.
c FCA - EDITORA DE INFORMTICA 23
XML e XSL: da Teoria Prtica
2
http://www.w3.org/TR/xml-c14n
3
http://www.alphaworks.ibm.com/tech/xml4j
24
c FCA - EDITORA DE INFORMTICA
Documentos
2 XML validos
At ao momento vimos como relativamente fcil ao utilizador comum criar do-
cumentos XML bem formados. Um documento XML bem formado no necessita
de a ele ter associado um processo de validao exaustivo, o que simplifica muito o
seu processamento.
Em muitas aplicaes XML, os documentos so gerados automaticamente. Nestas
aplicaes, o gerador garante por si s a bem-formao e a validao dos docu-
mentos e, nesta situao, trabalhar com documentos bem formados mais do que
suficiente. Porm, na maioria dos casos em que o utilizador que edita e manipula
os documentos XML, h necessidade de estipular um conjunto de regras que esta-
beleam a validade dos documentos. Este conjunto de regras define uma classe, ou
tipo, de documento e permite a posterior validao e processamento dos documen-
tos criados.
especificao de um tipo de documentos d-se o nome de DTD (Document Ty-
pe Definition) ou XML Schema. O processo que verifica se um documento est
de acordo com um DTD ou Schema designa-se por Validao; a um documento
depois de verificado atribumos a classificao de documento XML Vlido.
Os XML Schemas sero discutidos num captulo mais frente (cap. ??). Neste
captulo, apresenta-se em detalhe a linguagem com a qual se especifica um DTD.
c FCA - EDITORA DE INFORMTICA 25
XML e XSL: da Teoria Prtica
26
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
Este DTD muito simples, contm apenas declaraes de elementos. Mesmo as-
sim, permite escrever cartas estruturadas e ainda fazer a validao estrutural desses
documentos. Contudo, est ainda um pouco distante de um DTD real que contm
normalmente maior riqueza informativa.
2.2 Elementos
Um elemento definido, no DTD, numa declarao do tipo ELEMENT, que obedece
seguinte estrutura:
c FCA - EDITORA DE INFORMTICA 27
XML e XSL: da Teoria Prtica
Em que:
DTD:
<!ELEMENT meu-elem (...)>
Instncia:
...<meu-elem>contedo do elemento</meu-elem>...
O identificador do elemento pode ser formado por letras, dgitos, dois pontos,
hfens, underscores e pontos. Mas s pode comear por letra, underscore ou
dois pontos.
DTD:
<!-- Um contacto composto por uma sequncia
de: nome, email e telefone. -->
<!ELEMENT contacto (nome,email,telefone)>
Instncia:
...
<contacto>
<nome>contedo de nome</nome>
<email>contedo de email</email>
<telefone>contedo de telefone</telefone>
</contacto>
...
vazio o elemento no dever ter qualquer contedo; este tipo de elementos tem
apenas um valor posicional.
28
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
Contedos atmicos
c FCA - EDITORA DE INFORMTICA 29
XML e XSL: da Teoria Prtica
...
O trajecto realizado encontra-se no mapa abaixo:
<imagem path="../imagens/mapa.jpg"/>
...
o carcter & no pode ser utilizado; em seu lugar dever ser colocada uma
referncia entidade que o define - &
o carcter < no pode ser utilizado; em seu lugar dever ser colocada uma
referncia entidade que o define - <
o carcter > no pode ser utilizado; em seu lugar dever ser colocada uma
referncia entidade que o define - >
30
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
Para obedecer s restries impostas pelo XML o texto deveria ser escrito da se-
guinte forma:
e ento us-lo ao longo do dito texto para marcar o incio e o fim de cada pargrafo,
obtendo-se um documento estruturado com o seguinte aspecto:
...
<para>Este livro tenta dar uma viso...</para>
<para>No primeiro captulo, ...</para>
...
Note que #PCDATA o nico tipo de dados primitivo possvel, quando se usa um
DTD para especificar a estrutura de um documento XML. Mesmo que haja elemen-
tos cujo contedo seja numrico ou temporal, eles tero de ser especificados como
tendo contedo textual. Esta uma das limitaes de um DTD que os XML Sche-
ma resolvem, como iremos ver mais frente (cap. ??).
c FCA - EDITORA DE INFORMTICA 31
XML e XSL: da Teoria Prtica
Contedos compostos
Elementos estruturados
Operadores de conexo:
32
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
Operadores de ocorrncia:
* (0 ou mais vezes) a o elemento definido por esta expresso tem de ser cons-
titudo por zero ou mais elementos a.
+ (1 ou mais vezes) a+ o elemento definido por esta expresso tem de ser cons-
titudo por um ou mais elementos a.
Elementos mistos
c FCA - EDITORA DE INFORMTICA 33
XML e XSL: da Teoria Prtica
Os elementos deste tipo acabam por ser elementos de contedo misto onde, no meio
do texto, pode aparecer livremente qualquer um dos outros elementos definidos no
DTD, um nmero de vezes tambm livre. O contedo destes elementos definido
pela palavra-chave ANY.
Neste DTD, define-se um tipo de documentos com elemento raiz doc, composto
por um ou mais elementos para. Por sua vez, o elemento para est definido como
sendo de contedo ANY, ou seja, pode ser texto com elementos nome, lugar ou
data pelo meio.
De acordo com este DTD, o documento abaixo seria um documento XML vlido.
34
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
No captulo 1, usou-se uma agenda de contactos para exemplificar alguns dos com-
ponentes de um documento XML. Agora, vai-se definir num DTD a estrutura de
uma agenda.
Uma agenda deste tipo , essencialmente, constituda por uma lista de entradas.
Uma entrada pode ser simples, correspondendo a uma pessoa ou empresa, ou pode
ser composta e, neste caso, corresponde a um grupo de pessoas ou empresas. De
notar que num grupo podem, tambm, aparecer referncias a entradas ou grupos
previamente definidos na agenda. A agenda poder conter um nmero livre de
grupos aninhados.
Cada entrada constituda pelos seguintes itens de informao:
c FCA - EDITORA DE INFORMTICA 35
XML e XSL: da Teoria Prtica
<AGENDA>
<ENTRADA>
<IDENT>e1</IDENT>
<TIPO>pessoa</TIPO>
<NOME>Jos Carlos Ramalho</NOME>
<EMAIL>jcr@di.uminho.pt</EMAIL>
<TELEFONE>253 604479</TELEFONE>
</ENTRADA>
<GRUPO>
<IDENT>epl</IDENT>
<ENTRADA>
<IDENT>e2</IDENT>
<TIPO>pessoa</TIPO>
<NOME>Pedro Henriques</NOME>
<EMAIL>prh@di.uminho.pt</EMAIL>
<TELEFONE>253 604469</TELEFONE>
</ENTRADA>
<ENTRADA>
<IDENT>e3</IDENT>
<TIPO>pessoa</TIPO>
<NOME>Joo Saraiva</NOME>
<EMAIL>jas@di.uminho.pt</EMAIL>
<TELEFONE>253 604479</TELEFONE>
</ENTRADA>
<REF>e1</REF>
</GRUPO>
<ENTRADA>
36
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
<IDENT>e4</IDENT>
<TIPO>pessoa</TIPO>
<NOME>Jos Joo Almeida</NOME>
<EMAIL>jj@di.uminho.pt</EMAIL>
<TELEFONE>253 604433</TELEFONE>
</ENTRADA>
</AGENDA>
Um DTD para este tipo de documentos podia ser especificado com o conjunto de
declaraes seguinte:
c FCA - EDITORA DE INFORMTICA 37
XML e XSL: da Teoria Prtica
Neste exemplo, vamos definir um DTD para um poema, mais especificamente para
um soneto, da autoria de lvaro de Campos. Em termos de anotao, ser nossa
inteno explicitar a estrutura (ttulo, autor, quadras, tercetos e versos), bem como
marcar nomes de pessoas ou lugares e datas que possam surgir no contedo textual.
A instncia devidamente anotada tem o seguinte aspecto:
38
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
O DTD, que permitir validar esta instncia, pode ser concebido de forma mais
especfica para esta famlia de poemas ou, em termos mais genricos, para suportar
qualquer tipo de poema. Neste caso, optmos por torn-lo mais especfico e, ento,
definimos um DTD para sonetos.
Como foi dito, note-se que temos agora um elemento com contedo misto: verso.
Este elemento, que corresponde ao contedo semi-estruturado do poema, est defi-
nido como uma mistura de texto com elementos nome e lugar.
Se quisssemos tornar este DTD mais genrico, podamos redefinir o elemento
corpo da seguinte forma:
Assim, o corpo do poema deixaria de ter de ser formado por duas quadras e dois
tercetos e poderia ser formado por uma sequncia de quadras e tercetos ordenados
livremente.
Podamos ainda torn-lo mais genrico, fazendo as seguintes redefinies:
c FCA - EDITORA DE INFORMTICA 39
XML e XSL: da Teoria Prtica
Agora, um poema formado por uma sequncia de estrofes que, por sua vez, so
formadas por uma sequncia de um ou mais versos. Este DTD dever dar para
anotar qualquer tipo de poema.
Ao longo desta generalizao, ganhou-se universalidade, mas perdeu-se riqueza
semntica. A primeira verso garantia que um documento, que fosse vlido de
acordo com esse DTD, teria a estrutura de um soneto. A ltima verso ainda garan-
te que um soneto devidamente anotado um documento vlido, mas, alm disso,
garante o mesmo para muitos outros poemas que no so sonetos.
Fica aqui, ento, o aviso de que a generalizao pode ser perigosa pois implica
perdas semnticas. O ideal termos o objectivo final bem claro: neste caso se qui-
sssemos processar sonetos por exemplo, verificar mtricas e rimas, das quadras e
tercetos, optaramos pela primeira verso do DTD; se, por outro lado, quisssemos
processar poemas num sentido mais lato, optaramos pela ltima verso.
2.3 Atributos
No captulo anterior (captulo 1), abordou-se o conceito de atributo e a sua relao
com os elementos. Agora, vamos ver como que aqueles se podem declarar num
DTD.
Um dos exemplos da seco anterior foi a agenda de contactos (ex. 23). No DTD
apresentado esto presentes as seguintes declaraes:
Na altura, foram todos definidos como elementos porque estvamos a utilizar ape-
nas elementos na especificao do DTD. Agora, introduzindo os atributos, podem-
se questionar algumas das decises tomadas. Por exemplo, pensando bem, TIPO
uma caracterstica do elemento ENTRADA e no um dos elementos do seu contedo;
por isso pode passar a atributo (uma deciso sempre subjectiva por mais argumentos
que se arranjem). Por seu lado, IDENT e REF devem ser vistos como um par pois
40
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
com os seus valores que se monta um mecanismo de referenciao2 . Ora, para este
fim, existe no XML, um par de tipos de atributos, ID e IDREF que tm a eles asso-
ciada a validao que garante que a referenciao est bem feita. Por este motivo,
os elementos IDENT e REF deveriam, tambm, ser convertidos em atributos.
Assim, substitumos aquelas declaraes iniciais pelas que se seguem:
Depois destas alteraes, o DTD da agenda ficou com o seguinte conjunto de de-
claraes:
<!ATTLIST ENTRADA
IDENT ID #REQUIRED
TIPO (pessoa|empresa) "pessoa">
2
Mecanismo atravs do qual podemos referir, ou chamar, num dado ponto do documento, um
elemento definido noutro ponto, identificando-o sem ambiguidades, ou seja, univocamente.
c FCA - EDITORA DE INFORMTICA 41
XML e XSL: da Teoria Prtica
Apesar de ser uma deciso algo subjectiva, como se disse anteriormente, obtm-se
uma definio do tipo de documento pretendido, um DTD, que muito mais preciso
e conciso em termos do papel desempenhado por cada componente do sistema de
anotao.
2.3.1 Declarao
<!ATTLIST elem-id
att1-id att1-tipo att1-class att1-val-omissao
...
attn-id attn-tipo attn-class attn-val-omissao
>
Onde:
Como se pode ver pela estrutura acima, uma declarao ATTLIST pode servir para
declarar todos os atributos de um elemento. Usar uma declarao deste tipo para
todos ou declarar cada um por sua vez, s depende do gosto pessoal de quem es-
creve o DTD. Para exemplificar este ponto, apresenta-se a seguir um conjunto de
declaraes para um elemento imagem.
42
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
<!ATTLIST imagem
ficheiro CDATA #REQUIRED
largura CDATA #IMPLIED
altura CDATA #IMPLIED
>
ou, alternativamente:
2.3.2 Tipos
Os valores dos atributos podem ser mais do que simples strings, podem ter uma
semntica mais especfica. Por exemplo, um atributo pode ser declarado de modo a
que o valor que a ele fique associado seja nico, i. e., um identificador chave que
pode ser usado para referenciar e localizar um elemento num documento.
Em XML, existem dez tipos de atributo, que sero explicados a seguir:
CDATA
c FCA - EDITORA DE INFORMTICA 43
XML e XSL: da Teoria Prtica
Enumerado
ID
IDREF
IDREFS
ENTITY
ENTITIES
NOTATION
NMTOKEN
NMTOKENS
CDATA
Este o tipo de atributo mais geral. O valor dum atributo deste tipo qualquer texto
livre sem anotaes. Pode ser usado para muitas espcies diferentes de dados3 :
preos, URLs, endereos de e-mail, e todas aquelas que no se enquadrarem num
dos outros tipos.
Os atributos do elemento imagem, no exemplo acima, so deste tipo.
ID
44
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
com o mesmo valor. Por sua vez, cada um dos elementos no pode ter mais do que
um atributo deste tipo.
Como a prpria palavra-chave sugere (ID), este tipo de atributos deve ser usado
para associar identificadores nicos a elementos.
Apesar de ser comum, basta olhar para o exemplo da agenda (ex. 23), os nomes dos
atributos deste tipo no necessitam de ser obrigatoriamente chamados ID ou id,
podendo ter nomes como: ident, entrada-i ou cdigo.
No caso da agenda, h dois atributos deste tipo. Um associa um identificador nico
a cada entrada. O outro associa um identificador nico a cada grupo.
<!ATTLIST ENTRADA
IDENT ID #REQUIRED
... >
<!ATTLIST GRUPO IDENT ID #REQUIRED>
IDREF
c FCA - EDITORA DE INFORMTICA 45
XML e XSL: da Teoria Prtica
...
<AGENDA>
<ENTRADA IDENT="e1" TIPO="pessoa">
...
</ENTRADA>
<GRUPO IDENT="epl">
<ENTRADA IDENT="e2" TIPO="pessoa">
...
</ENTRADA>
<ENTRADA IDENT="e3" TIPO="pessoa">
...
</ENTRADA>
<REFERENCIA REF="e1"/>
<REFERENCIA REF="e5"/>
</GRUPO>
...
</AGENDA>
46
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
IDREFS
O tipo IDREFS uma caracterstica til quando se pretende fazer referncia a mais
do que um elemento. O valor do atributo deve ser constitudo por uma lista de iden-
tificadores separados por espao, identificadores esses que devem estar instanciados
num atributo do tipo ID algures no documento.
Considere o exemplo anterior dos livros e respectivos autores:
...
<AUTOR id="jcr">...</AUTOR>
<AUTOR id="prh">...</AUTOR>
...
<LIVRO autores="jcr prh"> ... </LIVRO>
...
Enumerado
c FCA - EDITORA DE INFORMTICA 47
XML e XSL: da Teoria Prtica
<!ATTLIST ENTRADA
IDENT ID #REQUIRED
TIPO (pessoa|empresa|instituicao) "pessoa">
Como se pode ver, a lista de valores possveis define-se dentro de parntesis curvos
com uma barra vertical a separar os valores. O valor por omisso, colocado entre
aspas a seguir enumerao, dever ser um dos valores da lista e corresponde ao
valor que ser assumido pelo processador caso o utilizador no atribua um valor ao
atributo.
Poderamos, ento, ter a seguinte instncia XML:
...
<ENTRADA IDENT="e9" TIPO="empresa">
<NOME>Lavandaria Raio de Lua</nome>
<EMAIL>raio@mail.pt</EMAIL>
<TELEFONE>253 610444</TELEFONE>
</ENTRADA>
...
ENTITY
Um atributo do tipo ENTITY pode conter como valor o nome de uma entidade (cap.
??) declarada algures no DTD.
Por exemplo, o elemento ENTRADA podia ter uma fotografia (em formato JPEG ou
outro), associada atravs de um atributo foto:
<!ATTLIST ENTRADA
IDENT ID #REQUIRED
TIPO (pessoa|empresa|instituicao) "pessoa"
FOTO ENTITY >
48
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
...
<ENTRADA IDENT="e7" FOTO="paulo">
<NOME>Paulo Jos Bastos</nome>
...
</ENTRADA>
...
Como poder concluir mais tarde, nem esta a maneira mais produtiva de associar
imagens a documentos XML, nem este tipo de atributo muito usado, estando a ser
discutida a sua permanncia na norma XML.
ENTITIES
...
<apresentacao
id="ap3"
slides="slide2 slide5 slide6 slide7"/>
...
NOTATION
Este o tipo de atributo menos utilizado e que, provavelmente, deixar de ser uti-
lizado brevemente. O tipo NOTATION usado para associar um tipo de dados
externo (normalmente binrio: gif, jpeg, mpeg, ...) a um determinado atributo ou
elemento. Dada a sua pouca utilidade e utilizao, no prolongaremos mais a sua
discusso.
c FCA - EDITORA DE INFORMTICA 49
XML e XSL: da Teoria Prtica
NMTOKEN
NMTOKENS
Quando o valor de um atributo precisa de ser composto por uma lista de NMTOKEN
separados por espao, usa-se este tipo.
semelhana do anterior, um tipo a cair em desuso. Normalmente, utilizado
em aplicaes onde se coloca a informao nos atributos em lugar de a colocar
nos elementos. Como iremos ver quando estivermos a discutir o processamento de
documentos XML, esta uma das situaes a evitar.
Considere de novo o exemplo da agenda de contactos (ex. 23), e suponha que a cada
entrada estar associada uma alcunha, para um tratamento mais pessoal. Em lugar
de colocar essa informao num elemento, vamos coloc-la num atributo. Como
uma alcunha pode ter mais do que uma palavra, vamos declarar este atributo com o
tipo NMTOKENS:
<!ATTLIST ENTRADA
IDENT ID #REQUIRED
ALCUNHA NMTOKENS
TIPO (pessoa|empresa|instituicao) "pessoa"
FOTO ENTITY>
A nica diferena entre este tipo e o CDATA so alguns sinais de pontuao que
podem aparecer neste ltimo.
Uma instncia de uma ENTRADA com alcunha poderia ser:
50
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
2.3.3 Classes
#IMPLIED
<!ATTLIST imagem
altura CDATA #IMPLIED
largura CDATA #IMPLIED>
#REQUIRED
c FCA - EDITORA DE INFORMTICA 51
XML e XSL: da Teoria Prtica
#FIXED
O atributo constante e imutvel e o seu valor ser sempre o que estiver na declara-
o frente da palavra-chave #FIXED. Se o atributo for instanciado, ter de ser com
um valor igual ao declarado. Caso no seja instanciado, o sistema de processamento
assumir o valor declarado.
Por exemplo, suponha que numa dada aplicao se pretende associar um tipo de
dados mais forte a um dado elemento, i. e., pretende-se indicar que os dados arma-
zenados no elemento so mais do que uma simples string. Neste caso, o elemento
data ir armazenar datas e pretende-se indicar que o contedo do elemento mais
do que uma string, uma data que segue um determinado formato. Como o DTD
no tem um meio explcito para o fazer, vamos faz-lo recorrendo a um atributo
com um valor por omisso #FIXED.
Desta maneira, qualquer processador vai assumir que todos elementos data que
aparecerem instanciados num documento tm um atributo tipo com o valor
"data", podendo usar esse valor para parametrizar as aces que iro executar.
Mais tarde, quando estivermos a discutir a transformao de documentos XML,
iremos ver como tirar partido deste tipo de atributos.
A indicao da classe na declarao de um atributo opcional. Se no for especifi-
cada as ferramentas de processamento trataro o atributo como se este pertencesse
classe #IMPLIED.
Alm de especificar um tipo e uma classe para o atributo, uma declarao ATTLIST
inclui tambm a especificao de um valor por omisso. O valor por omisso
o valor que ser usado para aquele atributo se o utilizador no especificar um na
instncia.
O valor por omisso uma string. Por exemplo, e voltando agenda de contactos,
tnhamos a seguinte declarao:
52
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
<!ATTLIST ENTRADA
...
TIPO (pessoa|empresa|instituicao) "pessoa">
Depois de vermos como especificar um DTD, vamos agora discutir as vrias possi-
bilidades que h para associar um DTD a um documento.
Um documento XML completo tem de incluir uma referncia para o DTD com o
qual tem de ser comparado. Esta referncia especificada no incio do documento
atravs de uma declarao DOCTYPE:
<!DOCTYPE agenda
SYSTEM "http://xml.di.uminho.pt/DTDs/agenda.dtd">
Esta declarao no pode aparecer livremente num documento XML. Ela deve apa-
recer sempre aps a declarao XML e antes do elemento raiz. No caso da agenda
teramos:
c FCA - EDITORA DE INFORMTICA 53
XML e XSL: da Teoria Prtica
54
c FCA - EDITORA DE INFORMTICA
Documentos XML vlidos
Note que, nesta situao, j no h indicao de onde procurar o DTD, pois este
est completamente definido no bloco de redefinies.
Esta no a situao normal. Um DTD define uma classe de documentos e, como
tal, no deve ficar "agarrado" a uma instncia documental. No entanto, esta uma
situao que poder ser til em determinadas circunstncias: quando estamos a
desenvolver o DTD ou quando queremos enviar um documento com o respectivo
DTD a algum (em vez de enviarmos dois ficheiros e confiarmos nos conhecimentos
da pessoa para saber o que h-de fazer com eles, podemos enviar um s ficheiro e,
desta maneira, as ferramentas que iro processar o documento trataro da validao,
sendo este processo transparente para o utilizador).
c FCA - EDITORA DE INFORMTICA 55
XML e XSL: da Teoria Prtica
56
c FCA - EDITORA DE INFORMTICA
XML Path
3 Language
(XPath)
c FCA - EDITORA DE INFORMTICA 57
XML e XSL: da Teoria Prtica
O XPath uma sintaxe usada para descrever partes de um documento XML. Com
o XPath, possvel referenciar o primeiro elemento aluno, o atributo regime
de aluno, todos os elementos nome cujo contedo contm Jos e muitas outras
variaes. Uma stylesheet XSLT usa expresses XPath em dois atributos, match e
select, que esto associados a vrios elementos do XSLT e que permitem guiar
a transformao do documento.
O XPath foi desenvolvido para ser utilizado como valor de um atributo num docu-
mento XML. A sua sintaxe uma mistura da linguagem de expresses, normalmen-
te utilizada noutras linguagens de programao (como 23 7 contador) com a
linguagem para a especificao do caminho numa estrutura de directorias como a
usada nos sistemas Unix ou Windows (como /poema/titulo). Adicionalmente, o
XPath fornece ainda um conjunto de funes para manipulao de texto, Names-
paces, e outras funcionalidades normalmente necessrias na transformao de um
documento.
Outro pormenor importante que preciso reter que o XPath trabalha com a verso
do documento XML processada pelo parser, isto , as entidades no texto foram
expandidas e as seces especiais de texto (CDATA) foram convertidas para texto.
Assim, no h maneira de saber se um nodo textual na ADA estava no documento
original como uma entidade ou uma seco CDATA.
nodos elemento;
nodos atributo;
nodos texto;
nodos comentrio;
58
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
nodos namespace.
Em XPath, o nodo raiz o nodo que contm o documento inteiro. No nosso caso,
o nodo raiz contm o elemento poema, mas no o elemento soneto. Numa
c FCA - EDITORA DE INFORMTICA 59
XML e XSL: da Teoria Prtica
Um nodo atributo tem sempre um pai que um nodo elemento. No nosso exemplo,
o nodo elemento correspondente ao elemento poema pai de um nodo atributo
com nome tipo e valor soneto.
Este tipo de nodos tem, no entanto, algumas funcionalidades distintas dos outros
tipos de nodos:
Apesar de um nodo elemento ser o pai dos seus nodos atributos, estes no
so filhos do seu pai. Os filhos de um nodo elemento so os elementos tex-
to, elemento, comentrio e instruo de processamento contidos no elemento
correspondente do documento original. Se se quiser seleccionar os nodos
atributo tem de se indicar explicitamente. Mais tarde veremos que tratar os
60
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
Os nodos deste tipo raramente so utilizados nas folhas de estilo XSL. Estes nodos
existem principalmente para benefcio do processador que tem de diferenciar ele-
mentos pertencentes a diferentes namespaces. As declaraes de namespaces
nas instncias XML apesar de corresponderem tecnicamente a atributos, so trata-
das em XPath como nodos do tipo namespace (uma declarao como:
c FCA - EDITORA DE INFORMTICA 61
XML e XSL: da Teoria Prtica
3.2.1 Contexto
A seguir, descrevem-se alguns dos operadores mais simples que podem ser usados
em expresses XPath:
62
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
Eis algumas expresses XPath, tendo como base de aplicao o poema, e uma breve
descrio de cada uma:
/ Selecciona o nodo raiz da ADA que, no caso do poema, tem trs nodos filho:
um nodo elemento (poema), um nodo instruo de processamento (contendo
a declarao XML) e um nodo comentrio.
c FCA - EDITORA DE INFORMTICA 63
XML e XSL: da Teoria Prtica
(e1) /poema/corpo/quadra/verso
(e2) verso
Seleco de Atributos
64
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
O XPath possui mais algumas funes de seleco, duas das quais permitem se-
leccionar nodos do tipo comentrio e nodos do tipo instruo de processamento:
comment() e processing-instruction(). A utilizao destes selecto-
res ser sempre muito espordica pois, normalmente, a informao colocada em
comentrios ou instrues de processamento tem um fim muito especfico. Mas
uma utilizao possvel seria a inteno de visualizar os comentrios no documento
transformado.
Voltando ao nosso caso de estudo:
c FCA - EDITORA DE INFORMTICA 65
XML e XSL: da Teoria Prtica
Alm dos selectores j discutidos, o XPath possui quatro selectores mais comple-
xos:
A seguir apresentam-se alguns exemplos que usam combinaes dos vrios selec-
tores apresentados:
66
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
Com estes exemplos, encerra-se a primeira parte do XPath. A segunda parte, inicia-
se j na seco seguinte e introduz um conceito novo e importante: o eixo de nave-
gao na rvore documental abstracta.
c FCA - EDITORA DE INFORMTICA 67
XML e XSL: da Teoria Prtica
child Selecciona os filhos do nodo corrente. Como j foi dito, a omisso do eixo
de navegao corresponde indicao implcita deste eixo. Nos nodos filho
do nodo corrente esto includos os nodos elemento, comentrio, instruo de
processamento e textuais. Os nodos do tipo atributo e namespace no so
abrangidos pela seleco deste eixo.
parent Selecciona o nodo pai do nodo corrente, se existir (se estivermos posici-
onados na raiz o resultado devolvido uma lista vazia de nodos). Este eixo
pode ser abreviado com a utilizao do selector dois pontos (..). A expresso
parent::verso e a expresso ../verso so equivalentes.
self Selecciona o nodo corrente. Este eixo pode tambm ser abreviado com a utili-
zao do ponto (.). A expresso self::* e a expresso . so equivalentes.
68
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
preceding Selecciona todos os nodos que aparecem antes do nodo corrente no do-
cumento, excepto os nodos ancestrais e os nodos atributo e namespace.
following Selecciona todos os nodos que aparecem depois do nodo corrente no do-
cumento, excepto os nodos descendentes e os nodos atributo e namespace.
Nos restantes captulos do livro, surgiro exemplos prticos onde estes eixos de
navegao sero utilizados para resolver problemas prticos. No entanto, ficam aqui
alguns exemplos didcticos de utilizao de expresses com eixos sobre o poema.
Para cada expresso ei indicado o resultado ri .
(e1.1) /child::poema/child::corpo/child::quadra/child::*
(e1.2) /poema/corpo/quadra/*
(e2.1) /poema/corpo/quadra/child::lugar
(e2.2) /poema/corpo/quadra/lugar
(e3.1) parent::lugar
(e3.2) ../lugar
c FCA - EDITORA DE INFORMTICA 69
XML e XSL: da Teoria Prtica
(e4) quadra/ancestor::*
(e5) quadra/preceding-sibling::*
(e6) quadra/following-sibling::*
3.4 Predicados
Um predicado pode ser definido como um filtro que restringe os nodos selecciona-
dos por uma expresso XPath. Os predicados so avaliados em tempo de execuo
e do como resultado um valor booleano (verdadeiro ou falso). Se, para um de-
terminado nodo, o resultado da avaliao do predicado for verdadeiro, esse nodo
seleccionado.
Em termos sintcticos, um predicado especificado dentro de parntesis rectos. Por
exemplo:
//quadra/verso[2]
70
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
//quadra[1]/verso[2]
//quadra[position()=1]/verso[position()=2]
/poema[@tipo]
//*[@*]
quadra[last()]
verso[position() mod 2 = 0]
c FCA - EDITORA DE INFORMTICA 71
XML e XSL: da Teoria Prtica
3.5 Funes
At ao momento, possvel concluir que o XPath uma linguagem poderosa no
que concerne seleco de nodos numa rvore documental abstracta. No entanto,
existem expresses de seleco que no possvel especificar com os mecanismos
discutidos at agora. Para essas situaes a norma prope a utilizao de algumas
funes (quase todas implementadas nos processadores de XSL discutidos neste
livro).
As funes do XPath podem ser divididas em quatro categorias. A seguir apresentam-
se, para cada categoria, a lista de funes existentes juntamente com uma breve
descrio.
72
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
count(//*)
conta o nmero de elementos no poema
count(quadra[1]/ancestor::*)
conta o nmero de ancestrais da primeira quadra
d o nvel da rvore em que a quadra se encontra
id(identificador) D como resultado o nodo que tem um atributo do tipo
ID com valor igual a identificador.
Funes para manipulao de strings Nesta categoria, esto as funes que per-
mitem manipular texto. Como o utilizador experimentado poder constatar
muitas delas so habituais nas linguagens de programao ou em sistemas
operativos da famlia do Unix.
concat(str1,str2,...) D como resultado uma string resultante da concatena-
o das vrias strings argumento.
starts-with(str1,str2) Retorna um valor booleano verdadeiro se str1 come-
ar por str2.
contains(str1,str2) Retorna um valor booleano verdadeiro se str1 conti-
ver str2.
substring(str,num,comp) Retorna uma string que se extrai da string argu-
mento comeando na posio num e de comprimento comp.
substring-before(str1,str2) Retorna uma substring da primeira string ar-
gumento composta pelos caracteres anteriores primeira ocorrncia da
segunda string argumento.
substring-after(str1,str2) Retorna uma substring da primeira string argu-
mento composta pelos caracteres posteriores primeira ocorrncia da
ssegunda string argumento.
string-length(str) Retorna o nmero de caracteres na string.
normalize-space(str) Retorna a string argumento com o espao normali-
zado: so retirados os espaos do incio e do fim, e, todas as sequncias
de caracteres brancos no meio da string so substitudas por um nico
espao em branco.
translate(str1,str2,str3) Retorna a primeira string argumento (str1) com
as ocorrncias de caracteres de str2 pelo respectivo carcter (na mes-
ma posio) de str3.
c FCA - EDITORA DE INFORMTICA 73
XML e XSL: da Teoria Prtica
74
c FCA - EDITORA DE INFORMTICA
XML Path Language (XPath)
/AAA/CCC Selecciona nodos de nome CCC filhos do nodo principal AAA que
filho da raiz.
//DDD/BBB Selecciona todos os nodos de nome BBB que sejam filhos de nodos
DDD posicionados em qualquer ponto da rvore documental.
/AAA/CCC/DDD/* Selecciona todos os nodos filhos de nodos DDD que, por sua
vez, so filhos de nodos CCC que so filhos do nodo principal AAA que filho
da raiz.
/AAA/BBB[1] Selecciona o primeiro filho com nome BBB do nodo AAA que
filho da raiz.
//BBB[@ident] Selecciona todos os nodos com nome BBB que tenham um atri-
buto de nome ident instanciado.
//BBB[@*] Selecciona todos os nodos com nome BBB que tenham pelo menos
um atributo instanciado.
c FCA - EDITORA DE INFORMTICA 75
XML e XSL: da Teoria Prtica
//BBB | //CCC Selecciona todos os nodos na rvore documental com nome BBB
ou CCC.
Termina aqui este captulo sobre XPath. No prximo captulo, introduz-se a constru-
o de folhas de estilo XSLT e veremos como e onde que o XPath se integra no
processamento de um documento XML.
76
c FCA - EDITORA DE INFORMTICA