Introdução ao XML

Proposta há mais de 10 anos, a linguagem XML tem sido adotada como padrão para representação de dados e troca de informações nas mais diferentes áreas. Esta situação não ocorre por acaso, mas sim porque a XML é uma linguagem com características muito atraentes para os desenvolvedores. Destacaremos algumas dessas características fazendo uso de um exemplo prático e simples.

Criando um XML

Considere um web site sobre filmes, onde o usuário pode obter informações como o resumo, ano de produção, elenco e gênero dos filmes. Se o desenvolvedor do site optar por armazenar os dados do site em um banco de dados relacional, precisará espalhar as informações por diversas tabelas, como mostra o exemplo abaixo.

Tabela 1: FILME

id_filme desc_titulo num_ano desc_resumo
1 O XML veste prada 2012 O filme mostra a elegância da XML na representação de dados estruturados e semi-estruturados.

Tabela 2: GENERO

id_genero desc_genero
G1 Aventura
G2 Documentário

Tabela 3: FILME_GENERO

id_filme id_genero
1 G1
1 G2

Tabela 4: ATOR

id_ator nom_ator
A1 Mark Uplanguage
A2 Mary Well-Formed
A3 Sedna D. Atabase

Tabela 5: FILME_ELENCO

id_fimle id_ator
1 A
1 A2
1 A3

Caso o desenvolvedor decida estruturar o banco de dados do site no formato XML, o mesmo exemplo pode ser representado da forma mostrada na Listagem 1.

Listagem 1: Estrutura dos dados dos filmes em XML

<?xml version="1.0">
<filmes>
    <filme id="1">
        <titulo>O XML veste prada</titulo>
        <resumo>O filme mostra a elegância da XML na representação de dados estruturados e semi estruturados.</resumo>
        <genero>Aventura</genero>
        <genero>Documentário</genero>
        <elenco>
            <ator>Mark UPlanguage</ator>
            <ator>Mary well-Formed</ator>
            <ator>Sedna D. Atabase</ator>
        </elenco>
    </filme>
</filmes>

Embora simples, o exemplo é capaz de revelar algumas das características interessantes da XML:

  • A linguagem é bastante flexível para representar objetos com características complexas. Ao contrário do que ocorre no modelo relacional, através da XML é possível representar com extrema facilidade atributos multivalorados (como “genero”), tipos compostos (como “elenco”) e relações de hierarquia, entre outras coisas. Por esta razão é muito mais fácil mapear um objeto para XML do que fazer o mapeamento para tabelas relacionais.
  • XML representa dados de uma forma muito mais natural para seres-humanos, quando comparamos com outros formatos (ex: arquivo “.csv”, arquivo JSON, tabelas relacionais).
  • Os bancos de dados XML possuem natureza auto-descritiva. Ou seja: as próprias tags já são capazes de explicar o significado do conteúdo dos dados que representam. Normalmente, basta “bater o olho” em um arquivo XML para entender o seu significado.
  • As linguagens de consulta a dados XML - XPath e XQuery - são bem mais simples do que a SQL! Apenas para dar um exemplo, considere a consulta SQL mostrada na Listagem 2, que recupera os nomes dos atores do filme de código=1, considerando o banco de dados relacional das tabelas exibidas anteriormente. Compare com a consulta XPath da Listagem 3, que recupera a mesma informação a partir da base de dados XML. O que lhe parece?

Listagem 2: Consulta SQL para recuperar nomes dos atores no banco relacional

SELECT a.nom_ator FROM
filme_elenco e INNER JOIN ator a ON (e.id_ator = a.id_ator)
WHERE e.id_filme = 1

Listagem 3: Consulta XPath para recuperar nomes dos atores no banco XML

//filme[@id="1"]//ator

XML também possui uma outra característica muito importante - não diretamente relacionada ao exemplo do banco de dados de filmes - mas que não pode ser esquecida de ser citada:

  • XML é independente de plataforma. Isso quer dizer que toda plataforma de programação é capaz de trabalhar com o formato XML: Java, PHP, .NET, C++, Python, Ruby, JavaScript, Perl, etc. Em todas essas linguagens, você trabalhará acessará os dados XML de forma padrão, utilizando as API’s SAX e DOM.

XML possui desvantagens? Claro que sim!!! Duas delas são citadas abaixo:

  • As tags XML fazem o tamanho do banco de dados aumentar muito. Para cada linha, é preciso armazenar as informações e mais as tags.
  • As linguagens padrão para consulta XML - XPath e XQuery - são ótimas para recuperar dados, mas ainda não são tão eficientes como a SQL para a atualização de informações (INSERT, UPDATE, DELETE). Na verdade a XPath não suporta atualizações, pois não foi criada com esse propósito. Já a XQuery passou a suportar atualizações apenas recentemente (desde 2011).

Assim finalizamos este artigo. Em outros artigos, abordaremos temas como: criação de documentos XML bem-formados, criação de documentos XML válidos, “dicas e macetes” para o acesso a arquivos XML usando a linguagem Java. Até a próxima!

Links Úteis

Saiba mais sobre Frontend ;)

  • Programando em HTML5:
    Ao ser anunciada a versão 5 do padrão HTML, inicialmente parte do mercado não recebeu com grande entusiasmo, acostumado a receber poucos recursos novos de uma versão para outra. A verdade é que, desde que a versão 4.0 foi lançada em 1997, poucos avanços aconteceram nos dez anos seguintes.
  • As Novidades do HTML5:
    Neste artigo apresento as principais novidades da nova versão da linguagem de marcação de hipertexto HTML, que já está disponível nos principais navegadores de internet com suporte quase que total.
  • O que é o HTML5:
    Veja neste artigo um pouco da história do HTML, o que é o HTML5 e suas principais mudanças em relação às versões anteriores.