<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Seleckis.lv :: журнал Никиты Селецкого &#187; xhtml/xml</title>
	<atom:link href="http://seleckis.lv/category/journal/xhtml/feed" rel="self" type="application/rss+xml" />
	<link>http://seleckis.lv</link>
	<description></description>
	<lastBuildDate>Tue, 08 Feb 2011 13:52:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Вёрстка в Латвии: Вчера. Сегодня! Завтра?</title>
		<link>http://seleckis.lv/journal/research/vyorstka-v-latvii-vchera-segodnya-zavtra</link>
		<comments>http://seleckis.lv/journal/research/vyorstka-v-latvii-vchera-segodnya-zavtra#comments</comments>
		<pubDate>Thu, 27 May 2010 15:31:55 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[xhtml/xml]]></category>
		<category><![CDATA[Брaузеры]]></category>
		<category><![CDATA[Исследования]]></category>
		<category><![CDATA[Статистика]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1835</guid>
		<description><![CDATA[Версия моего выступления на Web Standards Days Riga 2010 вызвавшего неоднозначную реакцию.
Много было регистраций работников различных дизайн студий, компаний занимающихся разносторонней веб-разработкой, банков, министерств, фрилансеров и просто интересующихся. Я не зря добавил в форму регистрации поле для адреса сайта. Те люди, что собрались на конференцию, скромно говоря, флагманы, пионеры латвийской веб-разработки. Поэтому не грех было [...]]]></description>
			<content:encoded><![CDATA[<p><em>Версия моего выступления на Web Standards Days Riga 2010 вызвавшего неоднозначную реакцию.</em></p>
<p>Много было регистраций работников различных дизайн студий, компаний занимающихся разносторонней веб-разработкой, банков, министерств, фрилансеров и просто интересующихся. Я не зря добавил в форму регистрации поле для адреса сайта. Те люди, что собрались на конференцию, скромно говоря, флагманы, пионеры латвийской веб-разработки. Поэтому не грех было покопаться в их работах и попробовать понять, что же всё-таки у нас происходит с текущим использованием технологий?</p>
<p>Статистика вещь интересная, но только если она связанна с интересными темами. Мне было интересно заняться небольшим статистическим анализом, результатами которого я с вами сейчас поделюсь. Конечно в дебри я не полез, из-за большой лени, но то, чего успел накопать хватает достаточно, чтобы составить небольшую рекомендацию, с чего стоит начать осовременивать свою вёрстку.</p>
<h3>Вчера</h3>
<p>Итак, что же можно назвать «вчера»?</p>
<ul>
<li>ASCII кодировка</li>
<li>Не использование DOCTYPE</li>
<li>DOCTYPE с указанием спецификации</li>
<li>Валидация ради валидации</li>
</ul>
<p>Список можно продолжить, но мне лениво.</p>
<h3>Кодировка</h3>
<p>Для начала рассмотрим какие кодировки использовались на проанализированных сайтах.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1836" title="Encoding of latvian web sites: UTF-8 — 93%. Yea, baby, yea!" src="http://seleckis.lv/wp-content/uploads/2010/05/encoding.png" alt="" width="570" height="431" /></p>
<p>Здесь всё замечательно, почти на всех сайтов используется кодировка utf-8. Это проще, чем подбирать для каждого языка свою. Здесь могу только посоветовать, тем 7 %, кто остался переходить на uft-8. Больше говорить не о чем.</p>
<h3>DOCTYPE</h3>
<p>Многие до сих пор не понимают значения доктайпа. Для того, чтобы это понять, нужно сначала обратиться к истории. Ну долго копаться в ней не будем, единственно упомянем, что существует два режима отображения веб-страницы — Standards Mode  и Quirks Mode,  ну так исторически сложилось. Первый — это режим отображения согласно веб-стандартам W3C, второй — режим поддержки старых сайтов, написанных в 90-е годы. Чем конкретно они отличаются читайте на W3C или в Википедии, ищите в Гугле… информации полно, но я на этом зацикливаться не буду. <em>(Ну там ещё есть almost standards, который от standards почти не отличается)</em></p>
<p>Если вы не пишете доктайп, то включается Quirks Mode. Если пишете — Standards Mode. Но есть исключения:</p>
<ul>
<li>Internet Explorer воспринимает декларацию HTML 4.0 и старее как Quirks Mode.</li>
<li>В случае с XHTML по правилам требуется xml-декларация. И её фактически никогда не пишут, поскольку из-за неё IE6 переключается в Quirks Mode.</li>
<li>Опера вообще не поддерживает Quirks Mode. Даже без DOCTYPE страница рендерится в Standards Mode.</li>
</ul>
<p>Более подробные нюансы <a href="http://en.wikipedia.org/wiki/Quirks_mode">о QuirksMode можно почитать в Википедии</a>.</p>
<p><strong>Итог: Чтоб избежать проблем нужно использовать DOCTYPE обязательно.</strong></p>
<h3>DOCTYPE с указанием спецификации или валидация ради валидации</h3>
<p>Теперь посмотрим как у нас обстоят дела с доктайпами на латвийских сайтах.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1837" title="Doctypes of latvian web sites: XHTML 1.0 Transitional — 49%; HTML 4.01 Transitional — 24%; XHTML 1.0 Strict — 15%; XHTML 1.1 — 4 %; HTML 5 — 1%; Quirks Mode + HTML 4.0  — 7 % (Ouch!)" src="http://seleckis.lv/wp-content/uploads/2010/05/doctypes.png" alt="" width="592" height="582" /></p>
<p>Великолепно! 68 % указывают XHTML  декларацию. А теперь проверим, проходят ли они валидацию?</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1838" title="Validation of latvian web sites: Not valid — 78 %; valid — 21 %; damaged — 1 %" src="http://seleckis.lv/wp-content/uploads/2010/05/validation.png" alt="" width="512" height="474" /></p>
<p style="text-align: center;">
<p>Внимание, вопрос! Зачем для сайтов указывать доктайпы со спецификацией, если валидацию они не проходят?</p>
<p>Если почитать спецификацию XHTML, то такой документ по сути должен передаваться в формате application/xhtml+xml. Это можно сказать «чистый» XHTML. Правильный. Мы все любим правильность и я в том числе, поэтому большинство сайтов написаны в формате XHTML. Там и правильные закрывающие теги и правильная вложенность и дубрирующееся написание значения атрибутов-флагов.</p>
<p>А на самом деле все передают такой документ в формате text/html. Почему? Во-первых многие не знают, что он должен передаваться как application, а во-вторых — незачем! Чаще всего модульные технологии расширения, для которых был создан XHTML, не используются. Ни прстранства имён, ни MathML, ни семантическая вёрстка через RDF и другие крутые вещи не нужны для создния веб-сайтов и сервисов.</p>
<p>Так зачем же мы пишем такой сложный Доктайп? И при чём он у всех такой разный. Он вам не нужен такой! Напишите его проще. Вот так:</p>
<p style="text-align: center; font-size: 32px; color: #888;">&lt;!DOCTYPE html&gt;</p>
<p>Дело в том, что именно по этой части DOCTYPE браузер определяет, переходить ли ему в режим Standards Mode или нет. Указание дальнейшей спецификации и соответствующего адреса браузеру не нужно, он прекрасно справится. Спецификация нужна только для валидатора. Тем более что данная декларация, вот именно в таком виде уже включена в стандарт HTML 5 и тупые ошибки вы сможете определить W3C-валидатором.</p>
<p>Хорошо, допустим вы такой упрямый и всё равно считаете, что будете верстать в XHTML и указывать соответствующий доктайп, просто потому, что так правильней и можно проверить в валидаторе ту самую паранойю «disabled=&#8221;disabled&#8221;». Но на какой стадии вы это делаете? На стадии девелопинга! Так на продакшен-сервере, то он вам зачем?! Вот то-то и оно…</p>
<p><em>Холивар про «em vs. px» напишу чуть позже.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/research/vyorstka-v-latvii-vchera-segodnya-zavtra/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Выхлоп: HTML должен быть…</title>
		<link>http://seleckis.lv/journal/research/vyihlop-html-dolzhen-byit</link>
		<comments>http://seleckis.lv/journal/research/vyihlop-html-dolzhen-byit#comments</comments>
		<pubDate>Wed, 09 Jul 2008 21:37:07 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[xhtml/xml]]></category>
		<category><![CDATA[Идеи]]></category>
		<category><![CDATA[Исследования]]></category>

		<guid isPermaLink="false">http://seleckis.lv/journal/research/vyihlop-html-dolzhen-byit</guid>
		<description><![CDATA[…основанным на логике. Да, это первое и самое главное. В принципе, это главное предназначение было описано еще в SGML.
Принцип логики нарушил ещё Папа вэба — Тим Бернерс-Ли, который в своём первом драфте накидал кучу визуальных тэгов. Shame on you, Tim! Хорошо хоть, исправляешься. Я неожиданно удивился изменениям в XHTML 2.0:

Элемент &#60;blockcode&#62;, которого всем так не [...]]]></description>
			<content:encoded><![CDATA[<p>…основанным на логике. Да, это первое и самое главное. В принципе, это главное предназначение было описано еще в SGML.</p>
<p>Принцип логики нарушил ещё Папа вэба — Тим Бернерс-Ли, который в своём <a href="http://www.w3.org/MarkUp/draft-ietf-iiir-html-01.txt">первом драфте</a> накидал кучу визуальных тэгов. Shame on you, Tim! Хорошо хоть, исправляешься. Я неожиданно удивился изменениям в <a href="http://www.w3.org/TR/xhtml2/">XHTML 2.0</a>:</p>
<ol>
<li>Элемент &lt;blockcode&gt;, которого всем так не хватает, на замену тупой конструкции &lt;pre&gt;&lt;code&gt; … &lt;/code&gt;&lt;/pre&gt;</li>
<li>Элемент &lt;l&gt;. Для обработки строк, незаменимая вещь. Опять же избавляемся от мусорного &lt;br /&gt;</li>
<li>Элемент &lt;separator&gt; взамен &lt;hr /&gt;. Человечное и логичное название.</li>
<li>Ну про &lt;section&gt; уже все успели написать и раскритиковать, но я поддерживаю это нововведение. Мне, например, не удобно постоянно следить за уровнем заголовков. Я бы предпочёл автоматизировать этот процесс наподобие нумерованных списков.</li>
<li>Очень не хватало группировки терминов и значений. Именно из-за отсутствия такой возможности в статье <a href="http://seleckis.lv/journal/css/pozitsionirovanie-kartinok-dlya-galerei">о позиционировании картинок в галерее</a> приходилось в качестве группирующего элемента использовать сам элемент &lt;dl&gt;, что было не логично и неудобно для восприятия.</li>
<li>&lt;nl&gt; — это, насколько я понимаю в замен устаревшему &lt;menu&gt;. Насчёт обязательного присутствия элемента &lt;label&gt; я не согласен. Почему у меня не может быть навигации без заголовка? Тем более получается конфликт с одноимённым элементом в формах.</li>
<li>Супер-пупер вещь — href в любых элементах! Сколько мучений с тем, что в тэг &lt;a&gt; не допустимо засовывать блочные тэги!</li>
<li>Логичный атрибут edit вместо элементов &lt;ins&gt;, &lt;del&gt;, с дополнительными значениями. Похоже на свойства файла.</li>
<li>Почти отказ от элемента &lt;img&gt;. Атрибуты src, usemap, ismap, shape, coords можно добавить для любого элемента, содержимое которого заменится на картинку переданную в src. Причём в src может быть не только картинка, но и любое другое содержимое, любой mime‑контент. Но чтобы это корректно работало, нужно указать тип содержимого в srctype. &lt;img&gt; в свою очередь стал парным тэгом, а содержимое его выступает в качестве альтернативного текста.</li>
<li>&lt;handler&gt; вместо &lt;script&gt;. Зачем? Неужели &lt;handle&gt; семантически точнее, чем &lt;script&gt;? Опять же предлагается прямо в нём писать javascript. Да ещё и модуль XML событий добавили! А как же «Васька — отдельно, сосиски — отдельно»?</li>
<li>Атрибут media во всех элементах. Т. е. можно сразу определить в элементе для какого девайса его показывать. Удобно когда нужно сделать страницу корректно отображаемую на мобильнике или печатаемую на принтере. Например, для  мобильных браузеров не поддерживающие CSS это очень кстати. Хотя, к тому времени, когда XHTML 2.0 станет общеиспользуемым, у нас не останется таких мобильников.</li>
<li>Элемент meta превратился в парный тэг. Логично. Информации много, её надо куда-то девать. В content всё не умещается.</li>
<li>Нагородили огород с &lt;link&gt;. Народ cite толком не использует, а они ещё хотят писать дополнительные элементы &lt;link&gt; и &lt;meta&gt; для указания источника, языка, автора…</li>
<li>Указание внешнего источника стилей расширено xml-ным способом, через элемент &lt;?xml-stylesheet?&gt;</li>
<li>Нет объяснения, зачем к id добавили ещё xml:id. Видимо по той же причине что и xml:lang. Да, но зачем вообще явно указывать namespace?</li>
<li>Отличнейший атрибут role. Любым приложениям, а так же поисковикам, можно будет рассказывать о предназначении того или иного элемента.</li>
</ol>
<p>Сырой документ. Много недописанного, в том числе XForms. Но в целом «верной дорогой идёте, товарищи!» Но идти вы так будете очень долго.</p>
<h3>Что мы имеем сейчас?</h3>
<p>Самые непопулярные браузеры имеют самые быстрые темпы развития и поддержку новых технологий. Хочу обратить ваше внимание на тот факт, что браузеры Opera, Firefox и Safari поддерживают несуществующие тэги. Любой вами придуманный тэг (в HTML, а не в XML) является по‑умолчанию строчным, но его внешний вид можно настроить с помощью CSS как угодно.</p>
<p>IE6, который является самым долгоиграющим браузером на рынке и самым устаревшим и глючным и IE7 не далеко ушедшим от его старшего собрата не поддерживают такие фривольности. Вернее поддерживают, но только через пространства имён.</p>
<h3>Каким я вижу HTML?</h3>
<p>XML + CSS. Разработчик не должен ограничиваться тем количеством элементов, что допускает спецификация. Он должен иметь возможность использовать любое название элемента. А любой элемент, в свою очередь может быть описан с помощью CSS.</p>
<p>Любые специфические элементы (элементы форм, внедряемые объекты, мета‑информация) нужно переводить в атрибуты и иметь возможность задавать их любым элементам.</p>
<p>Единственное, что можно допустить, это разделение невидимого контента, предназначенного для браузера (head), от отображаемого пользователю контента (body).</p>
<p>Убрать возможность добавлять скрипты и стили непосредственно в HTML‑документ. Только выносные.</p>
<h3>Проблемы</h3>
<p>Я не говорю о такой глобальной проблеме, как убеждение производителей браузеров в использовании такого метода. И так понятно, что их прошибить сложно. У них бизнес-план расписан на несколько лет вперёд.</p>
<p>Есть ещё одна — браузеры не поддерживающие CSS не имея чёткого представления о том, как должен отображаться тот или иной придуманный разработчиком элемент, отобразит всё содержимое всех элементов в виде сплошного одноразмерного текста без какого-либо форматирования. </p>
<p>Выхода два:</p>
<ol>
<li>оставить совместимость с существующим HTML;</li>
<li>стандартизировать понятие «браузер», как программу отображающую содержимое размеченное HTML‑тэгами и стилизованное CSS‑описанием. Любые нестандартные проявления встречать свистом и недовольным улюлюканьем.</li>
</ol>
<p>Второй вариант предпочтительней.</p>
<p>Жду гневные комментарии, господа верстальщики-гуру!</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/research/vyihlop-html-dolzhen-byit/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Стандарты, говорите..?</title>
		<link>http://seleckis.lv/journal/research/standartyi-govorite</link>
		<comments>http://seleckis.lv/journal/research/standartyi-govorite#comments</comments>
		<pubDate>Wed, 02 Jul 2008 21:39:05 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[xhtml/xml]]></category>
		<category><![CDATA[Исследования]]></category>

		<guid isPermaLink="false">http://seleckis.lv/journal/research/standartyi-govorite</guid>
		<description><![CDATA[
Народ кричит: «Стандарты! Стандарты!» И я вместе с ними иногда покрикиваю. Причём если возникает вопрос «Почему?», то за ним незамедлительно следует ответ: «Так написано в Спецификации X(HTML) такой-то, такой-то». И дают сразу ссылку на вышеназванный документ, который читают полностью только самые дотошные зануды, а в основном все просматривают только описания конкретных элементов. «А-а-а! Ну тогда [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src='http://seleckis.lv/wp-content/uploads/2008/06/w3c.png' alt='' /></p>
<p>Народ кричит: «Стандарты! Стандарты!» И я вместе с ними иногда покрикиваю. Причём если возникает вопрос «Почему?», то за ним незамедлительно следует ответ: «Так написано в Спецификации X(HTML) такой-то, такой-то». И дают сразу ссылку на вышеназванный документ, который читают полностью только самые дотошные зануды, а в основном все просматривают только описания конкретных элементов. «А-а-а! Ну тогда ладно&#8230;» — Вопрошатай оценил «бесценность» научного документа и возгордился тем, что смог его «асилить».</p>
<p>Из последней статьи о Дизайне текста, а особенно из комментариев я понял, что большинство тех, кто больше всех кричит о стандартах не понимают зачем они нужны, а значит используют возможности браузеров в вёрстке неэффективно.</p>
<p>Производители браузеров никогда не придут к единому консенсусу в отношении стандартов, у каждого есть своё собственное мнение о развитии веба и каждый будет гнуть свою линию. Опять же любая программа написана человеком и будет содержать множество ошибок. Даже самый первый программный код, который программисты пишут для вывода «hello world» содержит грамматические ошибки, что говорить о дальнейшем. Где грамматические, там и логические. Поэтому, каждый уважающий себя браузер всё равно имеет множество багов, которые «отличают» его от остальных.</p>
<p>Предположим, я напишу html и css по всем стандартам, т. е. буду использовать только те тэги, которые разрешены для использования спецификацией. </p>
<p>Вот тэги, которые я бы использовал часто:</p>
<p>&lt;a&gt;, &lt;blockquote&gt;, &lt;body&gt;, &lt;br&gt;, &lt;cite&gt;, &lt;code&gt;, &lt;dd&gt;, &lt;div&gt;, &lt;dl&gt;, &lt;dt&gt;, &lt;em&gt;, &lt;form&gt;, &lt;h1&gt; to &lt;h6&gt;, &lt;head&gt;, &lt;html&gt;, &lt;img&gt;, &lt;input&gt;, &lt;label&gt;, &lt;li&gt;, &lt;link&gt;, &lt;meta&gt;, &lt;ol&gt;, &lt;option&gt;, &lt;p&gt;, &lt;script&gt;, &lt;object&gt;, &lt;param&gt;, &lt;select&gt;, &lt;span&gt;, &lt;strong&gt;, &lt;style&gt;, &lt;table&gt;, &lt;td&gt;, &lt;textarea&gt;, &lt;th&gt;, &lt;title&gt;, &lt;tr&gt;, &lt;ul&gt;.</p>
<p>А эти я бы использовал очень редко или вообще не использовал бы:</p>
<p>&lt;abbr&gt;, &lt;acronym&gt;, &lt;address&gt;, &lt;applet&gt;, &lt;area&gt;, &lt;b&gt;, &lt;base&gt;, &lt;basefont&gt;, &lt;bdo&gt;, &lt;big&gt;, &lt;button&gt;, &lt;caption&gt;, &lt;center&gt;, &lt;col&gt;, &lt;colgroup&gt;, &lt;del&gt;, &lt;dir&gt;, &lt;dfn&gt;, &lt;fieldset&gt;, &lt;font&gt;, &lt;frame&gt;, &lt;frameset&gt;, &lt;hr&gt;, &lt;i&gt;, &lt;iframe&gt;, &lt;ins&gt;, &lt;isindex&gt;, &lt;kbd&gt;, &lt;legend&gt;, &lt;map&gt;, &lt;menu&gt;, &lt;noframes&gt;, &lt;noscript&gt;, &lt;optgroup&gt;, &lt;pre&gt;, &lt;q&gt;, &lt;s&gt;, &lt;samp&gt;, &lt;small&gt;, &lt;strike&gt;, &lt;sub&gt;, &lt;sup&gt;, &lt;tbody&gt;, &lt;tfoot&gt;, &lt;thead&gt;, &lt;tt&gt;, &lt;u&gt;, &lt;var&gt;, &lt;xmp&gt;.&gt;</p>
<p>Одни тэги запрещены спецификацией, другие редко когда нужны, третьи вообще не нужны.</p>
<p>Если всё делать по стандартам, то скажите мне пожалуйста, зачем существуют выше перечисленные элементы? Они часто используются? Только не надо тыкать меня носом в спецификацию с объяснением. Эти объяснения надуманы. Чем руководствовался консорциум создавая это бодягу, но не подумав, например, о блочном варианте code? Почему нет &lt;nobr&gt;? Он мне нужен чаще, чем &lt;sub&gt;, &lt;sup&gt;, &lt;del&gt; или &lt;ins&gt;.</p>
<p>Опять же, одинаково отображается во всех браузерах наверное только половина первого списка. </p>
<p>Больше всего ругаются на IE. Да, это самый дырявый браузер. Но и под него можно подстроиться. Хватить канючить, пора работать. IE6 существует уже столько лет, что давно все его баги описаны и решения обхода известны. Многим просто лень гуглить.</p>
<p>Я сейчас не буду затрагивать тему CSS, только HTML. Если существует различный рендеринг в различных браузерах, то не нужно на это ругаться, это надо использовать. Особенно касается элементов форм. Их отображение зависит не только от браузеров, но зачастую и от операционных систем. Если хотите, то можете городить тучу кода на JavaScript для замены селекта. Я же буду использовать тот, что даёт конкретный браузер или операционная система.</p>
<p>Чем больше я занимаюсь вёрсткой, тем больше убеждаюсь: стандарты — в топку! Может бросить верстать?</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/research/standartyi-govorite/feed</wfw:commentRss>
		<slash:comments>51</slash:comments>
		</item>
		<item>
		<title>5 советов верстальщику</title>
		<link>http://seleckis.lv/journal/css/5-sovetov-verstalschiku</link>
		<comments>http://seleckis.lv/journal/css/5-sovetov-verstalschiku#comments</comments>
		<pubDate>Thu, 15 May 2008 10:02:06 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[xhtml/xml]]></category>

		<guid isPermaLink="false">http://seleckis.lv/journal/css/5-sovetov-verstalschiku</guid>
		<description><![CDATA[Стартуем эстафету среди специалистов по вёрстке!
Условия:

Речь идёт о html/xhtml/css вёрстке.
Передавать эстафету нужно другому блоггеру только в том случае, если вы уверены, что он действительно в этом разбирается.
Не используйте в качестве советов элементарные правила html/xhtml/css.
Особенно приветствуются хитрости исправляющие баги в IE без использования хаков.
Мало рассказать о каком-либо баге. Нужно предложить решение.

Итак, мои советы:

Используй таблицы не для [...]]]></description>
			<content:encoded><![CDATA[<p>Стартуем эстафету среди специалистов по вёрстке!</p>
<p>Условия:</p>
<ul>
<li>Речь идёт о html/xhtml/css вёрстке.</li>
<li>Передавать эстафету нужно другому блоггеру только в том случае, если вы уверены, что он действительно в этом разбирается.</li>
<li>Не используйте в качестве советов элементарные правила html/xhtml/css.</li>
<li>Особенно приветствуются хитрости исправляющие баги в IE без использования хаков.</li>
<li>Мало рассказать о каком-либо баге. Нужно предложить решение.</li>
</ul>
<p>Итак, мои советы:</p>
<ol>
<li>Используй таблицы не для вёрстки страницы, а только для отображения таблицы с данными. Все возможные способы вёрстки документа доступны нам при использовании div-ной вёрстки. Div-ная вёрстка наиболее логична и лаконична.</li>
<li>При использовании padding-top у внешнего элемента и margin-top у внутреннего, в IE срабатывает только свойство с наибольшим значением. Используй или только margin, или только padding, или делай отступы с использованием дополнительного контейнера.</li>
<li>Не используй для элементов такие свойства CSS вместе:
<pre lang="css">
... {
	float: left;
	width: ... ;
	margin-left: ... ;
}
</pre>
<p>или</p>
<pre lang="css">
... {
	float: right;
	width: ... ;
	margin-right: ... ;
}
</pre>
<p>в этом случае IE6 будет увеличивать отступ (margin-left, margin-right) в два раза.<br />
Используй padding для внешнего контейнера, чтобы сдвинуть элемент. Или добавь ещё один контейнер и сдвигай его с помощью margin.</li>
<li>Если хочешь чтобы пользователь IE6 мог изменять размеры шрифта на странице, то для определения размера шрифта следует использовать относительные единицы измерения: em и %.</li>
<li>Чтобы не было проблем с языками все файлы сохраняй в кодировке UTF-8. Обязательно указывай кодировку в соответствующем meta-теге и для всех подключаемых файлов (например подключенных с помощью элементов &lt;script&gt;, &lt;link&gt;).</li>
</ol>
<p>Эстафету передаю:</p>
<ul>
<li><a href="http://uggallery.audiopeace.ru/">Александру Исакову</a></li>
<li><a href="http://www.alexilin.ru/">Алексу</a></li>
<li><a href="http://www.webmakerslounge.com/">The Webmakers Lounge</a></li>
<li><a href="http://dimox.name">Дмитрий Лялину</a></li>
<li><a href="http://blog.sribna.com">Авторам Sribna</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/css/5-sovetov-verstalschiku/feed</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Дизайн текста 3: Списки</title>
		<link>http://seleckis.lv/journal/web-dizayn/dizayn-teksta-3-spiski</link>
		<comments>http://seleckis.lv/journal/web-dizayn/dizayn-teksta-3-spiski#comments</comments>
		<pubDate>Fri, 28 Mar 2008 14:52:45 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[xhtml/xml]]></category>
		<category><![CDATA[Веб‑дизайн]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/web-dizayn/dizayn-teksta-3-spiski</guid>
		<description><![CDATA[Списки бывают упорядоченные (&#60;ol&#62;) и неупорядоченные (&#60;ul&#62;). Упорядоченные, обычно, отображаются с нумерованным арабскими цифрами маркером. Неупорядоченные могут быть с маркерами вида: закрашенный кружочек, незакрашенный кружочек, закрашенный квадратик (как вижу, так и называю) или любой другой рисунок.
Начнём, с того, что уясним, что же такое список. Проведём аналогию с рукописным текстом. Если в тексте имеется перечисление, то [...]]]></description>
			<content:encoded><![CDATA[<p>Списки бывают упорядоченные (&lt;ol&gt;) и неупорядоченные (&lt;ul&gt;). Упорядоченные, обычно, отображаются с нумерованным арабскими цифрами маркером. Неупорядоченные могут быть с маркерами вида: закрашенный кружочек, незакрашенный кружочек, закрашенный квадратик (как вижу, так и называю) или любой другой рисунок.</p>
<p>Начнём, с того, что уясним, что же такое список. Проведём аналогию с рукописным текстом. Если в тексте имеется <em>перечисление,</em> то это можно назвать <em>списком.</em> Причём если последовательность перечисленных элементов не зависит от какого-то определённого логического порядка, то этот список является <em>неупорядоченным.</em> Если же от перестановки перечисленных элементов ломается смысл, то такой список называется <em>упорядоченным.</em></p>
<p>Отображение списка в несколько строк предназначено для более удобного и наглядного восприятия. Для списка слегка меняются правила орфографии и пунктуации, но не на столько кардинально. Знаки препинания должны ставиться так, как-будто бы этот список написан в предложении в одну строчку:</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2008/03/ulist1.gif" alt="" /></p>
<p>Отступ от левого края текстового блока до маркера лучше всего задать немного большим, чем высота строки. Отступ от маркера до текста в списке можно оставить по-умолчанию, а можно слегка увеличить.</p>
<p>Упорядоченный список больше подходит для текста технической направленности. Но можно и художественный текст представить в виде упорядоченного списка, только придётся его привести к более строгому виду.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2008/03/olist1.gif" alt="" /></p>
<p>XHTML 1.0 запрещает использование списков внутри абзаца (&lt;p&gt;). На мой взгляд, это является нелогичным. В упомянутых примерах списки относятся к абзацам с началом текста. Если бы список был самостоятельной логической единицей текста, то его логично отделять от абзацев. Но он может быть также продолжением предложения. Для обозначения визуального отношения списка к абзацу следует использовать отрицательные отступы сверху, чтобы убрать лишний отступ от абзаца.</p>
<p>Следует подумать и решить, какой из списков будет чаще использоваться. Самостоятельный или как продолжение предложения? В результате мозгоштурма у вас в CSS-файле появится один из классов: <em>standalone</em> или <em>relative</em> (можно назвать и по-другому, не возбраняется). Соответственно, если элемент &lt;ul&gt; будет использоваться для списков относящихся к предложению, то для класса <em>standalone</em> следует убрать сверху отрицательный отступ. Или наоборот.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2008/03/ulist-standalone.gif" alt="" /></p>
<p>Заметьте, отступы мы поставили одинаковые, что сверху, что снизу, а визуально список чуть ближе к нижнему абзацу. Всё из-за того, что маркеры списков вертикально центрированы по строчным буквам. Кроме того, близость к следующему абзацу добавляет подчёркивание, если в списке присутствуют ссылки. Исправить ситуацию можно добавив снизу расстояние в два—три пикселя.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2008/03/ulist-standalone1.gif" alt="" /></p>
<p>С упорядоченными списками дело обстоит лучше, поскольку в качестве маркеров используются цифры, высота которых, как правило, равна высоте прописной буквы.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2008/03/olist-standalone.gif" alt="" /></p>
<p>Но, опять же, при использовании ссылок в списке, получаем визуальный сдвиг вниз на пару пикселей. Так что, для упорядоченных списков тоже можно добавить снизу такое же расстояние.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2008/03/olist-standalone1.gif" alt="" /></p>
<p>Казалось бы, какие мелочи! А эти мелочи, всё равно чувствуются. В ряде однотипных элементов сдвиньте один из них хоть на пиксель — пользователь может и не увидит, но почувствует дискомфорт. Человеческий глаз на много чувствительней, чем вы думаете. Небольшой дисбаланс в общем ровном ряду элементов раздражает глаз и заставляет обращать на него внимание. В большинстве случаев, это выглядит не как контраст, а как небрежность.</p>
<p><a title="Пример вёрстки упомянутых в статье элементов" href="http://seleckis.lv/wp-content/uploads/2008/03/text-design-3.html">Пример вёрстки упомянутых в статье элементов</a></p>
<p><strong><a href="http://seleckis.lv/journal/web-dizayn/dizayn-teksta-3-5">Продолжение: Вложенные списки, графические маркеры</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/web-dizayn/dizayn-teksta-3-spiski/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Дизайн текста 2: Цитаты</title>
		<link>http://seleckis.lv/journal/web-dizayn/dizayn-teksta-2-tsitatyi</link>
		<comments>http://seleckis.lv/journal/web-dizayn/dizayn-teksta-2-tsitatyi#comments</comments>
		<pubDate>Wed, 19 Mar 2008 23:31:07 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[xhtml/xml]]></category>
		<category><![CDATA[Веб‑дизайн]]></category>
		<category><![CDATA[Типографика]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/web-dizayn/dizayn-teksta-2-tsitatyi</guid>
		<description><![CDATA[Продолжение темы «Дизайн текста».
Если основные моменты рассмотренные в предыдущей статье в той или иной степени учитываются дизайнерами и верстальщиками, то остальные элементы могут остаться без должного внимания или быть совсем проигнорированными. Это в основном касается элементов специфического назначения, или элементов использование которых не является существенно необходимым.
Цитаты
Существует три вида элементов, отвечающих за размещение цитат на веб-странице:

&#60;blockquote&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><em>Продолжение темы «<a href="http://www.seleckis.lv/journal/web-dizayn/dizayn-teksta-1-osnovnoy-tekst-zagolovki-tablitsyi">Дизайн текста</a>».</em></p>
<p>Если основные моменты рассмотренные в предыдущей статье в той или иной степени учитываются дизайнерами и верстальщиками, то остальные элементы могут остаться без должного внимания или быть совсем проигнорированными. Это в основном касается элементов специфического назначения, или элементов использование которых не является существенно необходимым.</p>
<h3>Цитаты</h3>
<p>Существует три вида элементов, отвечающих за размещение цитат на веб-странице:</p>
<ul>
<li>&lt;blockquote&gt; — блок цитаты. Блочный элемент, как правило используемый для публикации большого объёма цитируемого текста;</li>
<li>&lt;cite&gt; — источник цитаты;</li>
<li>&lt;q&gt; — короткая цитата.</li>
</ul>
<p>В основном используют только &lt;blockquote&gt; для вывода целого блока цитируемого текста. Источник этой большой или короткой строчной (&lt;q&gt;) цитаты если и указывают, то только не в элементе &lt;cite&gt;. Может по незнанию, может по непониманию. Но не используют. А зря.</p>
<p>Элементы &lt;q&gt; и &lt;cite&gt; не такие сложные в понимании и использовании, чтобы их не любить. А какой оригинальный внешний вид можно порой им придать! Опять же если бы все веб-разработчики соблюдали стандарты семантической вёрстки, гораздо проще можно было бы настраивать поиск по этим элементам.</p>
<p>Блок цитаты традиционно отображается со втяжкой, источник цитаты — курсивом, а элемент &lt;q&gt; помещает текст в кавычки, которые на самом деле не правильные типографские кавычки, а «программистские». Поэтому нужно не забывать прописывать нечто подобное:</p>
<pre lang="css">/* для русского и латышского языка */
q:before { content: "«" }	q:after  { content: "»" }

q q:before { content: "„" }	q q:after  { content: "“" }
blockquote q:before { content: "„" }	blockquote q:after  { content: "“" } </pre>
<pre lang="css">/* для английского языка */
q:before { content: "“" }	q:after  { content: "”" }</pre>
<pre lang="css">q q:before { content: "‘" }	q q:after  { content: "’" }
blockquote q:before { content: "‘" }	blockquote q:after  { content: "’" } </pre>
<p>Короткая цитата и блок цитаты выглядят обычным текстом. Оба варианта цитаты уместнее всего выглядели бы написанные курсивом, поскольку цитату можно рассматривать как прямую речь, а прямая речь часто выделяется курсивом имитируя рукописный шрифт.</p>
<p>Источник цитаты, не обязательно должен отображаться курсивом, чаще всего в качестве указания источника используется ссылка. Так вот следует ссылку помещать в элемент &lt;cite&gt; и соответственно форматировать так, чтобы было понятно, что это ссылка. Можно слегка изменить, чтобы источник цитаты как-то отличался от обычной ссылки.</p>
<p>В случае, если источник цитаты не опубликован в интернете, его следует выделить особым способом, например, добавить пунктирное подчёркивание, добавить подсказку (tooltip) с разъяснением, где конкретно взят источник, слегка изменить цвет или даже сделать его жирным, но курсив будет неуместен.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2008/03/cite.gif" alt="" /></p>
<p>Если у блока цитаты есть втяжка, то она должна быть с обоих сторон (слева и справа), причём такая, чтобы не было ощущения отрыва от всего стиля и слишком сильной концентрации текста в центре. В тоже время, втяжка не должна быть слишком маленькой, чтобы не возникало ощущение небрежности. Уместно использование графических кавычек в начала и в конце блока цитаты, а так же изменение цвета фона всего блока и добавления границ.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2008/03/blockquote.gif" alt="" /></p>
<p><a title="Пример вёрстки упомянутых в статье элементов" href="http://seleckis.lv/wp-content/uploads/2008/03/text-design-2.html">Пример вёрстки упомянутых в статье элементов</a></p>
<p><strong><a href="http://seleckis.lv/journal/web-dizayn/dizayn-teksta-3-spiski">Продолжение: Списки</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/web-dizayn/dizayn-teksta-2-tsitatyi/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Позиционирование картинок для галереи</title>
		<link>http://seleckis.lv/journal/css/pozitsionirovanie-kartinok-dlya-galerei</link>
		<comments>http://seleckis.lv/journal/css/pozitsionirovanie-kartinok-dlya-galerei#comments</comments>
		<pubDate>Wed, 30 Jan 2008 10:45:23 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[xhtml/xml]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/css/pozitsionirovanie-kartinok-dlya-galerei</guid>
		<description><![CDATA[При просмотре тумбнейлов изображений картинки выстраиваются в таблицу с определённым количеством колонок и строк. Если вёрстка решается с помощью таблицы, то приходится программировать на стороне сервера её разметку, а так же добавлять лишние строчки кода для определения количества фотографий на последней странице, и писать скрипт таким образом, чтобы ячейки таблицы не пропадали. Никому не нужная [...]]]></description>
			<content:encoded><![CDATA[<p>При просмотре тумбнейлов изображений картинки выстраиваются в таблицу с определённым количеством колонок и строк. Если вёрстка решается с помощью таблицы, то приходится программировать на стороне сервера её разметку, а так же добавлять лишние строчки кода для определения количества фотографий на последней странице, и писать скрипт таким образом, чтобы ячейки таблицы не пропадали. Никому не нужная работа.</p>
<p>Решать такие вопросы проще с помощью CSS. Т. е. для разметки картинок для галереи следует использовать предназначенные для этого тэги и размечать их положение и вид с помощью CSS.</p>
<p>Я предлагаю не использовать тэги div с какими-то классами, а предлагаю обратить внимание на списки терминов. Пример из w3schools.com:</p>
<style type="text/css">
dd{
padding-left: 30px;
}
</style>
<dl>
<dt>Coffee</dt>
<dd>Black hot drink</dd>
<dt>Milk</dt>
<dd>White cold drink</dd>
</dl>
<p>реализуется такой список таким образом:</p>
<pre lang="html4strict">
<dl>
<dt>Coffee</dt>
<dd>Black hot drink</dd>
<dt>Milk</dt>
<dd>White cold drink</dd>
</dl>
</pre>
<p>Где dl — список терминов, dt — термин, dd — описание термина.</p>
<p>В случае с картинками для галереи предлагаю рассматривать картинку как термин, а описание картинки, как описание термина. Правильней всего было бы разметить так:</p>
<p><span id="more-1054"></span></p>
<pre lang="html4strict">
<dl>
<dt><img src="im1.jpg" alt="myimage1" /></dt>
<dd>Image 1</dd>
<dt><img src="im2.jpg" alt="myimage2" /></dt>
<dd>Image 2</dd>
<dt><img src="im3.jpg" alt="myimage3" /></dt>
<dd>Image 3</dd>
</dl>
</pre>
<p>Но в таком случае мы не сможем разметить так, чтобы картинки располагались в ряд одна за другой, а описания картинок шли под ними. Поэтому, предлагаю слегка наплевать на семантику и разметить таким образом:</p>
<pre lang="html4strict">
<div class="imagelist">
<dl>
<dt><img src="im1.jpg" alt="myimage1" /></dt>
<dd>Image 1</dd>
</dl>
<dl>
<dt><img src="im2.jpg" alt="myimage2" /></dt>
<dd>Image 2</dd>
</dl>
<dl>
<dt><img src="im3.jpg" alt="myimage3" /></dt>
<dd>Image 3</dd>
</dl>
</div>
</pre>
<p>Теперь каждая картинка и её описание в своём контейнере. Здесь семантику можно оправдать: картинку и её описание, можем назвать списком не зависящим от других списков. Высосанное из пальца оправдание, ну да ладно&#8230;</p>
<h3>CSS</h3>
<p>Теперь, необходимо написать CSS. Причём задача следующая:</p>
<ol>
<li>Картинки должны быть центрированы в блоке фиксированного размера, причём картинки могут быть как портретные, так и ландшафтные;</li>
<li>Размер внешнего блока для картинки и её описания, тоже должен быть фиксированный, поскольку описания могут быть многострочными;</li>
<li>Высота внешнего блока должна быть фиксирована, чтобы в зависимости от количества строк в описании, не возникал разнобой в высоте блоков;</li>
<li>Valid XHTML 1.0 Strict, valid CSS2, no JavaScript</li>
</ol>
<h4>Прокомментирую первую и самую главную задачу.</h4>
<p>Центрирование по горизонтали и вертикали в таблицах в HTML4 решается просто: <strong>align=&#8221;center&#8221; valign=&#8221;absmiddle&#8221;.</strong> В CSS вёрстке это больной воспрос. Если с горизонтальным позиционированием всё понятно, то с вертикальным — проблемы, и проблемы конечно же только в IE. Если в нормальных браузерах, всего-то надо содержащему блоку добавить свойство <strong>display: table-cell</strong> и <strong>vertical-align: middle</strong>, то в IE такой способ не работает. Я предлагаю необычно «тупое», но эффективное решение — установить размер шрифта в блоке с картинкой равным 89% от высоты блока (например, если высота блока 150px, то размер шрифта должен быть 133.5px), а картинке задать <strong>vertical-align: middle;</strong>, т. е. позиционируем картинку по центру относительно высоты шрифта. Данный способ работает только для картинок, для блоков с контентом он не работает (для этого есть другие способы).</p>
<p>Привожу код с комментариями:</p>
<pre lang="css">
.imagelist * {
	margin: 0; padding: 0; /* если не применяется обнуление дефолных настроек браузера */
}
.imagelist dl{
	float: left; /* чтобы картинки шли друг за другом вряд */
	/* красота, размеры, отступы */
	border: 1px solid #CCC;
	background-color: #EEE;
	width: 210px;
	height: 250px;
	padding-left: 9px; /* из-за использования границ (borders) — 9, а не 10 */
	padding-top: 9px;
	margin-right: 20px;
	margin-bottom: 20px;
}
.imagelist dl dt{
	text-align: center; /* поскольку тэг img является строчным,
					то позиционируем его по центру таким способом */
	display: table-cell; /* вертикальное позиционирование */
	vertical-align: middle; /* для нормальных браузеров */
	font-size: 178px; /* 178px = 200 * 89%, то о чём я говорил выше (для IE) */
	line-height: 0px; /* чтобы не было лишних отступов, потому как line-height
				пропорционально увеличивается относительно размера шрифта */
	/* красота, размеры, отступы */
	background-color: white;
	border: 1px solid #DDD;
	width: 200px;
	height: 200px;
}
.imagelist dl dt img{
	vertical-align: middle; /* позиционирование картинки по вертикали  (для IE) */
}
.imagelist dl dd{
	text-align: center;
}
</pre>
<p>И ещё добавим небольшой код исправления для IE6 и ниже, которые ширину блока считают внешней а не внутренней, поэтому ширина блока не складывается с внутренним отступом (padding).</p>
<pre lang="html4strict">
<!--[if lte IE 6]>
<style type="text/css">
	.imagelist dl{
		width: 220px;
		height: 220px;
	}
	</style>

<![endif]-->
</pre>
<p>Вот что в итоге должно получиться:</p>
<p style="text-align: center"><img src='http://www.seleckis.lv/wp-content/uploads/2008/01/image_gallery.jpg' alt='' /></p>
<p><a href='http://www.seleckis.lv/wp-content/uploads/2008/03/index.html' title=''>Смотрите</a>, <a href='http://www.seleckis.lv/wp-content/uploads/2008/01/image_gallery.zip' title=''>качайте</a>, пользуйтесь!</p>
<p>P.S. Число 89% получено опытным путём.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/css/pozitsionirovanie-kartinok-dlya-galerei/feed</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Почему лучше сначала изучить XHTML?</title>
		<link>http://seleckis.lv/journal/xhtml/pochemu-luchshe-snachala-izuchit-xhtml</link>
		<comments>http://seleckis.lv/journal/xhtml/pochemu-luchshe-snachala-izuchit-xhtml#comments</comments>
		<pubDate>Sat, 12 Jan 2008 21:14:31 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[xhtml/xml]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/xhtml/pochemu-luchshe-snachala-izuchit-xhtml</guid>
		<description><![CDATA[Уже почти два года на своих курсах я преподаю именно XHTML, причём 1.0 Strict. Почему?
На мой взгляд, нужно начинать обучение с языка разметки, который содержит правила, порой параноидального характера (как, например, disabled=&#8221;disabled&#8221;). Жёсткие правила вёрстки, как дисциплинируют процесс создания станицы, так и систематизируют сами правила, что способствует более удобному их изучению.
Итак, рассмотрим плюсы и минусы [...]]]></description>
			<content:encoded><![CDATA[<p>Уже почти два года на своих курсах я преподаю именно XHTML, причём 1.0 Strict. Почему?</p>
<p>На мой взгляд, нужно начинать обучение с языка разметки, который содержит правила, порой параноидального характера (как, например, <em>disabled=&#8221;disabled&#8221;</em>). Жёсткие правила вёрстки, как дисциплинируют процесс создания станицы, так и систематизируют сами правила, что способствует более удобному их изучению.</p>
<p>Итак, рассмотрим плюсы и минусы вёрстки XHTML 1.0 и сравним её с вёрсткой в HTML 4.01. Для начала вспомним, чем отличается XHTML от HTML:</p>
<ul>
<li><strong>Общий вид XHTML документа должен состоять из:</strong>
<ul>
<li>декларации типа документа (DOCTYPE);</li>
<li>тэга &lt;html&gt;, который является корневым и уникальным;</li>
<li>тэг &lt;html&gt; должен содержать атрибут xmlns с указанием URI адреса описания пространства имён XHTML;</li>
<li>тэг &lt;html&gt; должен содержать только два элемента — &lt;head&gt; и &lt;body&gt;, причём, &lt;body&gt; пишется после &lt;head&gt;;</li>
<li>тэг &lt;head&gt; должен содержать элемент &lt;title&gt; с заглавием документа.</li>
</ul>
<p>Пример правильного XHTML документа:<br />
<code><br />
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Заглавие документа&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code><br />
<strong>Примечание:</strong><br />
Иногда XHTML-документ может иметь декларацию XML перед декларацией DOCTYPE.<br />
<code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</code><br />
Иногда элемент <strong>&lt;html&gt;</strong> может иметь атрибуты <strong>lang</strong> и<strong> xml:lang</strong> с указанием языка содержимого документа:<br />
<code>&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"&gt;</code></li>
<li><strong>Элементы должны быть с правильным вложением.</strong><br />
HTML допускает:<br />
<code>&lt;b&gt;&lt;i&gt;Этот текст жирный и наклонный&lt;/b&gt;&lt;/i&gt;</code><br />
XHTML допускает только:<br />
<code>&lt;b&gt;&lt;i&gt;Этот текст жирный и наклонный&lt;/i&gt;&lt;/b&gt;</code></li>
<li><strong>Элементы должны быть всегда закрыты.</strong><br />
HTML допускает:<br />
<code>&lt;p&gt;Первый абзац<br />
&lt;p&gt;Второй абзац</code><br />
XHTML допускает только:<br />
<code>&lt;p&gt;Первый абзац&lt;/p&gt;<br />
&lt;p&gt;Второй абзац&lt;/p&gt;</code></li>
<li><strong>Пустые элементы тоже должны быть закрыты.</strong><br />
HTML допускает:<br />
<code>Перенос строки&lt;br&gt;<br />
Следующая строка, а после неё — горизонтальная линия&lt;hr&gt;<br />
Ну, и конечно же, картинка &lt;img src="image.gif" alt="Картинка"&gt;.</code><br />
XHTML допускает только:<br />
<code>Перенос строки&lt;br /&gt;<br />
Следующая строка, а после неё — горизонтальная линия&lt;hr /&gt;<br />
Ну, и конечно же, картинка &lt;img src="image.gif" alt="Картинка" /&gt;.</code></li>
<li><strong>Элементы и атрибуты должны писаться строчными буквами.</strong><br />
HTML допускает:<br />
<code>&lt;BODY&gt;<br />
&lt;P CLASS="my_paragraph"&gt;Абзац на блоге seleckis.lv&lt;/P&gt;<br />
&lt;/BODY&gt;</code><br />
XHTML допускает только:<br />
<code>&lt;body&gt;<br />
&lt;p class="my_paragraph"&gt;Абзац на блоге seleckis.lv&lt;/p&gt;<br />
&lt;/body&gt;</code></li>
<li><strong>Значения атрибутов обязательно должны заключаться в кавычки.</strong><br />
HTML допускает:<br />
<code>&lt;table width=100%&gt;</code><br />
XHTML допускает только:<br />
<code>&lt;table width="100%"&gt;</code></li>
<li><strong>Атрибуты-флаги</strong> (сокращённые атрибуты с одним возможным значением) <strong>должны писаться как обыкновенные атрибуты.</strong><br />
HTML допускает:<br />
<code>&lt;option selected&gt;Выбранный элемент в выпадающем списке&lt;/option&gt;</code><br />
XHTML допускает только:<br />
<code>&lt;option selected="selected"&gt;Выбранный элемент в выпадающем списке&lt;/option&gt;</code></li>
<li><strong>В элементах &lt;a&gt;, &lt;frame&gt;, &lt;img&gt; и &lt;map&gt; атрибут name заменён на id.</strong><br />
HTML допускает:<br />
<code>&lt;img src="image.gif" alt="Картинка" name="pic1"&gt;</code><br />
XHTML допускает только:<br />
<code>&lt;img src="image.gif" alt="Картинка" id="pic1" /&gt;</code></li>
<li><strong>Атрибут lang должен дублироваться с префиксом xml:</strong><br />
<code>&lt;div lang="lv" xml:lang="lv"&gt;Esat sveicināti!&lt;/div&gt;</code></li>
</ul>
<h3>Плюсы</h3>
<ol>
<li>Все тэги закрыты. Не будет путаницы с парными и одинарными тэгами.</li>
<li>Все тэги правильно вложены. Не будет путаницы с вложением — очевидный плюс.<br />
Но он же и минус. В HTML можно было удобно вывернуться:<br />
<code>&lt;b&gt;Жирный текст &lt;i&gt; жирный и наклонный текст&lt;/b&gt; только наклонный текст&lt;/i&gt;.</code><br />
В XHTML нужно писать строго, потому и чуть больше:<br />
<code>&lt;b&gt;Жирный текст &lt;i&gt; жирный и наклонный текст&lt;/i&gt;&lt;/b&gt; &lt;i&gt;только наклонный текст&lt;/i&gt;.</code></li>
<li>Отказ от <strong>name </strong>в пользу <strong>id </strong>считаю правильным, поскольку
<ol>
<li><strong>id</strong> короче,</li>
<li><strong>name</strong> имеет своё особое значение в формах</li>
</ol>
</li>
<li>Логично, что если значение атрибута содержит пробел, то оно должно писаться в кавычках. Но будет проще взять за правило и всегда писать значения атрибутов в кавычках, чтобы опять-таки не было путаницы когда их писать, а когда нет.</li>
<li>Писать прописными буквами элементы, атрибуты и значения атрибутов, считаю таким же дурным тоном, как писать прописными буквами в чатах, на форумах и письмах, поэтому абсолютно солидарен с W3C по этому поводу.</li>
</ol>
<h3>Минусы</h3>
<ol>
<li>Неудобный <strong>DOCTYPE.</strong> Я бы предпочёл параметры документа писать в элементе <strong>&lt;html&gt;,</strong> а адрес описания <strong>namespace </strong>объединить с адресом <strong>DOCTYPE</strong>. Да и адреса бы попроще сделать. Я бы предпочёл писать всё в тэге html и без всяких деклараций:<br />
<code>&lt;html xmlns="http://w3.org/dtd/xhtml" type="text/xhtml-strict" version="1.0" lang="ru"&gt;</code></li>
<li>Зачем дублировать атрибут <strong>lang </strong>с префиксом <strong>xml:</strong> — не понятно.</li>
<li>Атрибуты <strong>checked, readonly, disabled, selected, multiple</strong> по сути возвращают значение <strong>true </strong>или <strong>false</strong>. Так, почему же так не писать? Например:<br />
<code>&lt;option selected="true"&gt;Выбранный элемент выпадающего списка&lt;/option&gt;</code><br />
По-умолчанию, эти атрибуты имеют значение <strong>false,</strong> поэтому можно их не писать, если не нужно обратное.<br />
Могу предложить другой вариант: придумать для этих значений отдельный атрибут, например — <strong>view</strong> или <strong>flag</strong>:<br />
<code>&lt;input type="text" view="disabled" /&gt;</code><br />
Если нужно написать два значения, пишем через пробел (как классы):<br />
<code>&lt;input type="checkbox" view="checked disabled" /&gt;</code></li>
</ol>
<p>К сожалению к моим «брызгам разума» никто из W3C не прислушается.</p>
<p>А какие плюсы и минусы вы находите в xhtml?</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/xhtml/pochemu-luchshe-snachala-izuchit-xhtml/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Silverlight и XML (XAML), как объектная модель приложения</title>
		<link>http://seleckis.lv/journal/cms/silverlight-i-xml-xaml-kak-ob-ektnaya-model-prilozheniya</link>
		<comments>http://seleckis.lv/journal/cms/silverlight-i-xml-xaml-kak-ob-ektnaya-model-prilozheniya#comments</comments>
		<pubDate>Sun, 06 Jan 2008 10:52:01 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[xhtml/xml]]></category>
		<category><![CDATA[Технологии]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/texnologii/silverlight-i-xml-xaml-kak-ob-ektnaya-model-prilozheniya</guid>
		<description><![CDATA[В прошлом году был на презентационной лекции Microsoft. Тема презентации была связана с новыми продуктами и технологиями этой компании, а точнее с Software + Service и Silverlight. На первое я опоздал, поэтому ничего сказать не могу. А второе было весьма интересно.
Зацепило
О Silverlight 1.0 говорить нечего. Тот же Flash, только элементы в приложении описаны с помощью [...]]]></description>
			<content:encoded><![CDATA[<p>В прошлом году был на презентационной лекции Microsoft. Тема презентации была связана с новыми продуктами и технологиями этой компании, а точнее с Software + Service и Silverlight. На первое я опоздал, поэтому ничего сказать не могу. А второе было весьма интересно.</p>
<h3>Зацепило</h3>
<p>О Silverlight 1.0 говорить нечего. Тот же Flash, только элементы в приложении описаны с помощью XAML, что позволяет индексировать содержимое, и не имеет своего скрипта, а использует JavaScript. Зная, как IE обрабатывает JS можем предположить, на сколько может быть популярной эта версия.</p>
<p>Логично, что MS не стали оптимизировать обработку JS в своём браузере, а пошли другим путём. А точнее&#8230;</p>
<h3>Silverlight 1.1</h3>
<p>Эта версия может иметь программную составляющую написанную на любом .NET или web-языке (С#, Visual Basic, PHP, Ruby и др.). Т.е. получив доступ к элементам в приложении через описание XAML, можно забыть про JavaScript и писать на своём любимом языке. Потом это каким-то образом экспортируется в свой формат исполняемый маленьким фреймворком установленным на компьютере пользователя вместе с Silverlight-плагином для браузера. Я не буду вдаваться в подробности, о том как это всё работает, меня это не интересует.</p>
<p>Лектор озвучил плюсы:</p>
<ul>
<li>Очень маленький размер файла плагина</li>
<li>Быстрая обработка видео</li>
<li>Быстрая обработка скрипта</li>
</ul>
<p>Я не буду искать опровержений или подтверждений данным высказываниям. Скажу лишь, что для создания аналоговых часов, лектор скопировал около 200 строчек C# кода, и ещё около 100 XAML кода. Многовато что-то&#8230;</p>
<h3>XML based structure</h3>
<p>Так, всё-таки что же меня зацепило? А сам принцип. С принципом описания структуры элементов в XML языке и управления им через скрипт я столкнулся в TYPO3 в плагине TemplaVoila!. Плагин позволяет взять HTML шаблон, отметить на нём «горячие» тэги, дать им соответствующие уникальные имена для того, чтобы можно было ими управлять (помещать контент, настраивать внешний вид) в TypoScript.</p>
<p>К примеру:</p>
<ul>
<li>Отметим на сайте какой-то тэг, например &lt;div id=&#8221;sidebar&#8221;&gt;&#8230;&lt;/div&gt;.</li>
<li>Дадим ему уникальное имя: lib.sidebar (lib —глобальный  объект содержащий внутренние объекты на странице). </li>
<li>В XML структуре запишется (причём самому ничего не надо писать):
<pre lang="xml">
<field_sidebar type="array">
	<tx_templavoila type="array">

		<description>Just place some content in sidebar</description>
		<sample_data type="array">
			<numIndex index="0">[ ### Sidebar goes here ### ]</numIndex>
		</sample_data>
		<eType>TypoScriptObject</eType>
		<tags>div:inner</tags>
		<TypoScriptObjPath>lib.sidebar</TypoScriptObjPath>
	</tx_templavoila>
</field_sidebar></pre>
</li>
<li>А в TypoScript можем описать, какого типа это будет объект и что же он должен содержать:<br />
<code>lib.sidebar = TEXT<br />
lib.sidebar .value = Hello, world!</code>
</li>
</ul>
<p>Наверное, я мало изучал различные технологии, и не знаю, что такой способ описания объектной модели приложения используется давно, но ведь как, чёрт возьми, правильно.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/cms/silverlight-i-xml-xaml-kak-ob-ektnaya-model-prilozheniya/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>XHTML 1.1 невалидный код в официальном примере</title>
		<link>http://seleckis.lv/journal/xhtml/xhtml-1-1-nevalidnyiy-kod-v-ofitsialnom-primere</link>
		<comments>http://seleckis.lv/journal/xhtml/xhtml-1-1-nevalidnyiy-kod-v-ofitsialnom-primere#comments</comments>
		<pubDate>Thu, 11 Oct 2007 21:12:29 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[xhtml/xml]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/xhtml/xhtml-1-1-nevalidnyiy-kod-v-ofitsialnom-primere</guid>
		<description><![CDATA[В официальном описании определения XHTML 1.1 есть такой пример структуры документа:
&#60;?xml version="1.0" encoding="UTF-8"?&#62;
&#60;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&#62;
&#60;html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd"
xml:lang="en" &#62;
&#60;head&#62;
&#60;title&#62;Virtual Library&#60;/title&#62;
&#60;/head&#62;
&#60;body&#62;
&#60;p&#62;Moved to &#60;a href="http://example.org/"&#62;example.org&#60;/a&#62;.&#60;/p&#62;
&#60;/body&#62;
&#60;/html&#62;
Сохранив в файл index.xhtml, я решил проверить его на валидность онлайновым валидатором от W3C.

Т. е. валидатор забраковал xsi:schemaLocation=&#8221;http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd&#8221;
Если я убераю атрибут  xsi:schemaLocation, то меня поздравляют с валидным кодом.

Спрашивается, как правильно? Так [...]]]></description>
			<content:encoded><![CDATA[<p>В <a href="http://www.w3.org/TR/xhtml11/conformance.html" target="_blank">официальном описании определения XHTML 1.1</a> есть такой пример структуры документа:</p>
<p><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"<br />
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd"<br />
xml:lang="en" &gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Virtual Library&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;p&gt;Moved to &lt;a href="http://example.org/"&gt;example.org&lt;/a&gt;.&lt;/p&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code></p>
<p>Сохранив в файл <em>index.xhtml</em>, я решил проверить его на валидность <a href="http://validator.w3.org/" target="_blank">онлайновым валидатором от <strong>W3C</strong></a>.</p>
<p style="text-align: center"><img src="http://www.seleckis.lv/wp-content/uploads/2007/10/error.png" /></p>
<p>Т. е. валидатор забраковал <strong>xsi:schemaLocation=&#8221;http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd&#8221;</strong></p>
<p>Если я убераю атрибут  <strong>xsi:schemaLocation</strong>, то меня поздравляют с валидным кодом.<strong><br />
</strong></p>
<p>Спрашивается, как правильно? Так как написано в спецификации или как требует валидатор?</p>
<p>P. S.  Завтра улетаю на BlogCamp, вернусь в воскресенье. Если успею, то в понедельник напишу отчёт о поездке в Киев и конференции.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/xhtml/xhtml-1-1-nevalidnyiy-kod-v-ofitsialnom-primere/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

