Прискорююча кнопка n назначена для пропусків при навігації по сторінкам. Пропуск для переходу на початок контента.

Даний документ є перекладом. У випадку будь-яких невідповідностей і помилок остання версія документу англійською мовою повинна розглядатися як офіційна. Першопочаткове авторське право належить W3C, як це вказано нижче.

Перекладач: World translation (Олександр Шлапак)

s_gotoW3cHome Інтернаціоналізація
 

Обслуговування HTML та XHTML

Аудиторія: шифрувальники XHTML/HTML (використовуючи редактори або скрипти), розробники скриптів (PHP, JSP, і т.д.), розробники CSS, менеджери Веб проектів, і кожен, хто потребує інформацію про режими quirks чи standards, і як призначення DOCTYPE та XML впливають на це. Попереднє читання цієї статті також дуже корисне для тих, хто хоче знати, як призначити кодування символів своїх документів.

У цій статті дуже коротко описуються деякі аспекти того, як XHTML надсилається з сервера до клієнтського додатку (наприклад, до браузера), і як поширені клієнтські додатки обробляють ту розмітку, яку вони отримують. Стаття описує рішення конкретних проблем, а не стандарти W3C.

Ці питання мають відношення до того як призначити кодування символів HTML або XHTML документа. Ця інформація буде також корисною при поясненні того, чому деякі аспекти стилізації CSS не з'являються такими, як їх очікують, або чому вони відрізняються в різних клієнтських додатках.

MIME типи

Коли сервер обслуговує (тобто відправляє) документ браузеру, він також з документом посилає деяку додаткову інформацію, яка називається HTTP заголовком.

Поле Content-Type заголовку HTTP описує, який це є тип формату даних. Ця інформація виражається за допомогою помітки MIME media type (MIME медіа тип). Ось приклад HTTP заголовку для HTML файлу, використовуючи MIME тип text/html. Зверніть увагу, що запис Content-Type також може виражати кодування символів документу.

HTTP/1.1 200 OK
Date: Wed, 05 Nov 2003 10:46:04 GMT
Server: Apache/1.3.28 (Unix) PHP/4.2.3
Content-Location: CSS2-REC.en.html
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml
Cache-Control: max-age=21600
Expires: Wed, 05 Nov 2003 16:46:04 GMT
Last-Modified: Tue, 12 May 1998 22:18:49 GMT
ETag: "3558cac9;36f99e2b"
Accept-Ranges: bytes
Content-Length: 10734
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: en

MIME тип text/html є нормальним вибором для HTML файлів. Браузер, який отримує файл з цим MIME типом будемо вважати, що розмітка наслідує синтаксис HTML та буде використовувати аналізатор (парсер) HTML для того, щоб інтерпретувати значення розмітки.

На відміну від HTML, XHTML - це мова розмітки, яка базується на основі XML. Синтаксис XML трохи відрізняється від HTML, а також XML процесори будуть більш вимогливими, у тому разі, якщо ви зробите помилки. Розробка контенту на основі XML потребує коректності та достовірності, та може бути легко інтегрована з усіма інструментами обробки, даними і автоматизацією, які доступні в XML. Через менші вимоги до редагування та обробки документів, багато розробників вважають за краще використовувати XHTML, а не XML.

Для відправки до браузера розмітки XHTML з MIME типом, що вказує те, що це XML ви повинні використовувати один з наступних MIME типів: application/xhtml+xml, application/xml або text/xml. W3C рекомендує, щоб ви обслуговували XHTML як XML використовуючи тільки перший з цих MIME типів – тобто application/xhtml+xml.

Коли браузер читає XML він використовує XML аналізатор (парсер), а не HTML аналізатор (парсер).

На жаль, Internet Explorer до 8-ї версії не підтримує файли, які обслуговуються, як XML, хоча й ряд інших браузерів підтримують. Щоб обійти той факт, що не всі браузери підтримують контент, який обслуговуютєся як XML, зараз багато XHTML файлів обслуговуються із використанням такого MIME типу, як text/html. У цьому випадку, клієнтський додаток буде читати файл, так ніби це HTML файл, а також буде використовувати аналізатор (парсер) HTML.

Так як браузер вважає, що XML насправді має бути HTML, то при написанні коду XHTML, щоб гарантувати те, що відмінності між XML і HTML синтаксисом не зіб'ють з пантелику браузер ви повинні взяти до уваги деякі відмінності між цими двома форматами. Це включає в себе різні способи призначення кодування символів або призначення мови всередині документу.

Appendix C із XHTML специфікації надає трохи інформації, щодо забезпечення сумісності при обслуговуванні XHTML як HTML. Ця інформація, щодо забезпечення сумісності особливо важлива для застарілих версій браузерів. Між іншим вони рекомендують, щоб ви залишали пробіл перед '/>' в кінці порожнього тегу (як наприклад img, hr або br), щоб ви використовували HTML атрибут lang, а також XML атрибут xml:lang, щоб ви завжди використовувати обидва атрибути id та name для ідентифікаторів фрагменту і т.д.

Режим 'Standards' чи 'Quirks'

Сучасні основні браузери можуть відображати HTML файл як в режимі standards так і в режимі quirks. Це означає, що для відображення файлу застосовуються різні правила: одне відповідає інтерпретації очікуваної поведінки відповідно до стандартів W3C, інше - очікуванням, які основані на нестандартній поведінці старих браузерів.

В останніх версіях основних браузерів, режим standards включений за рахунок наявності призначення DOCTYPE. Відсутність DOCTYPE може привести до різної видачі в різних браузерах.

Нижченаведені знімки екрану ілюструють деякі з цих відмінностей.

Документ, що виконується в режимі standards. Такий самий документ, що виконуються в режимі quirks.
Зображення файлу, що відображається в режимі standards. Зображення такого самого файлу, що відображається в режимі quirks.

Натисніть на картинку, щоб побачити фактичну HTML сторінку. Якщо ви переглядаєте цю сторінку в Internet Explorer, то ви побачите такий самий ефект.

Дві картини показують дві сторінки з однаковою розміткою і CSS стилізацією, за винятком однієї речі. Єдина відмінність між цими двома файлами - зображення, що знаходиться ліворуч має тег DOCTYPE у верхній частині, а інше зображення його немає. Файл з відповідним призначенням DOCTYPE, у останніх версіях більшості браузерів, як правило, буде відображатися в режимі standards. При відсутності DOCTYPE, ви отримаєте режим quirks.

Показані вище зовнішні відмінності випливають з наступних відмінностей в реалізації такого браузера, як Internet Explorer:

Початкова мета використання DOCTYPE - вказівка визначення мови розмітки. Нижче приведений вихідний текст із призначенням DOCTYPE у верхній частині (що виділено червоним курсивом).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>XHTML document</title> 
    <style type="text/css">
    body { background: white; color: black; font-family: arial, sans-serif; font-size: 12px; }
    p { font-size: 100%; }
    h1 { font-size: 16px; }
    div { margin: 20px; width: 170px; padding: 50px; border: 6px solid teal; }
    table { border: 1px solid teal; }
    </style> 
    </head> 

<body> 
    <h1>Тестовий файл для режимів Standards/Quirks</h1> 
    <div>
        Тег div із CSS width:170px, margin:20px, padding:50px and border:6px.
        </div> 
    <p>Текст в елементі p.</p>
    <table> 
        <tr><td>Текст в таблиці.</td></tr> 
        </table>
    </body> 
</html> 
			

Браузери, які таким чином змінюють режими standards та quirks часто пропонують зробити DOCTYPE перемикання.

Як правило, це дуже добре завжди обслуговувати вашу сторінку в режимі standards - тобто завжди включати призначення DOCTYPE.

Призначення XML та DOCTYPEs

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

Оскільки XHTML 1.0 грунтується на XML, то XML призначення можна додати на початку розмітки, навіть якщо вона обслуговується як HTML. Це зробило би верхню частину вищенаведеного файлу, схожим на це (XML призначення виділяється червоним курсивом):

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xml‎ns="http://www.w3.org/1999/xhtml">
<head>
...

У таких браузерах, як Internet Explorer 7, Firefox, Safari, Opera, Google Chrome, та інших, із або без XML призначення, сторінка, що обслуговується з призначенням DOCTYPE буде відображатися в режимі standards.

Проте, в Internet Explorer 6, якщо перед призначенням DOCTYPE не з'являється нічого, окрім byte-order mark (мітки порядку байтів), то сторінка відображається в режимі quirks.

Якщо користувачі Internet Explorer 6 і досі є значною частиною вашої цільової аудиторії, то це може бути проблемою. Якщо ви хочете переконатися, що ваші сторінки в Internet Explorer 6 відображаються так само, як і у всіх інших standards-compliant (сумісних стандарту) браузерах, то ви повинні ретельно подумати над тим, як вам з цим справитися.

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

Зауважимо, що якщо ви приймете рішення пропустити XML призначення, то в якості кодування сторінки ви повинні вибрати або UTF-8 або UTF-16. (Для отримання додаткової інформації про вплив на призначення кодування дивіться Призначення кодування символів в HTML .)

Розкажіть нам про те, що Ви думаєте.

Підписатися на RSS джерело.

Нові джерела

Новини головної сторінки

Twitter (Новини головної сторінки)

‎@webi18n

Додаткові матеріали

Автор: Richard Ishida, W3C. Перекладач: World translation (Олександр Шлапак).

Допустимий XHTML 1.0!
Допустимий CSS!
Кодування UTF-8!

Переклад Англійського контенту від 2010-08-20. Переклад останнього оновлення 2012-02-02 18:00 GMT

Для перегляду історії внесення змін до перекладу натисність article-serving-xhtml в блоге i18n.