Guia de Consulta Rápida
XML
Otávio C. Décio
Novatec Editora
Guia de Consulta Rápida XML de Otávio C. Décio
Copyright@2000 da Novatec Editora Ltda.
Todos os direitos reservados e protegidos pela Lei
9.610 de 19/02/1998. É proibida a reprodução desta
obra, mesmo parcial, por qualquer processo, sem
prévia autorização, por escrito, do autor e da Editora.
Editor: RUBENS PRATES
ISBN: 85-85184-86-8
NOVATEC EDITORA LTDA.
Rua Luís Antônio dos Santos 110
02460-000 São Paulo SP – Brasil
Tel.: +55 11 6959-6529
Fax: +55 11 6950-8869
E-mail: [email protected]
Site: www.novatec.com.br
2
Sumário
XML .................................................................................................. 5
Introdução à XML ........................................................................ 5
O que é XML? ......................................................................... 5
Sopa de letras ........................................................................... 7
Aplicações de XML ................................................................. 8
O estado atual de XML ............................................................ 9
Outras tecnologias XML ....................................................... 10
Conceitos básicos de documento XML ...................................... 12
Hierarquia e seqüência ................................................................ 13
Hierarquia .............................................................................. 13
Seqüência ............................................................................... 13
Dados e Markup .................................................................... 13
Conteúdo misto ...................................................................... 14
Atributos ................................................................................ 16
XML e sua relação com HTML .................................................. 16
Exemplo de transformação XML em HTML ......................... 18
Definindo o estilo em CSS .................................................... 20
Definindo o estilo em XSL .................................................... 20
Alterando o documento ......................................................... 22
Softwares disponíveis para XML ............................................... 26
Browsers ................................................................................ 26
Editores .................................................................................. 27
Parsers ................................................................................... 27
Processadores XSL ................................................................ 27
Banco de dados com suporte a XML ..................................... 28
Sintaxe de XML ............................................................................... 29
Documento XML bem-formado ................................................. 29
Prólogo .................................................................................. 29
Um exemplo de documento XML ......................................... 30
Regras para se escrever um documento XML bem-formado ...... 31
Regras para definição de nomes ............................................ 33
Tags XML maiúsculas são diferentes de minúsculas ............. 34
Elementos devem ter uma tag de abertura e fechamento ....... 34
Elementos XML vazios ......................................................... 34
Todos os elementos XML devem ser aninhados apropriadamente ............................................................................... 34
Todos os documentos XML devem obrigatoriamente ter um
único elemento-raiz ......................................................... 35
Caracteres reservados ............................................................ 35
Atributos ..................................................................................... 36
Valores de atributos devem estar entre aspas (simples ou
duplas) ............................................................................. 36
Exemplos de uso de elementos versus atributos .................... 36
Limitações de atributos .......................................................... 37
Quando usar atributos ............................................................ 38
Um exemplo de uso adequado de atributos ........................... 39
Seções CDATA ...................................................................... 39
Espaços de nomes (namespaces) ................................................ 40
Por que usar espaços de nomes .............................................. 40
Declarando espaços de nomes ............................................... 41
3
Sumário
DTD ................................................................................................. 42
Aplicações de DTD .................................................................... 42
XML News ............................................................................ 42
SMIL ..................................................................................... 43
CDF ....................................................................................... 43
Declaração de tipos de documento ............................................. 43
Declaração interna ................................................................. 45
Declaração externa ................................................................ 46
Declaração mista ................................................................... 46
Uso de DTD com HTML ....................................................... 47
Declarações DTD ....................................................................... 47
Declarando elementos ................................................................. 48
Elementos-filhos .................................................................... 49
Escolhas ................................................................................. 50
Grupos ................................................................................... 50
Conteúdo misto ...................................................................... 51
Elementos vazios ................................................................... 51
Comentários ........................................................................... 51
Declarando atributos ................................................................... 52
Tipos de atributo .................................................................... 52
Valores default do atributo ..................................................... 56
Usando Xerces para validar documentos XML .......................... 57
Entidades .................................................................................... 60
Entidades gerais internas ....................................................... 60
Entidades gerais externas ....................................................... 61
Entidades parametrizadas ...................................................... 62
Entidades parametrizadas externas ........................................ 63
Exemplo de DTD ........................................................................ 64
XML Schemas ............................................................................ 65
Tecnologias XML ............................................................................ 66
CSS – Folhas de estilo em cascata .............................................. 66
Componentes de uma folha de estilo CSS ............................. 66
Como associar CSS com um documento ............................... 67
Sintaxe CSS ........................................................................... 68
Múltiplos estilos para um seletor ........................................... 69
Um estilo para múltiplos seletores ......................................... 69
Selecionando por identificador .............................................. 69
Selecionando por contexto ..................................................... 69
Herdando estilos .................................................................... 70
Estabelecendo subclasses ....................................................... 71
Estabelecendo subclasses dependentes de ID ........................ 72
Por que folha de estilos “em cascata” .................................... 72
A declaração !important ......................................................... 72
Limitações de CSS para aplicações complexas ..................... 73
XPath .......................................................................................... 74
Exemplos de XPath ............................................................... 75
XSLT (XSL Transformations) ..................................................... 76
Templates XSL ...................................................................... 78
Instruções XSLT .................................................................... 79
Glossário .......................................................................................... 83
Lista de endereços interessantes ...................................................... 92
Informações adicionais .................................................................... 93
Notação utilizada neste Guia ...................................................... 93
Comentários e sugestões ............................................................. 93
Sobre o autor ............................................................................... 93
4
XML
Introdução à XML
O que é XML?
XML é a mais nova solução para a pobreza mundial, as
guerras e a integração de sistemas, assim como um dia
também foram a programação estruturada, a tecnologia
de orientação a objetos e a linguagem Java. Os grandes
fabricantes de sistemas apóiam essa visão, e atualmente
estão integrando XML cada vez mais em seus produtos.
Bancos de dados, ferramentas de desenvolvimento,
computação distribuída, browsers, waps, enfim, onde há
transferência de informação há XML.
XML tem como propósito fundamental a descrição de
informações. Essa capacidade é extremamente importante
para armazenamento, recuperação e transmissão de
informações. XML permite colocarmos em um mesmo
lugar dados e os assim chamados metadados, ou seja, uma
descrição desses dados. XML estabelece um formato
textual que pode ser facilmente entendido quando olhado
diretamente (como, por exemplo, por meio de um editor
de textos), ao invés de usar um formato binário ou
seqüencial.
A vantagem que XML traz é sutil, mas importante.
Quando usamos um formato binário, os dados podem ser
lidos somente pelo programa que os produz, ou por um
programa que tenha um conhecimento íntimo da estrutura
desse arquivo. Na maioria das vezes, essa estrutura é
proprietária, tornando-se necessário em muitos casos
fazer-se uma engenharia reversa para entender esses
dados. Imagine, por exemplo, o que seria necessário para
escrever um programa que produzisse ou lesse arquivos
no formato MS-Word. Aliás, preste atenção no comando
“Salvar Como” do MS-Word. Você pode escolher entre
vinte e três diferentes formatos, a última vez que eu
contei. Assim como no MS-Word, todos os sistemas
profissionais têm várias maneiras de fazer basicamente a
mesma coisa: gerar, recuperar e transmitir informações.
O problema é que praticamente todos eles fazem isso de
maneira mais ou menos proprietária, assumindo que
todas as partes envolvidas estão de acordo com um
formato preestabelecido.
5
XML
Em XML, os dados são armazenados com sua descrição,
de maneira simples e clara. Não é necessário nenhuma
tabela adicional para nos informar o nome e a posição de
certo elemento.
Por exemplo, atualmente uma maneira comum de se
transmitir dados de um sistema para outro é por meio de
arquivos delimitados, onde cada registro ocupa uma linha
e cada coluna de dados é separada das outras por uma
vírgula ou um caractere de tabulação. Tanto o programa
que gera quanto o programa que utiliza esses dados
devem possuir uma definição de registro em separado, ou
seja, uma definição que informe que a coluna 1 é o RG, a
coluna 2 é o NOME e assim por diante.
Coluna
Posição
RG
NOME
ENDERECO
1-10
11-50
51-
Dados
1200229912ADALBERTO SILVA.......AVENIDA CENTRAL, 123
2343222231JOSEFINA DOS ANJOS...…RUA DOS PARDAIS, 23
Outra vantagem de XML: a adição ou a remoção de
elementos tem um impacto menor que nos formatos
binário ou seqüencial, onde o deslocamento de apenas um
byte pode ser catastrófico. Em XML, se adicionarmos um
elemento e o programa não o estiver esperando, ele vai ser
ignorado. Se omitirmos um elemento, ele simplesmente
deixará de ser identificado.
Exemplo
<PESSOA>
<RG>1299228812</RG>
<NOME>Adalberto Silva</NOME>
<ENDERECO>Avenida Central, 123</ENDERECO>
</PESSOA>
<PESSOA>
<RG>2343222231</RG>
<NOME>Josefina Dos Anjos</NOME>
<ENDERECO>Rua dos Pardais, 23</ENDERECO>
</PESSOA>
6
XML
Por ter uma estrutura simples e bem-definida, XML
permite que validemos o documento antes de iniciarmos
seu processamento. Para dar uma idéia de como isso é
importante, tente abrir um arquivo com extensão “.doc”
criado pelo MS-Word, usando o programa WordPad
(que vem na instalação-padrão do Windows 95 e NT). O
resultado é um total desastre, sendo impossível determinar
seu conteúdo. Isso ocorre porque não é possível validar
um arquivo “.doc”.
XML tem um objetivo importante: uma maneira comum
de descrever dados. Não se trata de querer transferir
informações essencialmente incompatíveis, como, por
exemplo, carregar uma figura de Autocad em um
documento Word. Trata-se, sim, de fazer com que ambos
os programas, se desejarem trocar documentos, descrevam
esses documentos usando sintaxe e estrutura comuns.
Mais tarde, veremos que, mediante tecnologias como
XSL, se torna possível o desenvolvimento de regras de
transformação que vão traduzir dados de um sistema a
outro, pelo mapeamento dos elementos.
XML tem grandes ambições e talvez não acabe com a
pobreza no mundo. Contudo, já provou ser capaz de
implementar Remote Procedure Calls (RPCs) e protocolos
de consulta e de atualização de bancos de dados (como o
padrão SOAP). Ou seja, não é apenas uma maneira de
armazenar dados, é uma forma de transmiti-los.
Sopa de letras
XML é uma tecnologia que nos traz, antes de mais nada,
várias novas siglas. Como se a vida já não fosse cheia
delas. Mas aos poucos elas vão fazendo sentido. A grande
maioria delas começa com X, o que já ajuda. “X” é a letra
em inglês que denota extensibilidade. XML é o acrônimo
de (EXtensible Markup Language – Linguagem
Extensível de Marcas). XML é uma linguagem
padronizada, originalmente direcionada para o
processamento de documentos, proposta e controlada
pelo mesmo organismo que mantém o padrão HTML
(W3C, ou World Wide Web Consortium).
7
XML
Aplicações de XML
XML tem suas raízes na indústria de publicações
(documentação, livros, páginas Web) e, portanto sua
apliação nessas áreas é claramente visível. Entretanto,
graças à simplicidade sintática, à disponibilidade de
ferramentas, e à capacidade de descrever dados de maneira
estruturada, XML passou a ser utilizada em muitas outras
aplicações.
Uma área de particular interesse é a de interoperabilidade.
Recentemente, muitas tecnologias foram desenvolvidas
para permitir a comunicação e a colaboração entre sistemas
distribuídos. Entre elas, protocolos como RPC, DCE,
CORBA, COM e DCOM, arquiteturas como ActiveX e
linguagens como Java. Entretanto, essas tecnologias se
preocupam muito com o controle, mas pouca atenção é
dada para a informação. Ou seja, pouco se prestou atenção
às maneiras padronizadas de se transferir dados. XML
não exclui nenhuma dessas tecnologias, ao contrário,
vem a ser uma adição importante. Podemos usar XML por
meio desses protocolos ou até mesmo podemos criar
novas maneiras de realizar processamento distribuído
sobre protocolos como HTTP, FTP ou SMTP. Isso permite,
por exemplo, a comunicação de sistemas através de
firewalls ou pelo uso de e-mails tendo XML como
conteúdo.
Aplicação
Descrição
XML-QL
Uma linguagem de pesquisa para XML com funções
parecidas com SQL (Structured Query Language).
Umalinguagemextensívelparadefiniçãodetransações
em bancos de dados distribuídos.
Uma linguagem para transferência de informações
financeiras.
Um protocolo que permite acessar serviços, objetos e
servidores de maneira independente sobre protocolos
como HTTP, FTP e SMTP.
AXTP
FinXML
SOAP
Muitas outras aplicações estão surgindo a cada dia, todas
se beneficiando da capacidade da XML de descrever
informações.
8
XML
O estado atual de XML
XML é um conjunto de recomendações publicadas pelo
W3C, que especifica a semântica e a sintaxe de XML e de
tecnologias correlatas. Muitas dessas tecnologias estão
estáveis, já com status de recomendação, o que significa
que são extremamente estáveis e têm amplo suporte da
indústria. Entretanto, muitas outras tecnologias estão
ainda em andamento, em diversos estágios, desde
submissão inicial (working draft) até candidatos a
recomendação. Por isso, falar de XML é um pouco como
tentar trocar um pneu de automóvel com este a 100 km/h.
A única maneira de se ter a informação mais atualizada é
seguir as publicações do W3C, que estão à disposição do
público no site www.w3c.org, ou até mesmo acompanhar
as listas de discussão dos grupos de trabalho.
Status do documento
Significado
Recomendação
É um trabalho que representa o consenso
dentro da W3C e que tem o “selo de
aprovação” do Diretor. As idéias e
tecnologias descritas em uma
recomendação são apropriadas para
ampla divulgação.
Candidato à recomendação É um trabalho que recebeu significativa
revisão da comunidade técnica. Significa
que grupos de trabalho e empresas
interessadas podem iniciar a construção
de programas e dar retorno técnico.
Documento de trabalho É um texto que foi submetido ao W3C por
seus membros e outras partes
interessadas. Esses documentos podem
ser substituídos por outros a qualquer
momento. Não é apropriado ter esses
documentos como referência.
Doc. de trabalho em última chamada
Um documento de trabalho pronto para
revisão final pelos grupos de trabalho,
comumadatadeterminadaparaoretorno
de comentários e alterações.
Doc. de trabalho em desenvolvimento
Documento de trabalho no processo de
ser escrito e revisto pelos grupos de
trabalho.
Nota
Umanotarepresentaoreconhecimentopelo
W3Cdasubmissãodeumaidéiaouproposta.
Não há qualquer requisito de que os grupos
detrabalhoaelassedediquemamenosque
haja interesse suficiente.
O texto da Recomendação XML pode ser encontrado em
http://www.w3.org/TR/REC-xml.
9
XML
Outras tecnologias XML
XML é o que se chama de tecnologia de infra-estrutura.
Sobre a estrutura simples e bem-formada de XML outras
aplicações são construídas. O desenvolvimento em XML
consiste na criação de vocabulários que serão processados
por programas. Apesar de HTML não seguir totalmente
as regras de XML, podemos usá-lo como exemplo. O
vocabulário consiste das tags, como BODY, HTML, P,
A, etc., e a aplicação é simplesmente o browser. No caso
de XML, foram criados vocabulários para aplicações
como WAP, financeiras, tratamento de banco de dados.
Além disso, outros padrões foram criados usando-se
XML como linguagem de descrição, e também regras
para estender e tornar XML mais completa. Tais padrões
incluem Namespaces (para identificar elementos de forma
única), DOM (um modelo de programação para tratamento
de documentos XML), Schemas (uma espécie de DTD
usando sintaxe XML).
A seguir, relacionamos alguns desses padrões.
Namespaces in XML
Adendo a XML 1.0 que especifica como qualificar nomes
de elementos e atributos com identificadores de espaços
de nomes únicos.
Endereço:
Status:
http://www.w3.org/TR/REC-xml-names
Recomendação
Document Object Model (DOM) Level 2
Conjunto de interfaces de programação abstratas para
percorrer, manipular e criar documentos XML.
Endereço:
Status:
http://www.w3.org/TR/DOM-Level-2
Candidato a Recomendação
XML Schema Part 1: Structures
Uma linguagem baseada em XML para descrever
elementos, atributos e notações em termos de tipos
hierárquicos.
Endereço:
Status:
http://www.w3.org/TR/xmlschema-1
Documento de trabalho em última chamada
XML Schema Part 2: Datatypes
Um conjunto de tipos de dados predefinidos e uma
linguagem baseada em XML para definir tipos de dados
gerados pelo usuário.
Endereço:
Status:
10
http://www.w3.org/TR/xmlschema-2
Documento de trabalho em última chamada
XML
XML Information Set
Descrição de um documento XML abstrato, sem
preocupação com sintaxe.
Endereço:
Status:
http://www.w3.org/TR/xml-infoset
Documento de trabalho em última chamada (working
draft)
XML Base (XBase)
Adendo a XML 1.0 que especifica como determinar qual
URI se utilizar quando se tem várias referências URI
relativas.
Endereço:
Status:
http://www.w3.org/TR/xmlbase
Documento de trabalho em última chamada (working
draft)
XML Inclusions (XInclude)
Adendo a XML 1.0 que provê uma alternativa a DTDs
para acessar entidades externas.
Endereço:
Status:
http://www.w3.org/TR/xinclude
Documento de trabalho em última chamada
XML Path Language (XPath) Version 1.0
Uma linguagem para selecionar um conjunto de nós em
um documento XML.
Endereço:
Status:
http://www.w3.org/TR/xpath
Recomendação
XML Pointer Language
Uma linguagem que usa expressões XPath como
identificadores URI, para permitir a referência de
elementos em documentos externos.
Endereço:
Status:
http://www.w3.org/TR/xptr
Documento de trabalho em última chamada
XML Linking Language
Uma linguagem para representar ligações entre
documentos XML.
Endereço:
Status:
http://www.w3.org/TR/xpath
Documento de trabalho em desenvolvimento
11
XML
Conceitos básicos de documento XML
XML é uma linguagem usada para descrever e manipular
documentos estruturados. A manipulação de documentos
XML é feita por meio desta estrutura. Um documento
XML é estruturado em forma de árvore. Possui sempre
um elemento-raiz, de onde outros elementos vão se
ramificar. Essa estrutura em árvore estabelece como
documentos XML vão ser definidos e como vão ser
tratados. O tratamento envolve principalmente encontrar
um determinado elemento, ou grupo de elementos para
serem processados.
Exemplo
<?xml version=”1.0"?>
<Capitulo>
<Titulo>
Capitulo Um
</Titulo>
<Tabela>
<Titulo>
Tabela Um
</Titulo>
</Tabela>
<Secao><Titulo>Secao Um</Secao></Titulo>
<Tabela><Titulo>Tabela Dois</Titulo></Tabela>
</Secao>
</Capitulo>
12
XML
Hierarquia e seqüência
Em XML, duas relações entre os elementos são
importantes: hierarquia e seqüência.
Hierarquia
Hierarquia estabelece relações pai/filho e ancestral/
descendente. Por exemplo, no trecho XML anterior,
“Capitulo” é o elemento-raiz. Se quisermos determinar
quais os “Titulo” que são filhos de “Capitulo”, veremos
que somente “Capitulo Um” é filho. Por outro lado, se
quisermos determinar quais os “Titulos” que são
descendentes de “Capitulo”, então acharíamos “Capitulo
Um”, “Tabela Um”, “Secao Um” e “Tabela Dois”.
Seqüência
A seqüência em que as informações aparecem também é
importante, especialmente em documentos que
estabelecem uma narrativa. Por exemplo:
<Instrucoes>
<Titulo> Lavar os cabelos </ Titulo >
<Sequencia>
<Passo> Molhar os cabelos </Passo>
<Passo> Fazer espuma </Passo>
<Passo> Enxaguar </Passo>
<Passo> Repetir </Passo>
</Sequencia >
</Instrucoes >
Dados e Markup
Um documento XML consiste de uma combinação de
dados caracteres e tags (markup). As tags podem ser
caracteres de início de tag, fim de tag, elementos vazios,
referências a entidades, referências a caracteres,
comentários, delimitadores de seções CDATA (valores a
serem desconsiderados quanto a sintaxe XML), declaração
de tipo de documento, instruções de processamento,
declarações XML, declarações textuais e quaisquer
espaços em branco que estejam no nível mais alto do
documento, ou seja, fora do elemento raiz e fora de
qualquer outra tag. Em outras palavras, tudo o que não é
markup constitui dados textuais do documento.
13
XML
No trecho a seguir, as palavras em negrito são markups
enquanto que as palavras em sublinhado são dados textuais.
<?xml
version=”1.0"?>
xml version
<!DOCTYPE
DOCTYPE PRECOS [
LIVRO
<!ELEMENT
LIVRO+)>
ELEMENT PRECOS (LIVRO
TITULO
DISTRIBUIDOR
<!ELEMENT
TITULO,DISTRIBUIDOR
DISTRIBUIDOR?)>
ELEMENT LIVRO (TITULO
REQUIRED
REQUIRED>
<!ATTLIST
ATTLIST TITULO VALOR CDATA #REQUIRED
PCDATA
<!ELEMENT
PCDATA)>
ELEMENT TITULO (#PCDATA
PCDATA
<!ELEMENT
PCDATA)>
ELEMENT DISTRIBUIDOR (#PCDATA
]>
<PRECOS
PRECOS>
PRECOS
<LIVRO
LIVRO>
LIVRO
<TITULO
VALOR=”120">Manual de Comércio Exterior</
TITULO VALOR
TITULO
TITULO>
DISTRIBUIDOR
<DISTRIBUIDOR
DISTRIBUIDOR>Publicações Internacionais</DISTRIBUIDOR
DISTRIBUIDOR>
DISTRIBUIDOR
</LIVRO
LIVRO>
LIVRO
<LIVRO
LIVRO>
LIVRO
<TITULO
VALOR=”078">Sistemas de Informação
TITULO VALOR
TITULO
Relacionais</TITULO
TITULO>
DISTRIBUIDOR
<DISTRIBUIDOR
DISTRIBUIDOR>Livros Técnicos</DISTRIBUIDOR
DISTRIBUIDOR>
DISTRIBUIDOR
</LIVRO
LIVRO>
LIVRO
</PRECOS
PRECOS>
PRECOS
Conteúdo misto
Os elementos de informação podem representar estruturas
de dados arbitrárias. Eles podem conter valores codificados
como caracteres e, nesse caso, dizemos que são elementos
com apenas texto. Por outro lado, quando um elemento
representa um tipo estruturado, ele tipicamente não contém
dados textuais, e sim um ou mais elementos descendentes.
Esse modelo é conhecido como somente elementos. XML
também permite uma mistura de conteúdos, ou seja,
elementos descendentes com texto. Nesse caso, dizemos
que o documento tem conteúdo misto. Apesar desta
flexibilidade, quando construímos documentos XML para
serem processados por programas, é aconselhável se
evitar o conteúdo misto.
14
XML
O trecho a seguir mostra um exemplo de conteúdo misto
(em negrito).
<Pedidos>
<NroPedido NumPedido=”12345">
<Cliente NumCliente=”543">
<CustName>Industrias ABC</CustName>
<Rua>Avenida Central, 123 </Rua>
<Cidade>Sao Paulo</Cidade>
<Estado>SP</Estado>
<CEP>60609</CEP>
</Cliente>
<DataPedido>981215</DataPedido>
<Linha NroLinha=”1">
<Peca NroPeca=”123">
<Descricao>
<P><B>Alicate:</B><BR />
Aco inox, construido em uma so peca. Garantia de 10
anos.</P>
</Descricao>
<Preco>9.95</Preco>
</Peca>
<Quantidade>10</Quantidade>
</Linha>
<Linha NroLinha=”2">
<Peca NroPeca=”456">
<Descricao>
<P><B>Separador de gizmos:<B><BR />
Aluminio, um ano de garantia.</P>
</Descricao>
<Preco>13.27</Preco>
</Peca>
<Quantidade>5</Quantidade>
</Linha>
</NroPedido>
</Pedidos>
Documentos que não têm conteúdo misto são chamados
normalizados.
15
Download

XML