XML canónico
# XML canónico

Un XML canónico hace referencia a la forma canónica de un documento XML, con la intención de permitir comparaciones relativamente simples de pares de documentos XML; para ello, el proceso de transformación elimina las diferencias que no afectan al contenido. Por ejemplo, XML permite la inserción de espacios en blanco en varios puntos dentro de las etiquetas de apertura, y permite especificar los atributos en cualquier orden. Esas diferencias raras veces poseen algún significado semántico, por lo que generalmente pueden considerarse equivalentes:

En la conversión de un documento XML cualquiera a uno canónico, los atributos son ordenados mediante ciertas reglas (alfabéticamente), con los espacios de nombre añadidos, de modo que la segunda forma resulta en la primera.

El estándar especifica otros detalles:

* se usa la codificación UTF-8
* el final de una línea se representa usando el carácter 0x0A
* se normalizan los espacios en blanco
* las referencias a entidades y a caracteres no especiales son expandidas
* las secciones CDATA son reemplazadas por el contenido
* los elementos vacíos son codificados como pares de etiquetas de inicio/fin
* los atributos predeterminados son explícitos
* las declaraciones redundantes de espacios de nombres son eliminadas

De acuerdo al W3C, si dos documentos XML tienen la misma forma canónica, entonces los dos documentos son equivalentes de hecho dentro del contexto de la aplicación, excepto en unos cuantos casos especiales.

Sin embargo, en casos especiales los usuarios pueden preocuparse porque el documento tenga una semántica especial, más allá del que sugiera un XML canónico. Por ejemplo, un sistema de esteganografía puede almacenar información oculta en un documento intercambiando espacios, entrecomillado y orden de atributos, el uso de referencias de caracteres numéricas decimales o hexadecimales, y así; de modo que la conversión a un XML canónico eliminaría esa información. Por otro lado, los archivos XML que se diferencian en el uso de mayúsculas y minúsculas, o que usan una ortogrfía moderna o arcaica, y así, pueden ser considerados equivalentes para algunos propósitos.

