XML - статьи

Другие отличия


Начав работу над новой версией XML, членам рабочей группы показалось разумным исправить и некоторые другие недостатки тогдашней версии XML. Первый из них - это нестыковка между определением обозначением конца строки в XML и тем, как это определено в Unicode. Это несоответствие особенно влияет на IBM- и IBM-совместимые мейнфреймы, а также любые взаимодействующие с ними системы. На этих машинах инструментальные средства отмечают конец строки с помощью символа (NEL), который как таковой не признается XML 1.0. Это означает, что, если на этих системах создать XML-документ с помощью такого простого инструмента как Notepad, а потом передать его в процессор, совместимый с XML 1.0, созданный документ будет отвергнут как некорректно-оформленный. В XML 1.1 эта проблема решается путем добавления символа (#x85) в список символов, которые обозначают конец строки. Для полноты в этот список также включен символ разделителя строки (#x2028).

Кроме того, спецификация XML 1.1 разрешает добавлять в документы символы управления, используя ссылки на символы. Это касается символов управления, находящихся в диапазоне от #x1 до #x1F, большинство которых запрещено в XML 1.0.
Это означает, что теперь документы могут включать символ звуковой сигнализации, например, . Однако, эти символы пока не могут появляться непосредственно в документах, поскольку это нарушает определение типа mime, используемого для XML (text/xml) и может вызвать проблемы с инструментами, которые ожидают, что XML-файлы будут содержать только текстовые символы, и которые обрабатывают символы управления определенным образом.

Самое последние дополнение, внесенное в XML 1.1, это проверка нормализации символов. Несмотря на то, что изначально предполагалось, что Unicode определит уникальное число для каждого символа, определенные символы - или то, что пользователи считают символами - может на самом деле быть представлено несколькими способами.

Например, "e" с диакритическим знаком (’e в слове r’esum’e) обычно обозначает как одиночный код, присвоенный этому символу (#xE9) или как эквивалентная последовательность нескольких кодов (#x65 для "e" и #x301 для диакритического знака). Кроме того, у некоторых символов вообще нет кода, как, например, седиль у "e" (седиль - это знак, находящийся ниже символа "c" в "facade"). Поэтому их можно представить только комбинируя несколько кодов (в нашем примере, #xE9 для "e", за которым следует седиль - #x327). Существует неограниченное количество возможны комбинаций. В тех случаях, если существует несколько возможных эквивалентных представлений, при простом построчном сравнении эквивалентные строки могут быть признаны как неэквивалентные. Для решения этой проблемы в Unicode определяется несколько способов нормализации строк до их обработки. В XML 1.1 предусмотрено, что процессор XML 1.1 может проверить, находится документ в обычной форме или нет; в случае отсутствия такой информации, разработчикам приложений возможно придется выполнить нормализацию или убедиться, что их код не опирается на специфическую форму текста.



Содержание раздела