ИНФОРМАЦИЯ,    ДИЗАЙН,    ПЕРЕВОДЫ,    РЕКЛАМА   .   .   .
w a p - с а й т
Информационный портал
Сегодня:  
admin@aranea.ru
+79068922256

  aranea.ru || XHTML™ 1.0 |

C. Руководство по совместимости с HTML

Этот раздел является информативным.

   C.1. Обработка инструкций и XML-декларация
   C.2. Пустые элементы
   C.3. Минимизация элементов и содержание пустых элементов
   C.4. Вложенные стилевые таблицы и сценарии
   C.5. Обрыв строки (Line Break) внутри значений атрибутов
   C.6. Isindex
   C.7. Атрибуты lang и xml:lang
   C.8. Идентификаторы фрагментов
   C.9. Кодировка символов
   C.10. Булевы атрибуты
   C.11. Объектная модель документа (Document Object Model) и XHTML
   C.12. Использование амперсандов в значениях атрибутов (и в других местах)
   C.13. Каскадные стилевые таблицы (CSS) и XHTML
   C.14. Обращение к стилевым элементам, когда документ обслуживается как XML
   C.15. Пробельные символы в HTML в противоположность к XML
   C.16. Поименная ссылка на символ & a p o s ;

Это приложение предоставляет резюме по руководству для дизайна авторам, которые хотят, чтобы их XHTML-документы визуализировались в существующих HTML-устройствах вывода. Обратите внимание на то, чтобы эта рекомендация не определяет, как устройства вывода, согласующиеся с HTML, должны обрабатывать HTML-документы. Здесь не определяются средства для Internet Media Type text/html. Для получения таких определений смотрите [HTML4] и [RFC2854], соответственно.

C.1. Обработка инструкций и XML-декларация

Помните, что инструкции обработки выводятся на некоторых устройствах вывода. Кроме этого, некоторые устройства вывода интерпретируют XML-декларацию таким образом, что документ является нераспознанным XML, а не HTML, и, поэтому, нельзя визуализировать документ так, как ожидается. Для совместимости с этими типами традиционных браузеров, вы возможно захотите избежать использование инструкций обработки и XML-объявлений. Помните, однако, что когда XML-декларация не включена в документ, то последний может использовать только кодировки символов UTF-8 или UTF-16, установленных по умолчанию.

C.2. Пустые элементы

Включайте пробел перед окончанием / и > пустых элементов, например <br />, <hr /> и <img src="karen.jpg" alt="Karen" />. Кроме этого, используйте минимизированный синтаксис для пустых элементов, например <br />, как альтернативный, так как синтаксис <br></br>, разрешаемый языком XML, дает неопределенный результат во многих существующих устройств вывода.

C.3. Минимизация элементов и содержание пустых элементов

Для пустых примеров элемента, модель содержания которого не является EMPTY (например, пустой элемент title или параграф), не используйте минимизированную форму (например, используйте <p> </p>, а не <p />).

C.4. Вложенные стилевые таблицы и сценарии

Используйте внешние стилевые таблиц, если ваши стилевые таблицы используют < или &, или ]]>, или --. Используйте внешние сценарии (scripts), если ваши сценарии содержат < или &, или ]]>, или --. Обратите внимание на то, что анализатору языка XML позволено без предупреждения убирать содержание комментариев. Поэтому, историческая практика скрытия сценариев и стилевых таблиц внутри комментариев, делающая документ обратно совместимым, может не работать так, как ожидается в устройствах вывода, основанных на XML.

C.5. Обрыв строки (Line Break) внутри значений атрибутов

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

C.6. Isindex

Не включайте больше одного элемента isindex в элемент документа head. Элемент isindex является устаревающим в пользу элемента input.

C.7. Атрибуты lang и xml:lang

Используйте оба атрибута lang и xml:lang, когда определяете язык элемента. Значение атрибута xml:lang имеет преимущество.

C.8. Идентификаторы фрагментов

В XML URI-ссылки [RFC2396], которые оканчиваются идентификаторами фрагмента в форме "#foo", не обращаются к элементам с атрибутом name="foo"; скорее всего, они направляют к элементам с атрибутом, определенным как тип ID, например, атрибут id в языке HTML 4. Большинство существующих клиентов HTML не поддерживают использования атрибутов тип ID, таким образом идентичные значения могут придаваться для обоих этих атрибутов для обеспечения максимальной обратной и будущей совместимости (например, <a id="foo" name="foo">...</a>).

Поскольку набор корректных значений для атрибутов типа ID значительно меньше, чем для типа CDATA, то тип атрибута name меняется на NMTOKEN. Этот атрибут ограничен таки образом, что он может иметь только те же самые значения, как и у типа ID, или как у порождения Name в XML 1.0 (Section 2.3, production 5). К сожалению, это ограничение нельзя выразить в файлах XHTML 1.0 DTD. Из-за этого изменения необходимо быть осторожным, когда конвертируются существующие HTML-документы. Значения этих атрибутов должны быть уникальными внутри документа, корректными, и любые ссылки на эти идентификаторы фрагментов (оба, внутренние и внешние), которые должны быть обновлены, следует менять во время конвертирования.

Обратите внимание на то, что коллекция корректных значений в XML 1.0 (Section 2.3, production 5) значительно больше, чем разрешено использовать в типах ID и NAME, определенных в HTML 4. Когда определяются идентификаторы фрагментов для обратной совместимости, то следует использовать только строки, соответствующие шаблону [A-Za-z][A-Za-z0-9:_.-]*. Смотрите Раздел 6.2 языка [HTML4] для более подробной информации.

В заключении, обратите внимание на то, что XHTML 1.0 имеет устаревающий атрибут name для элементов a, applet, form, frame, iframe, img и map, и он будет убран из XHTML в следующих версиях.

C.9. Кодировка символов

Исторически, кодировка символов в HTML-документе определяется либо веб-сервером через параметр charset заголовка HTTP Content-Type header, либо через элемент meta в самом документе. В XML-документе кодировка символов документа определяется XML-объявлением (например, <?xml version="1.0" encoding="EUC-JP"?>). Чтобы представить документы переносимо с определенными кодировками символов, самым лучший подход состоит в обеспечении веб-сервером предоставления корректных заголовков. Если это не возможно, то документ, который хочет установить кодировку символов явно, должен включать и XML-объявление, и формулировку meta http-equiv (например, <meta http-equiv="Content-type" content="text/html; charset=EUC-JP" />). В устройствах вывода, согласующихся с XHTML, значения объявления кодировки для XML-декларации имеют преимущества.

Обратите внимание: помните, что если документ должен включать объявление кодировки символов в формулировке meta http-equiv, которая может всегда интерпретироваться HTTP-серверами и/или устройствами вывода, как media type Интернета, определенный в такой формулировке. Если документ должен обслуживаться, как имеющий множественный тип медиа, HTTP-сервер должен использоваться для установки кодировки документа.

C.10. Булевы атрибуты

Некоторые устройства вывода HTML не способны интерпретировать булевы атрибуты, когда они появляются в своей полной форме (не минимизированные), как требует XML 1.0. Обратите внимание на то, что эта проблема не влияет на устройства вывода, совместимые с HTML 4. В эти атрибуты включают: compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize, defer.

C.11. Объектная модель документа (Document Object Model) и XHTML

Рекомендации объектной модели документа уровень 1 (Document Object Model level 1) [DOM] определяют интерфейс объектной модели документа для XML и HTML 4. Объектная модель документа для HTML 4 устанавливает возвращение имен элементов и атрибутов HTML в верхнем регистре. Объектная модель документа для XML определяет возвращение имен элементов и атрибутов в том регистре, в котором они определены. В XHTML 1.0 элементы и атрибуты определяются в нижнем регистре. К этому четкому различию можно обратиться двумя способами:

  1. Устройства вывода, которые имеют доступ к XHTML-документам, обслуживаемых, как тип Интернет-медиа text/html через DOM, могут использовать HTML DOM, и могут полагаться на имена элементов и атрибутов, возвращаемых в верхнем регистре через такие интерфейсы.
  2. Устройства вывода, которые имеют доступ к XHTML-документам, обслуживаемых, как тип Интернет-медиа text/xml, application/xml или application/xhtml+xml, могут также использовать XML DOM. Элементы и атрибуты будут возвращаться в нижнем регистре. Кроме этого, некоторые XHTML-элементы могут появляться или нет в объектном дереве, так как они являются факультативными в модели содержания (например, элемент tbody внутри table). Это происходит из-за того, что в HTML 4 некоторым элементам разрешено быть минимизированными так, что их начальные и конечные теги оба опущены (особенность SGML). Это не возможно в XML. Включенные авторами документов внешние элементы XHTML делает их скорее факультативными, чем обязательными. Устройствам вывода необходимо адаптироваться к этому соответственно. Для получения более подробной информации, обратитесь к [DOM2]

C.12. Использование амперсандов в значениях атрибутов (и в других местах)

В обоих языках SGML и XML символ амперсанд ("&") объявляет начало ссылки на примитив (например, & r e g ; для знака регистрации "®"). К сожалению, большинство устройств вывода HTML игнорируют без объявления некорректное использование символа амперсанда в HTML-документах, и обращаются с амперсандами, которые не выглядят как ссылки на примитивы, буквально, как амперсанды. Устройства вывода, основанные на XML, ну будут так толерантны с таким неправильным использованием, и любой документ, которые применяет амперсанд некорректно, будут ошибочными, и следовательно не будут согласовываться с этой спецификацией. Чтобы убедиться, что документы совместимы с историческими устройствами вывода HTML и с устройствами вывода, основанных на XML, амперсанды, используемые в документе, которые должны обрабатываться как буквенные символы, должны выражаться как примитивы (например, "& a m p ;"). Например, когда атрибут href элемента a обращается к сценарию CGI, который принимает параметры, должен выражаться, лучше как http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user, а не как http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

C.13. Каскадные стилевые таблицы (CSS) и XHTML

Рекомендации каскадных стилевых таблиц уровень 2 (Cascading Style Sheets level 2) [CSS2] определяют стилевые свойства, которые применяются для анализируемого дерева документов HTML или XML. Различия в синтаксическом анализе будут продуцировать различные визуальные и аудио результаты в зависимости от используемых селекторов. Следующие советы уменьшат это воздействие на документы, которые обслуживаются без модификации, как оба типа медиа:

  1. Стилевые таблицы CSS для XHTML должны использовать имена элементов и атрибутов в нижнем регистре.
  2. В таблицах элемент tbody будет учитываться анализатором для устройства вывода HTML, но не анализатором для устройства вывода XML. Поэтому, вам следует всегда явно добавлять элемент tbody, если ссылаетесь на него в селекторе CSS.
  3. Внутри поля имен XHTML устройства вывода, как ожидается, распознают атрибут "id" как атрибут типа ID. Поэтому, стилевые таблицы должны быть способны продолжать использование сокращенного синтаксиса селектора "#", даже если устройство вывода не читает файл DTD.
  4. Внутри пространства имен XHTML устройства вывода, как ожидается, распознают атрибут "class". Поэтому, стилевые таблицы должны быть способны продолжать использование короткого синтаксиса селектора ".".
  5. CSS определяет различные правила согласования для документов HTML и XML; знайте, что правила HTML применяют XHTML-документы, доставленные как HTML, а правила XML применяют XHTML-документы, доставленные как XML.

C.14. Обращение к стилевым элементам, когда документ обслуживается как XML

В HTML 4 и XHTML элемент style может использоваться для определения стилевых правил внутри документа. В XML используется XML-декларация стилевой информации для определения стилевых правил. Для совместимости с этим соглашением элементы style должны иметь свои идентификаторы фрагментов, установленные с использованием атрибута id, и XML-декларация для стилевой информации должна ссылаться на этот фрагмент. Например:

<?xml-stylesheet href="http://www.w3.org/StyleSheets/TR/W3C-REC.css" type="text/css"?>
<?xml-stylesheet href="#internalStyle" type="text/css"?>
<!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>An internal stylesheet example</title>
<style type="text/css" id="internalStyle">
  code {
    color: green;
    font-family: monospace;
    font-weight: bold;
  }
</style>
</head>
<body>
<p>
  This is text that uses our 
  <code>internal stylesheet</code>.
</p>
</body>
</html>

C.15. Пробельные символы в HTML в противоположность к XML

Некоторые символы, которые являются корректными в HTML-документах, не применяются в XML-документе. Например, в HTML символ подачи страницы Formfeed (U + 0 0 0 C) воспринимается как пробел, а в XHTML из-за определения символа в XML он не корректный.

C.16. Поименная ссылка на символ & a p o s ;

Поименная ссылка на символ & a p o s ; (апостроф, U + 0 0 2 7) была введена в язык XML 1.0, но не появилась в языке HTML. Поэтому, авторам следует использовать & # 3 9 ; вместо & a p o s ; для правильной работы, как ожидается в устройствах вывода HTML 4.


← Назад | Вперед →
Copyright © 2006 -  aranea.ru