Canonical XML - это нормальная форма из XML, предназначенная для относительно простого сравнения пар документов XML на эквивалентность; для этого преобразование Canonical XML устраняет несущественные различия между документами. Любой XML-документ можно преобразовать в Canonical XML.
Например, XML разрешает использование пробелов в различных точках в начальных тегах, а атрибуты могут указываться в любом порядке. Такие различия редко, если вообще когда-либо, используются для передачи значения, поэтому эти формы обычно считаются эквивалентными:
При преобразовании произвольного XML-документа в канонический XML атрибуты кодируются в нормативном порядке (в алфавитном порядке по имени) и с нормативным интервалом. и цитирование (хотя все объявления пространств имен помещаются перед обычными атрибутами, а атрибуты пространств имен сортируются по пространству имен, а не по префиксу или квалифицированному имени). Таким образом, вторая форма выше будет преобразована в первую.
Канонический XML определяет ряд других деталей, некоторые из которых:
Согласно W3C, если два документа XML имеют одинаковую каноническую форму, то эти два документа логически эквивалентны в рамках данного контекста приложения (за исключением ограничений, касающихся нескольких необычных случаев).
Однако в особом контексте пользователей может беспокоить особая семантика, выходящая за рамки общей логической эквивалентности, с которой связан канонический XML. Например, система стеганография может скрывать информацию в XML-документе путем изменения пробелов, цитирования и порядка атрибутов, использования шестнадцатеричных и десятичных ссылок на числовые символы и т. Д. Очевидно, что преобразование такого файла в Canonical XML приведет к потере этой специализированной семантики. С другой стороны, XML-файлы, которые отличаются использованием верхнего и нижнего регистра, или в которых используется устаревшее правописание по сравнению с современным, и так далее, могут считаться эквивалентными для определенных целей. Такие контексты выходят за рамки Canonical XML.