Extensible Markup Language

Extensible Markup Language, também conhecido por muitos como XML, ainda é uma das formas mais utilizadas para extensibilidade de dados entre plataformas. Mas que linguagem de marcação é essa? Por que se tornou tão famosa em meados da década de 90? Será sua simplicidade? Será sua fácil legibilidade?

Convenhamos que são muitos “por que”, embarque nessa onda, venha conhecer esta maneira de armazenar e trocar informações, conheça as suas vantagens e desvantagens e não perca minha famosa técnica pega casaco, bota casaco e tira casaco :D

Podemos considerar o XML como uma metalinguagem? Sim, pois é uma linguagem para definir linguagens de marcação. Sucessor do SGML, o XML dispõe de mecanismos para estruturarmos documentos, descrevendo através de elementos de marcação (‘<‘ e ‘>’). Sua criação inicial foi em 1990 pelo consórcio W3C, tendo como principal objetivo, de ser uma linguagem de fácil leitura por softwares. Com ele podemos escrever dados estruturados (ou semi-estruturados, como por exemplo, uma pagina HTML) e hierarquicamente para melhor compreensão de fato o seu conteúdo. Desenvolvedores de paginas em HTML talvez estejam mais familiarizados com XML, pois assim como o XML, o HTML também é um derivado do SGML.

Bom, já vou adiantando que a técnica do pega casaco, bota casaco e tira casaco não é famosa, é apenas uma forma de fixar que todo documento XML possui um inicio, meio e fim. Vamos por parte, agora sente-se e leia com calma pequeno gafanhoto.

O XML tem como diferencial a sua sintaxe de fácil compreensão, sendo totalmente extensível. É recomendado, porem não é obrigatório, que todo documento XML contenha apenas um elemento principal, já adianto que, caso você tente carregar um XML com múltiplos elementos principais, em qualquer umas das classes disponíveis para se trabalhar com XML no .NET Framework, uma exceção será disparada. Vejamos abaixo um exemplo de XML no formato correto:

<?xml version="1.0" encoding="utf-8"?>
<Pedidos>
  <Pedido>
    <IdPedido>1</IdPedido>
    <ItensDoPedido>
      <Item>
        <IdItem>557</IdItem>
        <Nome>Geladeira XAVECO</Nome>
        <Preco>1000</Preco>
      </Item>
      <Item>
        <IdItem>558</IdItem>
        <Nome>Cadeira XAMEGO</Nome>
        <Preco>80</Preco>
      </Item>
    </ItensDoPedido>
  </Pedido>
  <Pedido>
    <IdPedido>2</IdPedido>
    <ItensDoPedido>
      <Item>
        <IdItem>559</IdItem>
        <Nome>Celular CADEMEUCHIPPEDROOO</Nome>
        <Preco>500</Preco>
      </Item>
    </ItensDoPedido>
  </Pedido>
</Pedidos>

A primeira linha contida no exemplo acima, é justamente a declaração do documento XML, contendo a versão do documento e o encoding utilizado para codificar os caracteres no XML (). Como podemos ver, temos uma estrutura de dados que indica diversos pedidos, composta de um elemento principal, chamada Pedidos, possuindo elementos adjacentes contendo características dos pedidos, tais como o Pedido, Itens do Pedido e assim por diante.

O XML não limita a sua criação apenas através de elementos, podemos usar também de atributos junto aos elementos XML, indicando informações extremamente próxima o elemento, veja:

<?xml version="1.0" encoding="utf-8"?>
<Pedidos>
  <Pedido IdPedido="1">
    <ItensDoPedido>
      <Item IdItem="557">
        <Nome>Geladeira XAVECO</Nome>
        <Preco>1000</Preco>
      </Item>
      <Item idItem="558">
        <Nome>Cadeira XAMEGO</Nome>
        <Preco>80</Preco>
      </Item>
    </ItensDoPedido>
  </Pedido>
  <Pedido IdPedido="2">
    <ItensDoPedido>
      <Item IdItem="559">
        <Nome>Celular CADEMEUCHIPPEDROOO</Nome>
        <Preco>500</Preco>
      </Item>
    </ItensDoPedido>
  </Pedido>
</Pedidos>

Apesar de não existir limitações quanto ao seu conteúdo, convenhamos que um atributo até suportaria uma estrutura XML, contendo elementos filhos, porem a sua legibilidade seria comprometida, alem do mais, desenvolvedores no modo geral costumam dizer que programaticamente um atributo no XML torna a manipulação via código mais difícil, eu pelo menos não vejo problema algum e pretendo demonstrar futuramente como isso pode ser contornado facilmente no .NET Framework.

A grande vantagem do XML é justamente a sua fácil compreensão (tantos para humanos, quanto computadores), um padrão aberto, não existindo a necessidade pagar, para utiliza-lo, temos como grande aliado o consorcio W3C, possuindo uma vasta documentação sobre o mesmo. Podemos editar um arquivo XML com qualquer editor de texto, desde o Bloco de Notas, até ferramentas própria para se trabalhar com XML, totalmente gratuita, tais como o notepad++, ou IDEs para desenvolvimento de software (Visual Studio Express, Eclipse e etc).

A pior desvantagem do XML, podemos dizer que é justamente quanto ao seu tamanho, sabemos que não existe limites quanto a criação de elementos, porem o uso excessivo de caracteres para se criar uma estrutura XML, torna o documento pesado para se trafegar via internet, onde cada vez mais, precisamos efetuar menas requisições junto ao servidor, para termos um carregamento de paginas cada vez mais rápida, trabalhar com XML e Javascript alguns costumam dizer que é um parto, em comparação com outros formatos abertos para troca de dados, tais como JSON e YAML. Podemos afirmar que o XML é um forte aliado, quando trabalhado no lado do servidor, até mesmo na integração de parceiros, através de SOAP.

A sua compressão fica totalmente comprometida quando um documento não esta identado adequadamente, veja:

<?xml version="1.0" encoding="utf-8"?>
<Pedidos><Pedido><IdPedido>1</IdPedido><ItensDoPedido><Item><IdItem>557</IdItem><Nome>Geladeira XAVECO</Nome>
<Preco>1000</Preco></Item><Item><IdItem>558</IdItem><Nome>Cadeira XAMEGO</Nome><Preco>80</Preco></Item>
</ItensDoPedido></Pedido><Pedido><IdPedido>2</IdPedido><ItensDoPedido><Item><IdItem>559</IdItem>
<Nome>Celular CADEMEUCHIPPEDROOO</Nome><Preco>500</Preco></Item></ItensDoPedido></Pedido></Pedidos>

Para não perdermos o controle sobre oque esta sendo escrito em um documento XML, podemos usar de comentários, para aumentar ainda mais sua legibilidade:

<?xml version="1.0" encoding="utf-8"?>
<Pedidos>
  <!--Este Elemento representara a estrutura de um 'Pedido' realizado pelo cliente  -->
  <Pedido IdPedido="1">
    <ItensDoPedido>
      <Item IdItem="557">
        <Nome>Geladeira XAVECO</Nome>
        <Preco>1000</Preco>
      </Item>
      <Item idItem="558">
        <Nome>Cadeiro XAMEGO</Nome>
        <Preco>80</Preco>
      </Item>
    </ItensDoPedido>
  </Pedido>
  <!--Este Elemento representara a estrutura de um 'Pedido' realizado pelo cliente  -->
  <Pedido IdPedido="2">
    <ItensDoPedido>
      <Item IdItem="559">
        <Nome>Celular CADEMEUCHIPPEDROOO</Nome>
        <Preco>500</Preco>
      </Item>
    </ItensDoPedido>
  </Pedido>
</Pedidos>

O XML não se limita apenas ao que foi dito acima, temos muitos que aprender ainda e conto com você para acompanhar as próximas postagem sobre XML, falaremos sobre  Namespaces implicitamente e explicitamente, os tão temidos Encodings, o uso de conteúdo com CDATA, XPath, XQuery e etc.

Bom pessoal até a próxima, espero que tenham gostado.

2 comentários em “Extensible Markup Language”

Opine, discuta, participe ou simplesmente deixe um comentário