Um documento XML é considerado bem-formado quando respeita o conjunto de regras de sintaxe estabelecidas na especificação da linguagem. É importante conhecer essas regras, pois a maioria das bibliotecas utilizadas para consulta e atualização de documentos XML requer a utilização de documentos bem-formados.
No site da W3C (órgão responsável pela definição da linguagem XML e pela padronização de outras iniciativas ligadas à Web), existe um documento que contendo toda essa especificação. Porém, como quase sempre acontece com as especificações da W3C, o documento é extremamente grande e de leitura bastante “pesada”. Para facilitar a nossa vida, a seguir apresentamos uma lista contendo as mais importantes regras de sintaxe da XML:
- Um documento XML deve possuir raiz única.
- Todas as tags devem ser fechadas (elementos devem possuir tag inicial e tag final)
- Os nomes de elementos (tags) e atributos são sensíveis à caracteres maiúsculos e minúsculos.
- Os elementos devem ser bem-aninhados (tags fecham em ordem oposta a que foram abertas).
- Atributos não se repetem em um mesmo elemento.
- Todo atributo deve possuir algum valor e este valor deve ser especificado entre aspas.
- Alguns caracteres especiais, como “ < ”, “ & ” e “ > ” devem ser especificados com o uso de entidades pré-definidas (no caso & lt; , & amp; e & gt; , respectivamente).
- Nomes de tags não podem conter espaços em branco nem os caracteres !"#$%&'()*+,/;<=>?@[\]^`{|}~. Além disso, não podem começar com um número, “ . ” (ponto) ou “ - " (traço).
Exemplos
A seguir temos exemplos práticos envolvendo as regras recém-apresentadas. Para cada regra, primeiro apresentamos um documento contendo um erro de sintaxe e depois a correção do mesmo.
Regra 1: Um Documento XML deve possuir raiz única
<?xml version="1.0"?>
<pais>
<nome>Brasil</nome>
<moeda>Real</moeda>
</pais>
<pais>
<nome>Argentina</nome>
<moeda>Peso argentino</moeda>
</pais>
<?xml version="1.0"?>
<nacoes>
<pais>
<nome>Brasil</nome>
<moeda>Real</moeda>
</pais>
<pais>
<nome>Argentina</nome>
<moeda>Peso argentino</moeda>
</pais>
</nacoes>
Regra 2: Todas as tags devem ser fechadas
<?xml version="1.0"?>
<pais>
<nome>Brasil
<populacao>196.655.014
</pais>
<?xml version="1.0"?>
<pais>
<nome>Brasil</nome>
<populacao>196.655.014</populacao>
</pais>
Regra 3: Nomes de elementos e atributos são sensíveis à caracteres maiúsculos e minúsculos
<?xml version="1.0"?>
<pais>
<nome>Uruguai</Nome>
</pais>
<?xml version="1.0"?>
<pais>
<nome>Uruguai</nome>
</pais>
Regra 4: Os elementos devem ser bem-aninhados (tags fecham em ordem oposta a que foram abertas)
<?xml version="1.0"?>
<informacao>
<texto>A capital do <pais>Chile eh <capital>Santiago</texto></capital></pais>
</informacao>
<?xml version="1.0"?>
<informacao>
<texto>A capital do <pais>Chile</pais> eh <capital>Santiago</capital></texto>
</informacao>
Regra 5: Atributos não se repetem em um mesmo elemento
<?xml version="1.0"?>
<pais cidade="Rio de Janeiro" cidade="Brasília">
Brasil
</pais>
<?xml version="1.0"?>
<pais cidade="Rio de Janeiro" capital="Brasília">
Brasil
</pais>
Regra 6: Todo atributo deve possuir algum valor e este deve ser especificado entre aspas
<?xml version="1.0"?>
<pais mercosul>
Brasil
</pais>
<?xml version="1.0"?>
<pais mercosul="SIM">
Brasil
</pais>
Regra 7: Alguns caracteres, como “ < ” e “ & ” devem ser especificados com o uso de entidades pré-definidas (no caso, & lt; e & amp;);
<?xml version="1.0"?>
<regra_7>
Brasil & Chile
</regra_7>
<?xml version="1.0"?>
<regra_7>
Brasil & amp; Chile
</regra_7>
Regra 8: Nomes de tags não podem conter espaços em branco nem os caracteres !"#$%&'()*+,/;<=>?@[\]^`{|}~. Além disso, não podem começar com um número, “ . ” (ponto) ou “ - " (traço).
<?xml version="1.0"?>
<1_pais>
Brasil
<1_pais>
<?xml version="1.0"?>
<pais_1>
Brasil
</pais_1>
Assim finalizamos o artigo. Não apresentamos todas as regras de sintaxe da XML, porém mostramos as mais importantes, ou seja, aquelas que precisam ser conhecidas por qualquer desenvolvedor!