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


103

Я новачок у XML і намагаюся зрозуміти основи. Я прочитав рядок нижче в "Навчання XML", але це все ще не зрозуміло для мене. Чи може хтось вказати мені на книгу чи веб-сайт, який чітко пояснює ці основи?

З вивчення XML :

Декларація XML описує деякі найбільш загальні властивості документа, повідомляючи процесору XML, що йому потрібен аналізатор XML для інтерпретації цього документа.

Що це означає?

Я розумію xml versionчастину - і doc, і користувач doc повинні "говорити" в одній версії XML. А як щодо encodingчастини? Чому це потрібно?



Відповіді:


126

Щоб зрозуміти атрибут "кодування", ви повинні зрозуміти різницю між байтами та символами .

Розгляньте байти як цифри між 0 і 255, тоді як символи - це такі речі, як "a", "1" та "Ä". Набір усіх доступних символів називається набором символів .

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

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

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

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

У повному наборі 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, яких наразі існує дві (див. Версії XML Wikipedia . Існують невеликі відмінності між версіями, тому XML-аналізатору необхідно знати, з чим він має справу. У більшості випадків (англійською) динаміки все одно), версії 1.0 достатньо.


9
"Сам заголовок використовує кодування ASCII": Я думаю, ви посилаєтесь на декларацію XML. Він кодується як і решта документа; UTF-16 чи що. Процесор XML може зробити кілька випробувань, поки не зможе прочитати специфікацію кодування.
Том Блоджет

1
У мене склалося враження, що преамбула / пролог повинен кодуватися під UTF-8, і це розповіло аналізатору, як перетворити решта байтів (власне XML-документ) у правильне кодування. Знову неправильно! :-)
Келлі Борода

5
Ось запропоноване читання: joelonsoftware.com/2003/10/08/…
Судіп Бхандарі,

26

Декларація 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 .


4
що xml посилається на xhtml. ви мали на увазі посилання на xml w3.org/TR/xml або ви хотіли назвати посилання xhtml?
jrwren

Xhtml посилається на документацію xml. Для добре сформованого формату XML не потрібна декларація про тип документа.
xvan

"Будь ласка, зверніться до стандартів W3 для XML." IOW, переходите читати faqing faq, який є дуже довгим документом. Чому люди не можуть просто пояснити, що таке "?" робить і чому він там ???
Блаженний Geek

3

Це необов'язкова преамбула XML .

  • version="1.0" означає, що це стандарт XML, якому цей файл відповідає
  • encoding="utf-8" означає, що файл кодується за допомогою кодування UTF-8 Unicode


2

Чи може хтось вказати мені на книгу чи веб-сайт, який чітко пояснює ці основи?

Ви можете перевірити цей XML-підручник із прикладами.

А як щодо кодуючої частини? Чому це потрібно?

W3C надає пояснення щодо кодування:

"Набір символів документа для XML та HTML 4.0 - це Unicode (він же ISO 10646). Це означає, що браузери HTML та процесори XML повинні вести себе так, ніби вони використовували Unicode всередині. Але це не означає, що документи повинні передаватися в Unicode. Поки клієнт і сервер домовляються про кодування, вони можуть використовувати будь-яке кодування, яке можна перетворити на Unicode ... "


-1

Декларація XML на карті документа складається з наступного:

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

Це обов’язково. Хоча число може змінюватися для майбутніх версій XML, 1.0 - це поточна версія.

Декларація кодування,

encoding="UTF-8"?

Це необов’язково. Якщо використовується, декларація кодування повинна з'являтися відразу після інформації про версію в декларації XML і повинна містити значення, що представляє існуюче кодування символів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.