Чтение онлайн

ЖАНРЫ

HTML, XHTML и CSS на 100%

Квинт Игорь

Шрифт:

<div xmlns="http://www.w3.org/1998/Math/MathML>у4/z</div">

В этом случае XHTML-совместимый браузер, обрабатывая документ, получит указание, что при воспроизведении содержимого данного тега <div> следует воспользоваться набором математических правил DTD, взяв их по указанному адресу http:// www.w3.org/1998/Math/MathML. Здесь хранится спецификация языка математической разметки MathML (Mathematical Markup Language). При этом запись y4/z будет воспроизведена браузером как математическое выражение деления двух переменных y4 и z, а не как

содержимое тега <div>, определенного в общих XHTML DTD.

Как видите, ссылки на пространства имен достаточно объемны. Чтобы сократить их размер и упростить себе работу по составлению документа, можно использовать так называемые метки, вставляя их в определения пространства имен в начале документа:

<html xmlns="http://www.w3.org/TR/xhtml1" xmlns:math="http://www.w3.org/1998/Math/MathML">

После этого можно будет обращаться к данному пространству имен во всех тегах документа так:

<math:div>y4/z</div>

Здесь приведена сокращенная версия тега <div> из предыдущего примера.

Итак, сведем все воедино, запишем весь созданный XHTML-документ целиком (листинг 13.1).

Листинг 13.1. Образец XHTML-документа

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1 transitional.dtd">

<html xmlns="http://www.w3.org/TR/xhtml1" xml:lang="en" lang="en">

<head>

<title>Это наш первый XHTML-документ</title>

</head>

<body>

...Здесь находится содержимое документа...

</body>

</html>

Все компоненты этого документа должны быть вам знакомы. В начале стоят объявления об использовании в документе языка XML 1.0 и переходных правил XHTML 1.0 DTD. В декларативной части внутри элемента head содержится элемент title заголовка документа, который в языке XHTML обязателен. В элементе html с помощью атрибута xmlns объявлено, что по умолчанию пространством имен документа будет XHTML 1.0. С помощью атрибута lang указано, что в документе XHTML применяется английский язык.

Однако что теперь мы можем ввести в тело XHTML-документа? Поскольку мы объявили использование для него переходных правил DTD XHTML 1.0, допустимы практически любые элементы, теги и атрибуты языка HTML 4.01, однако при их использовании мы должны учитывать определенные ограничения. Эти ограничения еще более жестки в готовящейся версии языка XHTML 1.1, причем настолько, что практически исключают какие-либо вольности в составлении XHTML-документов. Мы же ограничимся более либеральной версией 1.0.

13.2. Отличие XHTML от HTML

Основным отличием документа XHTML от HTML 4.01 является жесткое требование к корректности документа с точки зрения стандартов языка XML. На протяжении истории развития языка HTML сложился подход, при котором допускались многочисленные вольности и отступления от стандартов языка, объявленных W3C, а браузеры различных производителей пытались компенсировать эти вольности, угадывая и корректируя HTML-код с целью его адекватного воспроизведения.

Все это отменяется в языке XHTML, если следовать строгим наборам XHTML DTD, а переходные наборы XHTML DTD служат лишь на период перехода от старого к новому: от HTML к XHTML.

Значения атрибутов должны быть в кавычках

В языке HTML значения атрибутов должны быть заключены в кавычки, только если в значение входят пробелы или специальные символы. Но в языке XHTML это недопустимо: все значения должны заключаться в кавычки. Например, в теге <td>, входящем в документ HTML, допустимо написать следующее:

<td width=123 height=90>

Однако в языке XHTML это считается ошибкой. Следует писать так:

<td width="123" height="90">

Хотя это и кажется избыточным, но выполнение такого правила обязательно.

Необходимо наличие закрывающего тега

В стандарте языка HTML 4.01 допускается пропуск закрывающего тега, если программа, которая будет обрабатывать соответствующий документ, сможет «догадаться» о его наличии. Поэтому вполне допустимо опускать закрывающие теги между соседними абзацами или </td> для ячеек в таблицах. Но в XHTML наличие закрывающих тегов обязательно, например два смежных абзаца должны записываться так:

Это первый абзац

<Это второй абзац>

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

То же самое касается и пустых элементов. Каждый тег такого элемента должен иметь как открывающий, так и закрывающий тег, например тег обрыва строки теперь должен писаться так: <br></br>, иначе строка разорвана не будет. К счастью, в этом случае допускается запись <br/>, то есть перед завершающей угловой скобкой следует поместить наклонную черту. Если же у тега есть атрибуты, то угловая черта пишется после них, например <img src="mypicture.jpg"/>.

Необходимо корректно вкладывать элементы друг в друга

Это требование стандарта XHTML не отличается от требований HTML. Каждый элемент, вложенный в другой элемент, должен быть закрыт завершающим тегом, лежащим внутри содержащего его элемента. Например, в данном примере элемент для задания курсивного текста включает тег полужирного начертания:

<i><b>

…форматируемый текст…

</b> </i>

Этот пример корректен. Однако если мы напишем так:

<i><b>

…форматируемый текст…

</i> </b>

то нарушим требования HTML. Тем не менее эти и им подобные требования не всегда выполнялись разработчиками, и «добрые» браузеры обычно корректировали такие нарушения кода. Однако стандарт XHTML запрещает подобные нарушения. Кроме того, XHTML запрещает следующие вложения:

• тег <form> не может содержать теги <form>;

Поделиться с друзьями: