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.
Relacionado: Desenvolvendo aplicações utilizando XML
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).
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.