Oi! Seja bem-vindo!

Hoje vou te explicar de forma prática e direta o que é XML (Extensible Markap Language), porque foi inventado esse padrão e como trabalhar com ele. Criei esse artigo ao perceber que as definições que existem por ai são difíceis e confusas, gerando mitos de dificuldade em torno de algo simples e incrivelmente útil:

O que são dados estruturados?

Desde os primórdios da tecnologia, é comum a troca de informações via arquivos texto, desses que podemos abrir com o bloco de notas.

Arquivos texto, por padrão, não possuem uma metodologia para armazenamento de informações, mas nós, como seres humanos, conseguimos rapidamente identificar e extrair as informações relevantes, como no exemplo abaixo:

arquivo com informações não estruturadas

Isso é fácil para nós, porém sistemas, principalmente os de antigamente, não tem essa habilidade. Isso demandou a padronização da forma como transmitimos dados de um sistema para outro. No exemplo abaixo, temos a mesma informação do arquivo acima, porém de forma estruturada em “texto posicional”:

arquivo com informações estruturadas em texto posicional

O problema desse modelo ocorre quando precisamos adicionar informações que ultrapassam a definição de posições originais, por exemplo um nome com mais de 25 caracteres. Resolver esse problema dentro do padrão “texto posicional” demanda enviar dados incompletos (ex: nomes cortados) ou então reprogramar os sistemas para que as posições de geração e leitura sejam modificadas (ex: nome de 0 a 65 ao invés de 0a 25).

Esses, e outros problemas, demandaram a criação de novos modelos de dados estruturados.

Evolução dos dados estruturados

O padrão texto posicional, que vimos no capitulo acima, está presente desde os primórdios da TI, pois os primeiros computadores empresariais, os mainframes, trabalhavam dessa forma.

O problema desse modelo é que ficar fazendo mudanças no código a cada vez que dados são modificados dá muito trabalho, especialmente nos dias de hoje, onde tudo muda constantemente.

Dessa necessidade, surgiram novos padrões de armazenamento, um deles foi o “texto delimitado”, que consiste em separar as informações usando um caractere específico, por exemplo, o ponto e vírgula.

Outra inovação, foi a inclusão de cabeçalhos de arquivo para facilitar o entendimento da informação:

arquivo com informações estruturadas em texto delimitado

Apesar da melhoria, o padrão acima logo apresentou limitações. Embora resolva o problema do tamanho dos dados, em um mundo moderno onde constantemente existem mais e mais informações, a necessidade de reprogramar os sistemas para incluir novas “colunas de dados” rapidamente passou a incomodar.

Para resolver essa dificuldade, foram criadas duas alternativas:

1) Arquivos texto com repetição: Quando alguém tiver 2 telefones, por exemplo, ao invés de incluir uma nova coluna de telefone, nós duplicamos a linha de dados, e atualizamos a linha abaixo com a informação adicional:

arquivo texto com informações estruturadas em texto delimitado com repetição

2) Arquivos texto multi-delimitados: Nessa estratégia, a separação de informações ocorre através de um “sub-delimitador”, como no exemplo abaixo:

arquivo com informações estruturadas em texto multi delimitado

Embora esses padrões estejam em uso até hoje, o volume e a variedade de informações acabam complicando o gerenciamento e a visualização dos dados, o que demandou um novo padrão de armazenamento.

O padrão XML

Premissas do padrão XML

Nasceu então o formato de armazenamento XML, com duas premissas importantes:

1) As informações precisam ser facilmente legíveis para sistemas e pessoas.

2) Repetições de dados e inclusão de novos campos devem ocorrer sem mudanças estruturais no arquivo.

 

Para atender a esses requisitos, existem várias regras, sendo principais:

1) Cada informação deve ser incluída em um container, chamado ELEMENTO, que identifique claramente o dado armazenado. Os elementos também são conhecidos por NÓs ou TAGs XML.

2) Os dados devem estar dispostos em uma hierarquia, onde as informações correlacionadas (IRMÃS) fiquem abaixo de um ELEMENTO PAI. Essa regra precisa ser aplicada até que reste apenas um ELEMENTO PAI por arquivo, o qual é chamado de ELEMENTO ROOT.

3) O Arquivo pode conter, opcionalmente, um cabeçalho, incluindo a versão da linguagem XML, e o tipo de caracteres que existem dentro do arquivo XML.

Exemplo de arquivo XML

<!– Arquivo com dados de pessoas –>
<pessoas>
<pessoa cpf="12345678901">
<nome>Osmar Contato</nome>
<telefones>
<telefone>04599996666</telefone>
<telefone>01199990003</telefone>
<telefone>05199980000</telefone>
</telefones>
<emails/>
</pessoa>
<pessoa cpf="12345678902">
<nome>Epaminondas Souza</nome>
<telefones>
<telefone>07799880011</telefone>
</telefones>
<emails>
<email>[email protected]</email>
<email>[email protected]</email>
</emails>
</pessoa>
<pessoa cpf="12345678903">
<nome>Rolando da Rocha</nome>
<telefones>
<telefone>09299970001</telefone>
</telefones>
<emails>
<email>[email protected]</email>
</emails>
</pessoa>
</pessoas>

Para você saber mais detalhes sobre o que são atributos, elementos e comentários, veja o vídeo desse artigo.

XML vs. HTML

Algumas pessoas perguntam quais são as diferenças e semelhanças entre XML e HTML, até porque os nomes são parecidos.

É o seguinte: São semelhantes no sentido de que ambas são “mark-up languages”:
– XML: Extensible Markup Language
– HTML: Hypertext Markup Language

Ser uma linguagem mark-up, significa que as informações estão delimitadas em TAGs, por exemplo:

é uma TAG HTML para novo parágrafo.

A diferença dessas linguagens está em seu foco de atuação.
O XML serve para armazenar dados, o HTML para demonstrar dados.

CONCLUSÃO

Respondendo a pergunta inicial: O que é XML? É uma linguagem para armazenamento de informações de forma estruturada, e facilmente legível para pessoas e sistemas.

O padrão XML não passa de texto, porém com regras de preenchimento de modo a facilitar a leitura e a flexibilidade de armazenamento.

Abraço do seu amigo Josué 🙂

2 respostas

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *