Значение - <? Xml version = "1.0" encoding = "utf-8"?>

Я новичок в XML, и я пытаюсь понять основы. Я прочитал строку ниже в разделе "Изучение XML", но я все еще не понимаю. Может ли кто-нибудь указать мне на книгу или веб-сайт, который четко объясняет эти основы?

Изучение XML. Объявление XML описывает некоторые из наиболее общих свойств документа, говорящие процессору XML, что для интерпретации этого документа необходим XML-синтаксический анализатор. Что это значит?

Я понимаю "часть версии xml" - и doc, и пользователь doc должны "говорить" в одной и той же версии XML. Но как насчет кодирующей части? Почему это необходимо?

Ответ 1

Чтобы понять атрибут "encoding", вы должны понимать разницу между байтами и символами.

Подумайте о байтах как числа от 0 до 255, тогда как символы - это такие, как "a", "1" и "Ä". Набор всех доступных символов называется набором символов.

Каждый символ имеет последовательность из одного или нескольких байтов, которые используются для его представления; однако точное количество и значение байтов зависит от используемой кодировки и существует множество разных кодировок.

Большинство кодировок основаны на старом наборе символов и кодировке под названием ASCII, который представляет собой один байт на символ (фактически, всего 7 бит) и содержит 128 символов, включая множество общих символов, используемых на английском языке.

Например, здесь 6 символов в наборе символов ASCII, которые представлены значениями от 60 до 65.

Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║  Character   ║
╠══════╬══════════════║
║  60  ║      <       ║
║  61  ║      =       ║
║  62  ║      >       ║
║  63  ║      @       ║
║  64  ║      A       ║
║  65  ║      B       ║
╚══════╩══════════════╝

В полном наборе ASCII самое низкое значение - ноль, а самое высокое - 127 (оба являются скрытыми управляющими символами).

Однако, как только вы начнете нуждаться в большем количестве символов, чем базовый ASCII (например, буквы с акцентами, символы валюты, графические символы и т.д.), ASCII не подходит, и вам нужно что-то более обширное. Вам нужно больше символов (другой набор символов), и вам понадобится другая кодировка, так как для символов всех символов не хватает 128 символов. Некоторые кодировки предлагают один байт (256 символов) или до шести байтов.

С течением времени было создано множество кодировок. В мире Windows есть CP1252 или ISO-8859-1, тогда как пользователи Linux предпочитают UTF-8. Java использует UTF-16 изначально.

Одна последовательность байтовых значений для символа в одной кодировке может означать совершенно другой символ в другой кодировке или даже может быть недействительной.

Например, в ISO 8859-1 â представлен одним байтом значения 226, тогда как в UTF-8 это два байта: 195, 162. Однако в ISO 8859-1 195, 162 должно быть два символа, Ã, ¢.

Подумайте о XML как о не последовательности символов, а о последовательности байтов.

Представьте, что система, получающая XML, видит байты 195, 162. Как он знает, что это за персонажи?

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

Поскольку большинство распространенных кодировок совместимы с ASCII, в том, что касается основных буквенных символов и символов, в этих случаях сама декларация может уйти с использованием только символов ASCII, чтобы сказать, что такое кодировка. В других случаях анализатор должен попытаться определить кодировку декларации. Поскольку он знает, что объявление начинается с <?xml, это намного проще сделать.

Наконец, атрибут version указывает версию XML, в которой на данный момент есть две (см. версии Wikipedia XML. Существуют небольшие различия между версиями, поэтому парсер XML должен знать, с чем он имеет дело. В большинстве случаев (для говорящих на английском языке) версия 1.0 достаточна.

Ответ 2

Объявление XML не требуется во всех XML-документах; однако авторы документа XHTML настоятельно рекомендуют использовать объявления XML во всех своих документах. Такое объявление требуется, когда кодировка символа документа отличается от UTF-8 по умолчанию или UTF-16 по умолчанию, и никакая кодировка не определяется протоколом более высокого уровня. Вот пример документа XHTML. В этом примере включено объявление XML.

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html 
 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
 </body>
</html>

Обратитесь к стандартам W3 для XML.

Ответ 3

В объявлении кодирования указывается, какая кодировка используется для представляют символы в документе.

Подробнее о Декларации XML здесь: http://msdn.microsoft.com/en-us/library/ms256048.aspx

Ответ 4

Это факультативная преамбула XML.

  • version="1.0" означает, что это стандарт XML, этот файл соответствует
  • encoding="utf-8" означает, что файл закодирован с использованием кодировки Unicode UTF-8

Ответ 5

Может кто-нибудь указать мне на книгу или сайт, который ясно объясняет эти основы?

Вы можете проверить этот учебник.

Но как насчет части кодирования? Почему это необходимо?

W3C предоставляет пояснение о кодировании:

"Набор символов документа для XML и HTML 4.0 - это Unicode (также известный как ISO 10646). Это означает, что HTML-браузеры и XML-процессоры должны вести себя так, как если бы они использовали Unicode внутри, но это не означает, что документы должны быть переданы в Unicode. Пока клиент и сервер соглашаются с кодировкой, они могут использовать любую кодировку, которая может быть преобразована в Unicode..."

Ответ 6

Объявление XML в карте документа состоит из следующего:

The version number, ?xml version="1.0"?. 

Это обязательно. Хотя число может измениться для будущих версий XML, 1.0 является текущей версией.

Объявление кодировки,

encoding="UTF-8"?

Это необязательно. Если используется, объявление кодирования должно появляться сразу после информации о версии в объявлении XML и должно содержать значение, представляющее существующую кодировку символов.