Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Зацените сайт!
Показать сообщение отдельно

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar news_valid_xhtml.rar
(3.1 Kb, 4 просмотров)

Разбор под катом (нужно кликнуть по строке :))

Возьмём для примера "новости" (в принципе, шаблон везде один и тот же, т.ч. и ошибки одинаковые должны быть).
36 Errors, 22 warning(s)
Во-первых, нет DTD. Добавляем первой строкой:
Код: Выделить весь код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Сразу увеличивается количество ошибок. 167 Errors, 23 warning(s)
Часть я опишу, а часть исправлю молча.

Ошибка 1:
Цитата:
Line 2, Column 1: Missing xmlns attribute for element html. The value should be: http://www.w3.org/1999/xhtml.
<html>
Many Document Types based on XML need a mandatory xmlns="" on the root element. For example, the root element for XHTML will look like:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
Написано - отсутствуют атрибуты у тэга < html > во второй строке, символ 1. Ну-с, xhtml требует атрибутов. Полный пример приведён. Копируем, заменяем. Только ru вместо en.

Ошибка 2 и 3:
Цитата:
Line 5, Column 143: an attribute value specification must be an attribute value literal unless SHORTTAG YES is specified.
…о на http://reddragon-sph.ru/." name=description >

Line 5, Column 156: end tag for "meta" omitted, but OMITTAG NO was specified.
…eddragon-sph.ru/." name=description >

You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".
Строка 5. Атрибут надо заключать в кавычки. У вас - просто после равно. Кроме того, xhtml требует закрытия одиночных тэгов (исключая DTD). Вот так:
HTML код: Выделить весь код
<meta value="Описательная часть http://reddragon-sph.ru/." name="description" />

Аналогично с кейвордами (кейворды, кстати, должны отличаться по содержанию от дескрипшна).
У строки, определяющей кодировку, также нужно делать закрытие тэга: ... />


Цитата:
Line 15, Column 5: document type does not allow element "body" here.
<body>
Посмотрите, что у вас:
HTML код: Выделить весь код
</head> <body background="Fon/reddragon02.jpg" bgcolor="#7D0000"> <body> <body> <body> <div align="center">

Это безобразие. body должет быть только один! Убираем лишнее.


Цитата:
Line 20, Column 74: there is no attribute "background".
…"0" cellspacing="0" width="50%" background="Fon/reddragon01.jpg">
XHTML немного отличается от HTML набором атрибутов. Вообще, они решили отделить разметку и оформление, поэтому многие атрибуты переехали в css. Вот table не имеет атрибута background. Надо перенести в стиль:
HTML код: Выделить весь код
<table border="0" cellpadding="0" cellspacing="0" width="50%" style="background:url(Fon/reddragon01.jpg)">

Остальные пока можно оставить.


Цитата:
Line 25, Column 193: end tag for "img" omitted, but OMITTAG NO was specified.
…agon, котята, продажа чемпионов"></td>
You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".
Эта ошибка возникла из-за того, что у вас элемент img не самозакрыт:
HTML код: Выделить весь код
<img src="..." alt="..." />

Надо закрывать. Аналогично и тэги
HTML код: Выделить весь код
<br />


Дальше в коде опять встречается body. Убираем.

Цитата:
Line 63, Column 82: there is no attribute "height".
…" cellpadding="0" id="table3" height="464">
Строка 63. Данный элемент не имеет атрибута height (тоже таблица). Переносим в css:
HTML код: Выделить весь код
<table border="0" width="97%" cellspacing="0" cellpadding="0" id="table3" style="height:464">

Хотя я не понимаю, зачем указывать высоту для таблицы. Высота указывается для ячеек.

Так-с, начало поправили. Сохраняю, обновляю (это к тому, что номера строк меняются).

Цитата:
ine 21, Column 195: end tag for "p" omitted, but OMITTAG NO was specified.
…on, котята, продажа чемпионов" /></td>
Как оказалось, не только из-за незакрытого тэга выдаёт эту ошибку. Там ещё закрывающий тэг для p пропущен. Вставляем:
HTML код: Выделить весь код
котята, продажа чемпионов" /></p></td>


Цитата:
Line 48, Column 77: end tag for "td" omitted, but OMITTAG NO was specified.
…000_files/cbjscb0000.js"></script></body> <p> </p>
Зачем body закрывается здесь? Убираем его.


Этот кусок:
HTML код: Выделить весь код
<td colspan="2"> <p align="center"><span lang="ru"><u> <font face="Monotype Corsiva" size="5" color="#FF0000">Мы переехали!!!</span></font></u></p> <p align="center"> </td>

Это ужасно. Много лишнего, да и вложенность попутана. Исправляем:
HTML код: Выделить весь код
<td colspan="2" style="align:center; text-decoration:underline; color:#ff0000; font-size:30px; font-family:monotype corsiva">Мы переехали!!!</td>

Обратите внимание, что был size="5", а стал font-size:30px. Но отображается одинаково. В пикселях нагляднее указывать)

Эта строка:
HTML код: Выделить весь код
<font face="Monotype Corsiva" size="5" color="#FF0000">22</font></b></u></span><b><font face="Monotype Corsiva" color="#FF0000" size="5"><u>.01.2009</u></font></b></td>

Жуть опять)
HTML код: Выделить весь код
<span style="font-family:monotype corsiva; font-size:30px; color:#ff0000; font-weight:bold; text-decoration:underline">22.01.2009</span>

Так лучше. А вообще, лучше вынести стили в шапку и делать на них ссылки по id или class.

Например, ещё такая ошибка:
Цитата:
Line 122, Column 100: required attribute "alt" not specified.
…met_004.jpg" width="460" height="306"></p>
Не указан атрибут alt у изображения. Надо указывать обязательно. Если нечего написать, оставляйте его пустым: ... alt="" />


Цитата:
ine 144, Column 30: there is no attribute "VALUE".
<param name="FlashVars" VALUE="ww=200&hh=220"/>
XHTML требует нижнего регистра в названиях атрибутов. Т.е. не VALUE, а value.


Цитата:
Line 144, Column 38: cannot generate system identifier for general entity "hh".
<param name="FlashVars" value="ww=200&hh=220"/>
Вы будете смеяться но в XTHML символ амперсанда предполагает, что далее идёт какая-то сущность (типа & n b s p ; или & l a q u o ; (пишу через пробелы, чтобы форум не заменил)). Т.ч. если вам нужен амперсанд, пишите & a m p ; независимо от того, встречается он в ссылке, в тексте или в таком вот атрибуте.
HTML код: Выделить весь код
<param name="FlashVars" value="ww=200&hh=220"/>

Потом идёт куча ошибок, связанных с тэгом embed. Видимо, он не поддерживается в xhtml. Или удаляйте его, или заключайте в "комментарий":
HTML код: Выделить весь код
<!-- <embed.... /> -->


Есть "якобы ошибки" в скриптах. Вообще, принято скрипты "комментировать" в начале и в конце, хотя мало кто так делает. А мы сделаем. Например, так:
HTML код: Выделить весь код
<script language="javascript" type="text/javascript"> <!-- java="1.0"; java1=""+"&refer="+escape(document.referrer)+"&page="+ escape(window.location.href); document.cookie="astratop=1; path=/"; java1+="&c="+(document.cookie?"yes":"now"); //--> </script>

Обратите внимание на тэги html-комментариев и особую форму закрывающего тэга комментария. Это специально для JS.

Коды счётчиков тоже невалидные. Где-то одинарные кавычки вместо двойных, нет alt'а у изображений, атрибуты заглавными буквами и др. Нужно поправить.

Прикладываю файл в архиве (полностью проходит валидацию). Но пароль от архива не скажу, пока не увижу, что вы сами пытались исправить. Исправьте всё, что сможете, а остальное я укажу. И ещё - пароль я могу забыть, т.ч. поспешайте
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:17, 11-02-2009 | #389

Название темы: Зацените сайт!