Перейти к тексту

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Вся введенная информация защищена.

  • Закрыть [x]

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Вся введенная информация защищена.

  • Закрыть [x]

Совет: Всегда используйте объявление XML

Основные свойства для обработки XML

Uche Ogbuji, Главный Консультант, Fourthought, Inc.
Author photo
Uche Ogbuji является консультантом и соучредителем фирмы Fourthought Inc., поставляющей программное обеспечение и осуществляющей консультации. Его специализацией являются XML-решения для управления корпоративными знаниями. Фирма Fourthought разработала платформу с открытым кодом 4Suite для XML, RDF и приложений, управляющих знаниями. Автор также является ведущим разработчиком языка запросов RDF Versa, инженером в области вычислительной техники и техническим писателем. Родился в Нигерии, живет и работает в г.Боулдер, штат Колорадо. Связаться с ним можно по адресу: uche@ogbuji.net.

Описание:  Объявление XML является опциональным в XML-файлах, и значения, заданные по умолчанию, определяют большую часть информации в файле. Между тем, если значения, заданные по умолчанию, не соответствуют действительности, возникают некоторые проблемы. В качестве примера можно привести документ, использующий кодировку, отличающуюся от заданной по умолчанию. Безопаснее всего использовать объявление XML. В данном совете рассказывается о том, что должно быть включено в объявление XML во всех файлах.

Дата:  30.04.2004
Уровень сложности:  простой
Активность:  3814 просмотров
Комментарии:  


Для начала разберемся в терминах. Раздел 2.8 Рекомендации W3C по XML 1.0 в частности гласит:

XML-документы ДОЛЖНЫ начинаться с объявления XML, в котором определяется версия используемого XML.

Слово "ДОЛЖНЫ" формально является термином RFC 2119, определенным следующим образом:

Данное слово, или прилагательное "РЕКОМЕНДУЕМЫЙ" означает, что в отдельных обстоятельствах могут существовать веские причины, для игнорирования указанных правил, однако перед выбором этого пути все последствия должны быть поняты и тщательно взвешены.

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

Анализ объявления

Объявление XML имеет следующий вид:

<?xml <i>version </i> <i>opt._encoding </i> <i>opt._standalone</i>?>			
			

Эти три ключевых части объявления XML иногда еще называют псевдо-атрибутами, из-за того, что они выглядят синтаксически как атрибуты. Объявление кодировки, если таковое существует, должно следовать за объявлением версии XML. Затем должно следовать объявление “автономности” XML (standalone).

Версия

Объявление версии XML является особенно важным теперь, когда стандарт XML 1.1 был утвержден как Рекомендованный W3C. В версии XML 1.1 определение правильно сформированного документа слегка изменено. Одним из таких изменений является то, что XML 1.1 указывает на обязательность объявления XML. Рекомендация W3C гласит:

Документы XML версии 1.1 ДОЛЖНЫ начинаться с объявления XML, которое определяет версию используемого XML.

Мы выделили здесь слово «должны». Согласно данному определению, любой XML-документ без объявления XML является документом XML 1.0. Кроме этого, версию XML нужно указывать по причине того, что она является очень важной при определении кодировки.

Кодировка

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

Самыми распространенными кодировками являются UTF-8 и UTF-16, которые передают символы Unicode, соответственно, как последовательность 8-битных и 16-битных значений. Обе эти кодировки должны поддерживаться парсерами. Если кодировка не задана, обработчик XML подразумевает, что используется кодировка UTF-8 или UTF-16 в зависимости от наличия или отсутствия в самом начале обрабатываемого файла особой последовательности байт (называемой Byte Order Mark или BOM).

Одной из часто встречающихся мне проблем при обработке XML была ситуация, когда объявление XML отсутствовало, а автор XML-документа пытался использовать полный набор символов в кодировке LATIN-1 (ISO-8859-1), так популярной в Америке и Западной Европе. Обычно BOM не присутствует и обработчик XML подразумевает, что используется кодировка UTF-8. В лучшем случае в такой ситуации парсер выдаст набор байт, который сформирует неверную последовательность UTF-8 и пользователь, по крайней мере, получит чистую ошибку форматирования документа. Худшим случаем является тот, когда символы кодировки LATIN-1, встречающиеся случайно, формируют правильную последовательность UTF-8. В этом случае парсер не выдаст ошибки форматирования документа, а символы XML могут оказаться совсем не тем, что вам нужно. Такую разновидность скрытой ошибки довольно сложно отследить в системе производства.

Если система внедряет правило, что все XML-документы должны иметь объявление XML, включающее кодировку, то все файлы, содержащие кодировку LATIN-1 должны всегда начинаться со следующей строки:

<?xml version="1.0" encoding="LATIN-1"?>			
			

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

Примечание: Файл, использующий кодировку UTF-16 должен начинаться с последовательности BOM, даже если кодировка объявлена правильно.

Standalone (Автономный)

В этом объявлении XML указывается, содержит ли внешнее подмножество DTD какие-либо объявления, которые могут повлиять на текущее содержимое документа. Разумеется, это имеет значение только тогда, когда вы используете DTD.


Подведение итогов

Существует распространенное мнение многих программистов о том, что явное определение всегда лучше определения по умолчанию. Это особенно верно в случае с объявлением XML. Мы настоятельно рекомендуем вам принять простое правило, что все XML-документы должны содержать объявление XML, включающее указание кодировки документа. Как показывает опыт, использование такой политики позволяет минимизировать скрытые ошибки XML и к тому же не причиняет особых неудобств.


Ресурсы

Об авторе

Author photo

Uche Ogbuji является консультантом и соучредителем фирмы Fourthought Inc., поставляющей программное обеспечение и осуществляющей консультации. Его специализацией являются XML-решения для управления корпоративными знаниями. Фирма Fourthought разработала платформу с открытым кодом 4Suite для XML, RDF и приложений, управляющих знаниями. Автор также является ведущим разработчиком языка запросов RDF Versa, инженером в области вычислительной техники и техническим писателем. Родился в Нигерии, живет и работает в г.Боулдер, штат Колорадо. Связаться с ним можно по адресу: uche@ogbuji.net.

Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Спасибо. Эта запись была помечена для модератора.


Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Сообщение о нарушении не было отправлено. Попробуйте, пожалуйста, позже.


developerWorks: вход


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Выберите ваше отображаемое имя

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

(Должно содержать от 3 до 31 символа.)


Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Оценить эту статью

Комментарии

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=XML, SOA и Web-сервисы
ArticleID=96468
ArticleTitle=Совет: Всегда используйте объявление XML
publish-date=04302004
author1-email=uche@ogbuji.net
author1-email-cc=

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).