Реализация семантической разметки средствами JavaScript
Реализация семантической разметки средствами JavaScript
Давайте еще раз перечислим, что попадет в раздел "См. также" каждой Web-страницы.
— Гиперссылки на Web-страницы, описывающие теги HTML и атрибуты стиля CSS со сходным назначением.
— Гиперссылки на Web-страницы с примерами применения данного тега или атрибута стиля.
— Гиперссылки на Web-страницы с описаниями тегов и атрибутов стиля, присутствующих в данном примере.
Раздел "См. также" будет генерироваться программно, специальным Web-сценарием. Генерироваться он будет на основе каких-то данных — это очевидно. Но каких?
В главе 18 мы создали базу данных, хранящую список всех Web-страниц нашего Web-сайта с их интернет-адресами и краткими названиями. На ее основе создаются вложенные списки в полосе навигации; краткие названия Web-страниц превращаются в тексты пунктов, а их интернет-адреса становятся интернет-адресами гиперссылок, помещаемых в эти пункты.
Напрашивается решение: для каждой Web-страницы создать подобную, но "локальную" базу данных, которая будет хранить список связанных Web-страниц. Тогда мы сможем написать Web-сценарий, который "просмотрит" эту базу данных и в итоге создаст раздел "См. также". Мы уже проделали такое в той же главе 18, значит, сделаем еще раз.
Мы не будем хранить в "локальной" базе данных полное описание этих Web-страниц, с краткими названиями и интернет-адресами. Как уже говорилось в главе 18, это нерационально. Лучше хранить в ней индексы соответствующих элементов "глобальной" базы данных, хранящейся в файле data.js, и какой-либо признак, указывающий, в каких именно массивах, составляющих "глобальную" базу данных, находятся эти элементы. Тогда мы избежим многократного повторения одних и тех же сведений в разных базах данных.
А если (как в нашем случае) элементы "глобальной" базы данных хранят конфигураторы, или вообще экземпляры объектов, задача значительно упрощается. Вспомним, что говорилось в главе 14: переменная с экземпляром объекта фактически хранит ссылку на него, а при присваивании ее значения другой переменной выполняется присваивание именно ссылки — экземпляр объекта при этом не дублируется. Значит, мы можем присвоить элементам "локальной" базы данных экземпляры объектов, которые извлечем из соответствующих элементов "глобальной" базы данных.
Фактически мы реализуем семантическую связь между "локальными" и "глобальной" базами данных средствами JavaScript. Это будет связь типа "метка — собственно данные".
"Локальную" базу данных мы также оформим в виде Web-сценария, который объявляет соответствующий массив (или массивы), и сохраним его в том же файле, в котором хранится HTML-код Web-страницы (точнее, подгружаемого фрагмента содержимого). Так будет проще — на одну Web-страницу будет приходиться один файл, а не два.
Но тут возникает большая проблема. Дело в том, что средства подгрузки содержимого, предоставляемые Web-обозревателем, не выполняют ни хранящиеся в подгружаемом фрагменте внутренние Web-сценарии, ни привязанные к нему внешние. Это сделано ради безопасности.
Что же нам делать?
Поместить связанные данные, на основе которых будет формироваться раздел "См. также", прямо в "глобальную" базу данных. Для этого мы создадим в конфигураторах, описывающих отдельные Web-страницы, еще одно свойство — related. Оно будет хранить массив элементов массивов aHTML, aCSS и aSamples, описывающих связанные Web-страницы. Это свойство мы сделаем необязательным, т. е. в каких-то случаях его можно не указывать, и Web-сценарий, создающий раздел "См. также", сработает правильно.
Так мы создадим семантические связи типа "главный — подчиненный". В качестве связи будет выступать механизм массивов JavaScript.
Сказано — сделано! Откроем файл Web-сценариев data.js, найдем в нем место, где заканчивается код, который объявляет массивы aHTML, aCSS и aSamples, и вставим туда такое выражение:
aHTML[0].related = [aHTML[4], aHTML[7], aHTML[10]];
Мы взяли первый элемент массива aHTML (с индексом 0), добавили к хранящемуся в нем конфигуратору свойство related и присвоили этому свойству массив из трех конфигураторов, хранящихся в пятом, восьмом и одиннадцатом элементах (индексы 4, 7 и 10) того же массива. Таким образом мы указали, что для Web-страницы с описанием тега <!DOCTYPE> связанными являются Web-страницы с описаниями тегов <HEAD>, <META> и <TITLE>.
Но почему мы написали это выражение после кода, объявляющего все элементы массивов aHTML, aCSS и aSamples? Да потому, что перед тем, как присваивать какой- либо переменной или элементу массива экземпляр объекта, его нужно создать. Иначе данная переменная или элемент массива получит значение undefined, что нам совсем не нужно.
После этого выражения добавим такое:
aHTML[8].related = [aHTML[3], aHTML[9], aCSS[0]];
Здесь мы указали, что для Web-страницы с описанием тега <P> (именно эту Web- страницу описывает элемент массива aHTML с индексом 8) связанными являются Web-страницы с описаниями тегов <EM> и <STRONG> и атрибута стиля border.
Аналогично укажем связанные данные для остальных Web-страниц нашего Web- сайта. Необязательно для всех — хотя бы для нескольких, чтобы только проверить, как все это работает.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
1. Краткая история разметки
1. Краткая история разметки HTML – связующий язык Всемирной паутины. С помощью простых тегов, которые содержит этот язык, род человеческий сумел создать ошеломительно разнообразную сеть документов, связанных между собой гиперссылками – от Amazon, eBay и Wikipedia до личных
2.4. Интеграция со средствами разработки ПО
2.4. Интеграция со средствами разработки ПО Обычно, программный продукт проходит стадии разработки, представленные на рис. 3. Рис. 3. Стадии разработки ПОВ [24] описан способ, позволяющий уменьшить общее время разработки программного продукта за счет объединения средств
3.4. Интеграция со средствами разработки ПО
3.4. Интеграция со средствами разработки ПО При мониторинге особое внимание уделяется работе псевдоагентов, которые закладываются в код программы на этапе компиляции. Для их успешной работы по сбору необходимой информации требуется наличие на целевой машине ряда
Реализация семантической разметки средствами JavaScript
Реализация семантической разметки средствами JavaScript Давайте еще раз перечислим, что попадет в раздел "См. также" каждой Web-страницы.— Гиперссылки на Web-страницы, описывающие теги HTML и атрибуты стиля CSS со сходным назначением.— Гиперссылки на Web-страницы с примерами
12.2. Работа со средствами восстановления на установочном DVD
12.2. Работа со средствами восстановления на установочном DVD Запуск средств восстановления при загрузкеВсе необходимые средства для диагностики и устранения неисправностей при загрузке системы имеются на установочном DVD Windows Vista. Чтобы запустить средства восстановления
Инструменты дисковой разметки и форматирования
Инструменты дисковой разметки и форматирования Как было сказано во вступительном очерке, далее речь пойдёт о прикручивании специальных систем размещёния данных к уже установленной системе. И любой из этих процессов в этом случае начинается с разметки разделов под них,
Опции для работы с аппаратными средствами
Опции для работы с аппаратными средствами В меню Network Device Support содержатся опции, определяющие взаимодействие системы с различными сетевыми устройствами. Самые важные из этих опций управляют использованием драйверов сетевых карт. Несмотря на то что в настоящее время
Глава 6 Аутентификация средствами Kerberos
Глава 6 Аутентификация средствами Kerberos В системе Linux обычно используется локальная аутентификация. Пользователь вводит имя и пароль, а компьютер ищет соответствующие данные в своей базе и принимает решение о том, следует ли зарегистрировать пользователя в системе.
4.3 Запуск программы разметки
4.3 Запуск программы разметки Вообще говоря, вы можете использовать любую программу разметки, например, Partition Magic или Acronis Disk Director Suite, однако я буду рассказывать про входящую в состав Ubuntu утилиту Gparted.Надеюсь, вы ещё не вышли из запущенной с LiveCD Ubuntu. Если это не так, то снова
1.1.7. Создание окон средствами VCL
1.1.7. Создание окон средствами VCL Теперь поговорим о том, как в VCL создаются окна. Речь здесь будет идти не о написании кода для создания окна с помощью VCL (предполагается, что читатель это и так знает), а о том, какие функции API и в какой момент вызывает VCL при создании окна.Если
Создание приложения средствами MFC AppWizard
Создание приложения средствами MFC AppWizard Во второй главе книги мы рассматривали приложение MFDialog, которое не имеет главного окна. Вместо окна это приложение использует обыкновенную диалоговую панель. Сейчас мы расскажем вам как создать приложение, подобное MFDialog, не набрав
12.2. Обработка фотографий средствами Windows
12.2. Обработка фотографий средствами Windows Обычному пользователю (не фотографу и не дизайнеру) могут понадобиться только две операции над фотографией: изменение размера и кадрирование. Как уже было отмечено ранее, современные фотографии представляют собой довольно
Архивация средствами Windows
Архивация средствами Windows Сегодня встроенные средства архивации имеет практически каждая операционная система. В операционных системах семейства Unix широко распространены производные от ZIP форматы: TGZ, BZip2, а также сам ZIP. В Windows поддерживается только ZIP, чего, впрочем,
Запись средствами Windows
Запись средствами Windows Если на компьютере не установлена специальная программа для записи, то остается пользоваться средствами вашей операционной системы. Сделать это очень просто. Прежде всего просмотрите жесткий диск и выберите файлы (либо папки), которые необходимо