XML: O imposto sobre o ângulo

Para onde quer que eu olhe, os programadores e as ferramentas de programação parecem ter padronizado o XML. Arquivos de configuração, scripts de compilação, armazenamento local de dados, comentários de código, arquivos de projeto, o que o senhor quiser. Se estiver armazenado em um arquivo de texto e precisar ser recuperado e analisado, provavelmente é XML. Percebo que temos que usar o alguma coisa para representar dados razoavelmente legíveis por humanos armazenados em um arquivo de texto, mas o XML às vezes parece muito com o uso de uma enorme marreta para pregar pregos domésticos comuns.

Sou profundamente ambivalente em relação ao XML. Lembro-me desta citação de Winston Churchill:

Já foi dito que a democracia é a pior forma de governo, com exceção de todas as outras que já foram experimentadas.

XML é como a democracia. Às vezes até funciona. Por outro lado, isso também significa que acabamos com coisas como esta:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Quanto de fato o informações são comunicadas aqui? Muito pouco, e está enterrado em uma quantidade impressionante de ruído. Não pretendo implicar com o senhor. SOAP. Essa crítica geral se aplica ao XML, seja qual for sua forma. Passo uma quantidade desproporcional do meu tempo percorrendo um mar interminável de colchetes angulares e tags verborrágicas, buscando desesperadamente o mais vago indício de informações reais. Parece que errado.

O senhor poderia argumentar, como Derek Denny-Brown, que o XML tem sido mal apropriado e mal aplicado.

Acho muito interessante que o XML tenha se tornado tão popular para coisas como SOAP. O XML não foi projetado com os cenários SOAP em mente. Outros exemplos de cenários populares que se desviam dos objetivos originais do XML são arquivos de configuração, bancos de dados rápidos e sujos e [RSS]. Chamarei esses cenários de “dados”, em oposição aos cenários de “documentos” para os quais a XML foi originalmente planejada. Na verdade, acho que é seguro dizer que há mais uso de XML para cenários de “dados” do que para cenários de “documentos” atualmente.

Dada a sua prevalência, o senhor pode decidir que XML é tecnologicamente terrível, mas o senhor precisa usá-lo mesmo assim. Parece mesmo que, para qualquer representação de dados em XML, havia uma opção melhor e mais simples em algum lugar. Mas ela não foi buscada, porque, bem, o XML pode representar qualquer coisa. Não é mesmo?

Considere o seguinte fragmento de XML:

<memo date="2008-02-14">
<from>
<name>The Whole World</name><email>us@world.org</email>
</from>
<to>
<name>Dawg</name><email>dawg158@aol.com</email>
</to>
<message>
Dear sir, you won the internet. http://is.gd/fh0
</message>
</memo>

Como o XML pretende representar tudoo senhor não tem nada de especial para representar.

Essas informações não seriam mais fáceis de ler e entender – e apenas nominalmente mais difíceis de analisar – quando expressas em seu formato nativo?

Date: Thu, 14 Feb 2008 16:55:03 +0800 (PST)
From: The Whole World <us@world.org>
To: Dawg <dawg158@aol.com>
Dear sir, you won the internet. http://is.gd/fh0

O senhor pode argumentar que XML nunca foi planejado para ser legível por humanosO senhor acha que a XML deve ser gerada automaticamente por meio de ferramentas amigáveis nos bastidores, sem nunca ser exposta a um único olho humano vivo. É uma visão espetacularmente grandiosa. Espero que um dia nossos bisnetos possam viver em um mundo como esse. Até que esse dia glorioso chegue, eu certamente gostaria de ler arquivos de texto que não me façam sofrer com a Imposto sobre cantoneiras XML.

Então, quais são as alternativas ao XML? Uma opção popular é o YAML. Eu poderia explicar, mas é mais fácil mostrar ao senhor. O que, na minha opinião, é exatamente o ponto.

<club>
<players>
<player id="kramnik"
name="Vladimir Kramnik"
rating="2700"
status="GM" />
<player id="fritz"
name="Deep Fritz"
rating="2700"
status="Computer" />
<player id="mertz"
name="David Mertz"
rating="1400"
status="Amateur" />
</players>
<matches>
<match>
<Date>2002-10-04</Date>
<White refid="fritz" />
<Black refid="kramnik" />
<Result>Draw</Result>
</match>
<match>
<Date>2002-10-06</Date>
<White refid="kramnik" />
<Black refid="fritz" />
<Result>White</Result>
</match>
</matches>
</club>
players:
Vladimir Kramnik: &kramnik
rating: 2700
status: GM
Deep Fritz: &fritz
rating: 2700
status: Computer
David Mertz: &mertz
rating: 1400
status: Amateur
matches:
-
Date: 2002-10-04
White: *fritz
Black: *kramnik
Result: Draw
-
Date: 2002-10-06
White: *kramnik
Black: *fritz
Result: White

Há também a notação JSON, que alguns chamam de a nova alternativa sem gordura ao XML, embora isso ainda seja muito debatido.

O senhor poderia fazer pior do que XML. É uma opção razoável e, se o senhor for usar XML, pelo menos aprenda a usá-lo corretamente. Mas considere:

  1. O XML deve ser o padrão escolha?
  2. O XML é a coisa mais simples possível que pode funcionar para o uso pretendido pelo senhor?
  3. O senhor o senhor sabe quais são as alternativas de XML??
  4. Não seria bom ter arquivos de dados e de configuração facilmente legíveis e compreensíveis, sem todos aqueles colchetes angulares afiados e pontiagudos? espetando o senhor diretamente nos seus sempre adoráveis globos oculares?

Não acho necessariamente que o senhor XML é uma porcaria, mas a aplicação irracional e generalizada de XML como uma cobertura de sobremesa e uma cera de assoalho certamente tem. Como todas as ferramentas, é uma questão de como o senhor as utiliza. Pense duas vezes antes de submeter o senhor, seus colegas programadores e seus usuários a o imposto sobre as cantoneiras XML. <CleverEndQuote>Novamente.</CleverEndQuote>