[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.45745 Reply
File: 1.gif
Gif, 113.64 KB, 784×275 - Click the image to expand
edit Find source with google Find source with iqdb
1.gif
Первый пост здесь: >>44930
Тема сегодняшней лекции - XML, HTML, доктайпы.

SGML-подобные языки разметки
На заре Эпохи Юникс (1970-е годы), когда компьютеры были большими, а программы - маленькими, компания IBM была лидером IT-индустрии; на её долю приходилась основная часть правительственных заказов США, связанных с обработкой информации с помощью компьютеров. На Голубого Гиганта работали сотни инженеров и десятки архитекторов. Естественно, что все эти люди нуждались в одном стандартном формате хранения данных.

Форматов в ту пору использовалось достаточно много, но все они описывали структуру документа с данными на очень низком уровне (например, первые два байта - версия формата, вторые два байта - число записей в документе и т.д.). Разумеется, работать с такими форматами было неудобно, требовалось сидеть с калькулятором и выполнять много нудной и однообразной работы. IBM'щики стали "чесать репу" и пытаться улучшить ситуацию.

В качестве одного из возможных вариантов улучшения ситуации с хранением данных был предложен переход на высокоуровневый язык описания документа (это когда нас не волнует представление документа непосредственно в памяти компьютера на уровне байтов, описывается только самое важное). Одним из высокоуровневых языков был GML, который позже развился в SGML.

Сутью SGML являлось отделение мух от котлет, а данных - от поля, в котором они лежат. Фактически, документ SGML можно представить в виде таблицы:
|---------------|-----------------|
| НАЗВАНИЕ ПОЛЯ | ДАННЫЕ          |
|---------------|-----------------|
| поле1         | значение поля 1 |
|---------------|-----------------|
| поле 2        | значение поля 2 |
|---------------|-----------------|
| ...           | ...             |
Кроме того, разработчики SGML реализовали ещё одну, революционную идею: данными, лежащими в ячейке, может быть другая таблица данных! Это позволило структурировать документ и сделать его иерархичным.

Вот пример синтаксиса SGML:
...служебная информация SGML, не буду её приводить...
<поле0>
    <поле1>
        Значение поля 1
    </поле1>
    <поле2>
        Значение поля 2
    </поле2>
</поле0>
Достаточно наглядно, не правда ли?


Недостатки SGML
Несмотря на то, что язык SGML был достаточно удобен, пользоваться им было тяжело. Язык предоставлял слишком много возможностей, что породило зоопарк документов, не похожих друг на друга. Верстальщик с невысокой квалификацией (а таких всегда было и будет большинство) не всегда достаточно быстро понимал документ, созданный другим верстальщиком. Поэтому на свет появилось много языков, копирующих основы SGML, но отличающихся от него в каких-то деталях. В настоящее время собственно формат SGML употребляется нечасто, вместо него используются его потомки, такие как XML, HTML, XHTML.


Доктайпы
Так как SGML-подобных форматов стало много, потребовалось как-то отличать их друг от друга. Решено было указывать язык, с помощью которого размечен документ, в специальном элементе, идущим по порядку самым первым. Такой элемент стали называть доктайпом (от слов документ и тип).
Выглядит он примерно следующим образом:
<!DOCTYPE html [всякая разная информация]>
Например, доктайп для стандартного режима рендеринга документа в соответствии с форматом HTML 4.01 выглядит так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
В описании формата HTML 2 не было жёсткого требования того, чтобы документ имел доктайп. Именно поэтому многие из веб-разработчиков до сих пор не указывают доктайп. Предполагается, что если доктайп не установлен, документ будет рендериться в режиме "совместимости".
Вообще, в HTML доктайп играет очень важную роль, ведь именно на основании доктайпа браузер определяет, как рисовать документ. Неправильное использование доктайпа может испортить много крови верстальщику. Сведения о том, как доктайпы влияют на режимы рендеринга, можно найти по ссылкам в конце этого поста.
>> No.45746 Reply
HTML
В 1989 году лобастые учёные из ЦЕРНа (та же самая контора, которая построила большой адронный коллайдер) сделали удобный язык для хранения и представления документации по своим ядерным штучкам. За основу был взят SGML, но существенно упрощённый. Во-первых, нельзя было указывать произвольные имена тегов; стал доступен всего лишь небольшой набор тегов - <b>, <p>, <a> и др. Во-вторых, регистр, в котором были набраны теги, не имел роли. Можно было писать,например, <A></a>, и это написание являлось корректным. В-третьих, при рендеринге документа в формате HTML игнорировались несколько подряд идущих пробельных символов (они заменялись одним пробелом), переносы строк с помощью символа \n (этот специальный символ в текстовых редакторах обычно вставляется, когда нажимают на ENTER, означает конец строки), символы табуляции \t и так далее. Форматировать документ надлежало с помощью тегов.
Рендерится HTML-документ с помощью специальной программы, браузера.


Совершенно внезапно в начале девяностых годов появился интернет, и ещё более внезапно самой популярной службой интернета стала Всемирная Паутина. Настолько популярной, что теперь WWW и интернет де-факто синонимы.
Сутью всемирной паутины являются гипертекстовые странички, связанные друг с другом с помощью гиперссылок (или,попросту говоря, ссылок).
Для описания веб-страничек стали использовать, не мудрствуя лукаво, всё тот же HTML.
Однако тут же возникла проблема: браузеров стало много, а тегов стало не хватать. Каждый производитель браузеров стал лепить поддержку своих собственных тегов, и в итоге HTML стал скатываться в треш и анархию. Для преодоления такой ситуации крупнейшие браузероделы объединились в консорциум по стандартизации и в 1995 году создали первую официальную версию языка HTML под названием "HTML 2". Цифра 2 была использована, чтобы отличить новую версию формата от уже имеющегося на рынке зоопарка.

В настоящий момент актуальной версией языка HTML является HTML 4.01. Работы над HTML 5 не завершены.


Основные теги HTML 4.01
Про структуру документа в формате HTML я уже рассказывал во введении. Сейчас сосредоточусь на деталях.

HTML-страница может быть двухтипов: страницей с фреймами и страницей, непосредственно содержащей контент.

Для информации о HTML-документах используется тег <META>, расположенный где-то между <HEAD> и </HEAD>. Он имеет четыре основных атрибута:
name - имя метатега - указывает на его назначение;
content - устанавливает значение метатега
charset - кодировка (см.ниже),
http-equiv - установка HTTP-заголовка (об этих заголовках я расскажу в курсе PHP).

Так как HTML-документ - это обычный текстовый файл, то он может быть в разных кодировках - windows-1251, koi8-r, utf8, etc.
Для указания кодировки документа используется тег meta примерно вот такого вида:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Атрибут name может иметь, вообще говоря, любое поддерживаемое браузером значение. Неподдерживаемые браузером значения игнорируются. Значения атрибута name:
author - автор документа
keywords - ключевые слова, встречающиеся на странице; разделены запятыми. Когда-то использовались поисковыми сервисами, но с появлением SEO-шников поисковики забили на ключевые слова.
description - подробное описание страницы.
generator - программа, с помощью которой создана страница, или название движка.
language - язык страницы.

Например:
<meta name="generator" content="Hanabira 【花びら】 0.5.1225">
<meta name="language" content="ru">
<meta name="keywords" content="hanabira board chan">
<meta name="description" content="Доброчан - анонимный имиджборд об аниме">
Для линковки со страницей каких-либо ресурсов, например, фавиконки (иконки, ображающейся в адресной строке браузера), JS-скриптов, CSS-файлов и т.д. используется тег <LINK>.
Так,
<link rel="shortcut icon" href="http://dobrochan.ru/favicon.ico">
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
установит для страницы фавиконку, лежащую по адресу http://dobrochan.ru/favicon.ico . Два тега с разными rel'ами нужны потому, что в разных браузерах загрузка фавиконки реализована по-разному.

Кстати об адресации. Так как WWW предполагает наличие гиперсвязи одного элемента с другим, то WWW-элемент (страница, картинка, ресурс) обязан иметь точный адрес. Адрес может быть двух типов: абсолютный (начинается с http:// и точно описывает местоположение) и относительный (вычисляется относительно текущей папки; актуален, как правило, только в пределах одного сервера).
Текущая папка обозначается символом точки . , в качестве обозначения каталога верхнего уровня используются две точки .., в качестве разделителя используется прямой слеш /
<link rel="shortcut icon" href="http://dobrochan.ru/favicon.ico">
<link rel="shortcut icon" href="./favicon.ico">
...
обозначает путь к одному и тому же файлу с иконкой (при условии, что страничка и иконка лежат в одной папке).



<body></body> - главный тег страницы с элементами. Внутри него должны быть расположены все остальные теги, содержащие рисуемые элементы.
атрибуты:
alink - увет активной ссылки (активной ссылка становится, когда по ней кликнули, но курсор мыши ещё не отпущен)
bgcolor - фоновый цвет
link - цвет ссылок
vlink - цвет посещённых ссылок
text - цвет текста
background - задаёт фоновый рисунок страницы (абсолютная или относительная адресация).
Управлять внешним видом body с помощью атрибутов не рекомендуется, нужно использовать CSS.

Теги содержания:
<P></P> - вставляет на страницу абзац текста.
атрибуты: align - выравнивание.
align="left" - по левому краю, right - по правому, center - по центру, justify - по ширине.

<BR> - перенос строки.
<B></B> - делает текст полужирным.
<I></I> - курсив.
<U></U> - подчёркивание.
<S></S> - зачёркивание.
<SMALL></SMALL> - маленький текст.
<SUB></SUB> - текст ниже baseline
<SUP></SUP> - текст выше baseline
<CENTER></CENTER> - центрированный текст
<H1></H1> - заголовок первого приоритета.
<H2></H2> - заголовок второго приоритета.
...
<H6></H6> - заголовок шестого приоритета.
<H4>Евгений Онегин</H4>
<P>
Мой дядя самых честных правил, <br>
Когда не в шутку занемог,<br>
Он уважать себя заставил<br>
И лучше выдумать не мог.
</P>
<P>
Его пример &mdash; другим наука;<BR>
Но, боже мой, какая скука <BR>
С больным сидеть и день, и ночь<BR>
Не отходя ни шагу прочь!
</P>
&mdash; - это так называемый HTML-мнемоник, вставляющий тире.

<A></A> - делает всё внутри себя гиперссылкой.
Атрибуты:
href - указание на другую страницу (абсолютный/относительный адрес) или на якорь.
name - устанавливает якорь на этой же самой странице; якори используются для перехода их одного места страницы в другое.
<A name="anchor1">Тут может быть текст, а может и не быть</A>
<P>Большой блок текста</P>
<A href="#anchor1">Наверх</A>
<A href="http://google.ru/">в гугл!</A>
<IMG> вставляет на страницу картинку.
Атрибуты:
ширина width - выставляется либо в пикселях, либо в процентах от ширины родительского контейнера.
высота height - аналогично ширине;
замещающий текст alt - отображается на месте картинки в случае, когда загрузка картинок отключена в браузере.
всплывающая подсказка title - содержит текст, который появляется при наведении на картинку мышки. Если не установлен, в качестве всплывающей подсказки используется текст из alt.
border - управляет толщиной рамки картинки. Ели рисунок является гиперссылкой, то в некоторых браузерах вокруг него появится синяя рамка. Чтобы её прибить, нужно всего лишь установить её толщину в нуль.

И сразу же примечание. Внешним видом элементов лучше управлять не с помощью width, height, align и border, а устанавливать их с помощью CSS-стилей.


<FONT></FONT> - управляет шрифтом на веб-странице. Устарел. Вместо него лучше использовать CSS.

Атрибуты:
color - цвет текста
size - размер букв в уе от 1 до 7
face - имя шрифта
<FONT size="5" color="FF0000" face="Arial">Красный текст.</FONT>
<TABLE></TABLE> - вставляет на страницу таблицу.
атрибуты:
width, height - ширина или высота
background - фоновая картинка
bgcolor - фоновый цвет
border - толщина рамки. Таблицы с рамкой нулевой толщины часто используются для вёрстки.
cellpadding - отступ от рамки до содержимого ячейки.
cellspacing - просветы между ячейками
rules - способ рисования рамки (см. в ссылках в конце поста)

<THEAD></THEAD> - нужен для хранения одной или нескольких строк, составляющих "шапку" таблицы
<TBODY></TBODY>
<TFOOTER></TFOOTER> - подвал таблицы
Деление на шапку/тело/подвал чисто декоративное и не является обязательным, браузер в состоянии подставить <TBODY> автоматически.

<TR></TR> - контейнер-строка, должен содержать ячейки.
<TD></TD> - ячейка таблицы.
<TH></TH> - ячейка для заголовков.

Пример таблицы:
<table cellpadding="10" border="1">
    <tr>
        <th width="75%">Политическая партия</th>
        <th width="25%">% голосов</th>
    </tr> 
    <tr>
        <td>КПРФ</td>
        <td>30%</td>
    </tr>
    <tr>
        <td>Яблоко</td>
        <td>14%</td>
    </tr>
    <tr>
        <td>Единая Россия</td>
        <td>20%</td>
    </tr>
    <tr>
        <td>ЛДПР</td>
        <td>15%</td>
    </tr>
   <tr>
        <td>СР</td>
        <td>20%</td>
    </tr>
</table>
<LI></LI> - элемент нумерованного или маркированного списка.

Нумерованный список OL.
Атрибуты: type - тип нумерации. A | a | I | i | 1
   - соотв. большие лат.буквы, маленькие лат.буквы, большие римские цифры, маленькие римские цифры, арабские цифры.
start - номер, с которого будет начинаться список.

<UL></UL>
атрибуты:
type - тип маркера. "disc | circle | square" - пулька, кружочек, квадратик.
<h4>Серия "Гарри Поттер"</h4>
<ol>
    <li>Философский камень</li>
    <li>Тайная комната</li>
    <li>Узник Азкабана</li>
    <li>Кубок огня</li>
    <li>Орден феникса</li>
    <li>Принц-полукровка</li>
    <li>Роковые мощи</li>
</ol>

<br>

<h4>Доброчан-это</h4>
<ul>
<li>Стильно</li>
<li>Познавательно</li>
<li>Чай с крендельками!</li>
</ul>
>> No.45747 Reply
Фреймы
Веб-страница может не содержать собственного контента и быть разбита на несколько частей, называемых фреймами. В каждую страницу грузится какой-нибудь веб-ресурс, например, другая веб-страница. Вообще говоря, использование фрймов сейчас считается архаизмом, и в моде всякие аяксовые движки, но я всё же расскажу про фреймы. Точнее, покажу на примере.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!-- ставим доктайп с поддержкой фреймов -->
<html>
    <head>
    <title>Тег FRAMESET</title>
</head>

<frameset rows="210,*">
    <frame src="http://dobrochan.ru/frame.xhtml" name="list" scrolling="auto" noresize>
    <frame src="http://dobrochan.ru/u" name="board">
</frameset>

</html>
Этот код разобъёт страницу на два фрейма, один - шириной 20%, ширина другого вычислится автоматически.
Прошу обратить внимние на одну осбенность, а именно на то, что ссылки из фрейма list открываются не в этом же самом фрейме, а во фрейме в именем board. Такой эффект достигается с помощью использования атрибута target в теге A.
<!--код из страницы во фрейме list -->
<a target="board" href="http://dobrochan.ru/u/index.xhtml">
/u/ниверситет
</a>
XML
Естественная эволюция документов в формате SGML привела к появлению языка разметки под названием XML. Он чуть более строг, чем SGML, менее гибок и потому более спецефичен. Сейчас этот язык (+XLink, +XPath) является самым популярным стандартом разметки текстовых документов с данными, поддерживается прошивками многих устройств и вообще очень популярен.
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<RootElement>
    <element1></element1>
    <element2 attr21="" />
</RootElement>
Особенностями XML являются отсутствие доктайпа (вместо него используется доктапоподобное "объявление" <?xml > ), требование обязательно закрывать все теги (одиночные теги описываются с помощью структуры вида <имя тега ...атрибуты... /> ) и единственный корневой элемент, все остальные элементы документа должны быть расположены внутри корневого элемента. Пример неправильного xml с двумя корневыми элементами:
<?xml version="1.0" encoding="UTF-8"?>
<описаниеняшек><!-- первый корневой -->
    <няшка1 />
</описаниеняшек>

<ещё_одно_описание_няшек><!-- второй корневой -->
</ещё_одно_описание_няшек>
XHTML
Проницательный читатель уже догадался, что HTML и XML принципиально несовместимы. Этот факт печалит не только веб-мастеров, но и консорциум по стандартизации.
Для преодоления несовместимости было решено разработать новый язык разметки, который долженбыл бы прийти на смену HTML; этот язык (по задумке) должен был бы являться подмножеством языка XML.
В принципе, у консорциума получилось реализовать главные задачи в языке разметки под названием XHTML.
главные особенности этого языка: это, если говорить попросту, HTML, подчиняющийся правилам XML. Все имена тегов и атрибутов должны записываться маленькими буквами, все теги, включая одиночные, должны быть закрыты, значения атрибутов обязательно должны быть в кавычках, а встречающиеся в теле страницы спецсимволы (например, & и <>) должны быть заменены мнемониками.

Большинство верстальщиков проигнорировало этот язык, и в итоге W3C на него забило, переключившись на HTML 5.

HTML 5
Отличается от HTML 4 тем, что будут исключены элементы center, font, frame, framesetи некоторые другие, зато появятся video, audio, canvas, progress, time, command и др.

XHTML5
HTML5, соответствующий требованиям XHTML.

Список некоторых доктайпов:
Режим совместимости - без доктайпа

Строгий синтаксис HTML 4.01:
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
Переходный синтаксис HTML 4.01:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
С фреймами, HTML 4.01:
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
 "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 строгий:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 переходный:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 с фреймами:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.0 мобайл:
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

XHTML 1.1:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

HTML 5:
<!DOCTYPE html>
>> No.45748 Reply
>> No.45750 Reply
File: tatoo-html.jpg
Jpg, 73.30 KB, 300×300 - Click the image to expand
edit Find source with google Find source with iqdb
tatoo-html.jpg
>>45745
Темы следующих лекций: CSS, JavaScript, DOM, JQuery.

Спасибо за внимание. Задавайте вопросы.
>> No.45756 Reply
>>45750
почему не раскрыта тема многословности и ненужности XML?
>> No.45758 Reply
>>45756
Но ведь XML нужен же, в него вложено весьма много средств и на нём основывается слишком много форматов. Тот же XHTML, SVG, FB2, конфиги дотнета... Схемы, опять же, очень няшная вещь.
Многословность - бич всех SGML-подобных языков.
>> No.45760 Reply
Добавил в избранное.
>> No.45824 Reply
>>45758
SVG - сраное перегруженное нестандартизируемое говно.
>> No.45833 Reply
>>45824
Докажи это или уходи.
>> No.45838 Reply
>>45833
QT, librsvg и inkscape рендерят его по-разному.
>> No.45841 Reply
File: z_cb9e2e7e.jpg
Jpg, 216.97 KB, 600×849 - Click the image to expand
edit Find source with google Find source with iqdb
z_cb9e2e7e.jpg
>>45838
Да, чертовски хорошее доказательство.
>> No.45847 Reply
>>45838
Жопу с пальцем не сравнивай же
>> No.46088 Reply
Бумп.
>> No.46106 Reply
>>46088
Не сегодня, я на митинге, тут хорошо и продают очень вкусные бутерброды с настоящей аджикой.
ОП
>> No.46320 Reply
>>46106
As you wish. Я просто поднял тред.
>> No.46322 Reply
File: html_for_food_thumbnail.jpg.jpg
Jpg, 55.80 KB, 420×450 - Click the image to expand
edit Find source with google Find source with iqdb
html_for_food_thumbnail.jpg.jpg
>>46320
Бутерброды были вкусными, кстати. Хотеть больше митингов.

Послезавтра запилю продолжение.
>> No.46555 Reply
File: dcb74224f218f22d7338fab25c4518d8.png
Png, 468.82 KB, 700×600 - Click the image to expand
edit Find source with google Find source with iqdb
dcb74224f218f22d7338fab25c4518d8.png
>>46322
Однако бутерброды оказались отравлены.
Либо опа замели.
сорока район


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]