Vamos recapitular as regras da sintaxe XML:
- Documentos devem ter um cabeçalho informando a versão e a codificação de caracteres;
- Só pode haver um elemento raiz;
- Deve-se ter cuidado com caracteres reservados (que podem ser representados por entidades ou inseridos em elementos CDATA);
- Elementos devem ser devidamente aninhados;
- Elementos podem ser vazios;
- A linguagem é sensível ao caso (difere caixa alta e caixa baixa);
- Atributos devem ter seus valores sempre declarados (e entre aspas) e não podem se repetir em um mesmo elemento;
- Comentários podem ser inseridos no documento.
Ao obedecer essas regras na criação de um documento você garante que ele tem uma formação correta. No entanto isso não significa que o documento é válido. Isso acontece porque formação e validade são características diferentes para a linguagem XML: enquanto a formação tem a ver com a sintaxe da linguagem, a validade tem a ver com a semântica dos documentos.
Essa distinção entre formação e validade é importante porque as regras da sintaxe XML não garantem que o documento obedecerá um padrão.
Por exemplo, considere um documento "artigo", cujo elemento raiz deve ser <artigo> e ele deve conter outros elementos como <titulo>, <autor>, <dataPublicacao> e <conteudo>. O que impede que eu crie este documento, mas omita alguma informação importante, como o título do artigo? Não há nenhuma regra na sintaxe XML que impeça isso de acontecer.
É possível omitir informações necessárias ou então mudar o nome dos elementos, tudo isso obedecendo a sintaxe XML. No entanto, se isso for feito, aplicações que fariam uso deste documento podem apresentar erros ou um comportamento inesperado, pois elas não foram preparadas para ler um documento fora do padrão.
Para contornar este problema, é preciso validar os documentos. A validação de documentos é feita sobre um padrão preestabelecido. Este padrão poderá ditar quais elementos podem ser criados dentro do documento e como eles podem ser aninhados. Também poderá especificar quais atributos cada elemento pode ter, e pode até mesmo limitar que valores esses atributos podem receber. Em outras palavras, o padrão impõe regras ao documento que, se violadas, invalidam este documento.
Existem múltiplos métodos para fazer essa validação, mas dois deles merecem uma atenção especial por serem os mais utilizados. O primeiro deles é o Document Type Definition (DTD), que é o padrão da linguagem. É um formato simples e direto, que atende a maioria dos casos. Mas há também o XML Schema, que é uma alternativa ao DTD, em XML.
O XML Schema é mais poderoso que o DTD, no sentido de permitir um maior detalhamento do padrão de documento. Ele permite que sejam impostas restrições adicionais, como por exemplo o tipo de dados que um elemento pode conter (números, textos, datas, entre outros).
A escolha entre DTD e XML Schema depende de que restrições são necessárias. Para alguns casos, a própria validação pode não ser necessária. O ponto que eu queria colocar aqui é que a padronização dá forma aos documentos, garantindo que se mantenha a interoperabilidade dos sistemas. Ainda assim os padrões podem evoluir para novas especificações, de forma que a inovação não é sacrificada.
A sintaxe destas linguagens eu não vou poder apresentar neste artigo, pois ele ficaria muito extenso, mas planejo apresentá-las em um artigo futuro. Caso você queira ver mais sobre esse assunto, consulte as referências no fim deste artigo.