Канонический XML - Canonical XML - Wikipedia

Канонический XML это нормальная форма из XML, предназначенный для относительно простого сравнения пар XML-документов на эквивалентность; с этой целью преобразование Canonical XML устраняет несущественные различия между документами. Любой XML-документ можно преобразовать в Canonical XML.

Например, XML разрешает использование пробелов в различных точках начальных тегов, а атрибуты должны указываться в любом порядке. Такие различия редко, если вообще когда-либо, используются для передачи значения, поэтому эти формы обычно считаются эквивалентными:

   <p class="a" secure="1">
   <p     secure   = "1"             class='a'   >

При преобразовании произвольного XML-документа в канонический XML атрибуты кодируются в нормативном порядке (в алфавитном порядке по имени) и с нормативными интервалами и кавычками (хотя все объявления пространств имен размещаются перед обычными атрибутами, а атрибуты пространств имен сортируются по пространству имен, а не по префиксу. или полное имя). Таким образом, вторая форма выше будет преобразована в первую.

Канонический XML определяет ряд других деталей, некоторые из которых:

  • то UTF-8 кодировка используется
  • концы строк представлены с помощью новая линия персонаж 0x 0A
  • пробелы в значениях атрибутов нормализованы
  • ссылки на сущности и ссылки на неспециальные символы расширяются
  • CDATA разделы заменяются их характерным содержанием
  • пустые элементы кодируются как пары начало / конец, без использования специального синтаксиса пустых элементов
  • атрибуты по умолчанию сделаны явными
  • лишние объявления пространств имен удаляются

Согласно W3C, если два XML документы имеют одинаковую каноническую форму, тогда два документа логически эквивалентны в рамках данного контекста приложения (за исключением ограничений, касающихся нескольких необычных случаев).

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

Смотрите также

внешняя ссылка