DTD-определение XHTML содержит описание элемента, но не содер — жит описания для элемента
. Как результат, браузер пропустит таблицу и перейдет к следующему элементу.
Несмотря на то что имена атрибутов также должны содержать только симво — лы нижнего регистра, их значения могут состоять из символов в любом регистре. Так, например, следующие три строки кода будут считаться эквивалентными:
body bgcolor=»LightYellow»>
Открытые дескрипторы контейнеров должны быть закрыты, а пустые дескрип — торы должны иметь терминатор.
Глава 5. XHTML и новые тенденции 241
Элементы Web-страницы, которые имеют и начальный и конечный дескрип —
торы считаются «контейнерами», поскольку они включают или| содержат текст,
изображения или объекты, которые Web-браузер выводит на э|фан. Например, следующий код представляет собой пример использования начального и конеч —
ного дескрипторов абзаца () для вывода на экран текста:
Это текст, находящийся в пределах контейнера типа «абзаца».
При вставке контейнера типа «абзаца» (определенного его начальным и ко — нечным дескрипторами) в HTML-код Web-страницы Web-браузер выводит на эк — ран содержимое контейнера (т. е. текст абзаца).
Поскольку Web-браузер для каждого нового начального дескриптора абзаца вставляет пустую строку (и переходит на начало новой строки), многие авторы
используют контейнер абзаца (т. е. дескриптор ) в качестве
для разделения абзацев, как показано в следующем примере:
Первый абзац. Второй абзац. Третий абзац.
маркера абзаца
Такой формат не является приемлемым в контексте XHTML. В XHTML-доку —
менте каждый начальный дескриптор контейнера абзаца () дсрлжен закрывать —
ся с помощью конечного дескриптора . Требование по закрытию открытых контейнеров относится ко всем контейнерным дескрипторам, например, спискам
( , ) , элементам списка () , таблицам (
), формам ( ) И Т. Д.
Отсутствие конечных дескрипторов для элементов-контейнеЬов (как, напри —
мер, для трех абзацев в приведенном выше коде) считается синтаксически оши —
бочным и в HTML. (Несмотря на то что браузеры не рассматривают это ошиб —
кой.) Тем не менее, в отличие от HTML, язык XHTMLj требует, чтобы закрывались и элементы, которые не являются контейнерами |(так называемые
«пустые» элементы). Таким образом, в HTML приведенный в предыдущем приме —
ре код корректно можно записать в следующем виде:
Первый раздел текста.
Второй раздел текста. Третий раздел текста.
Тем не менее, в XHTML даже пустой элемент
должен закрываться с по —
мощью косой черты («/»), которая отделяется от имени элемента пробелом, как показано в следующем примере:
Первый раздел текста.
/Xbr /> Второй раздел текста.
/Xbr />
Требование по закрытию пустых дескрипторов также относится к дескрипто —
рам изображений (), фреймов ( />), метаданных (/>), оп —
ций (/>), параметров (
) И Т. Д.
Кроме того, терминатор пустых XHTML-дескрипторов может использоваться в
качестве сокращенной формы закрытия пустых элементов-контейнеров. Напри —
24 2 Глава 5. XHTML и новые тенденции
мер, в код XHTML-страницу для запуска Java-аплета MyAppiet. clas s можно по —
местить следующий дескриптор :
height=»200″X/applet>
Несмотря на то что дескриптор является контейнером, он не содер —
жит данных, которые будут выводиться на экран Web-браузером, не поддержива —
ющим аплеты. Для таких браузеров содержимое вставляется между дескриптора —
ми контейнера (т. е. между начальным дескриптором и конечным
дескриптором ). Поскольку контейнер пуст, конечный деск —
риптор можно заменить терминатором, как показано в следующем примере:
Несмотря на то что приведенная строка является корректным объявлением в HTML, язык XHTML требует, чтобы все значения, как числовые, так и тексто — вые, заключались в кавычки. Поэтому, в XHTML объявление «невидимой» табли — цы должно выглядеть следующим образом:
II
Помимо заключения значений атрибутов в кавычки, язык XHTML требует, чтобы все атрибуты содержали значения. В HTML в том случае, когда атрибут
имеет только одно значение, допускалось использовать сокращение, называемое минимизацией атрибута. Оно позволяло опускать значение атрибута и указывать только его имя. Например, для вставки на форму флажка используется дескрип —
тор, значение атрибута type которого равно «checkbox», как показано в следующем примере:
name=MWin98″ value=ON»>
При необходимости указания браузеру установить флажок, т. е. нарисовать «га — лочку», в HTML нужно было написать следующий дескриптор:
name=»Win98″ value=ON» checked>
Глава 5. XHTML и новые тенденции 2 4 3
Поскольку атрибут checked имеет только одно допустимое значение
(«checked»), Web-браузер знает, что делать, когда он встречает в дескрипторе атрибут checked без значения. Тем не менее, язык XHTML требует, что — бы все значения назначались атрибутам в явном виде (и в кавычках), даже если
существует только одно значение. Таким образом, для приведенного выше при —
мера для установленного по умолчанию флажка код потребуется переписать в следующей форме:
name=»Win98″ value=ON» checked^»checkecL!’>
XHTML-документы должны начинаться с объявления DOCTYPE
Для экономии времени при наборе HTML-кода Web-страниЦ авторы, как пра —
вило, опускают объявление DOCTYPE. В коде каждого \?еЬ-0раузера встроено
DTD-определение. Оно представляет собой что-то вроде указателя на дороге, ко —
торое помогает определить браузеру, как должны читаться HTlV^L-дескрипторы (а теперь уже и XHTML-дескрипторы) и их атрибуты.
Поскольку DTD-определение встроено в код каждого браузера, ранее не было необходимости дополнительно указывать файл, в котором можно найти описа —
ние HTML-дескрипторов и их атрибутов. Независимо от DTD-^пределения, ука — занного в объявлении DOCTYPE, браузер всегда проверял содержимое своего внут —
реннего DTD-определения, на основании которого он решал, ^то нужно сделать
с тем или иным дескриптором или атрибутом. Таким образоЦ, если дизайнеры
пользовались новыми атрибутами или дескрипторами, имеющимися, например,
в версии HTML 4.01, браузеры, содержащие DTD-определени^ для HTML вер —
сии 3.0, игнорировали «новые» дескрипторы и атрибуты;
Объявление DOCTYPE В языке XHTML стало обязательным элементом, если,
конечно, дизайнеры не определили собственный DTD-файл, содержащий описа — ния всех используемых в XHTML-документе дескрипторов и атрибутов. Таким образом, браузер может загрузить Web-документ, считать содержимое объявления DOCTYPE и указать, какое DTD-определение нужно использовать для трактовки