XML - статьи


Как не выглядеть некомпетентным в области XML - часть 3


По мнению автора, совет Хенри Сивонена относительно недопустимости включения пробелов структурной распечатки программы в символьные данные является несколько натянутым. По мнению Хенри Сивонена, если документ XML представлен в виде, показанном в листинге 1, то, как правило, представление его в виде, показном в листинге 2, не является безопасным.

Листинг 1. Пример XML

<foo>bar</foo>


Листинг 2. Пример XML с пробелами, добавленными к символьным данным

<foo> bar </foo>

Но если структурно распечатать документ XML, представленный в листинге 3, то эта операция будет безопасной (листинг 4).


Листинг 3. Еще один пример XML

<doc><foo>bar</foo></doc>


Листинг 4. Пример XML из листинга 3 с пробелами, добавленными к символьным данным

<doc> <foo>bar</foo> </doc>

Многие инструменты сериализации распознают эту разницу между сравнительно безопасной и относительно небезопасной структурной распечаткой. Важно понимать, что формы структурных распечаток, показанные в листингах 3 и 4, могут вызывать искажения, если пробелы добавлены к смешанному содержанию. Этих проблем можно избежать, если преобразование будет управляться схемой. Но на практике большинство словарей, использующих смешанное содержание, не столь чувствительны к нормализации пробелов, поэтому не стоит уделять много внимания структурной распечатке. Просто необходимо помнить об этой потенциальной проблеме и быть уверенным, что существует возможность отключения структурной распечатки (предпочтительно, чтобы эта опция по умолчанию была отключена). Хенри Сивонен рекомендует тип структурной распечатки, представленный в листинге 5, но автор настоящей статьи не согласен с ним, поскольку такая разметка выгляди плохо и неудобна для работы.

Листинг 5. Структурная распечатка, предложенная Хенри Сивоненом, но не поддерживаемая автором настоящей статьи

<foo >bar</foo >




Начало  Назад  Вперед