214-697-723 |
info@mainsource.ru |
(812) 946-31-81
Все контакты
Автор статьи Богдановский Владимир
Создание простой страницы закладок своими руками на XML/XSL
Давным давно мне нужно было где-то размещать все интересные для меня ссылки и разделять их по категориям.
При этом хотелось иметь возможность быстро и удобно добавлять новые ссылки.
Хотелось сделать легковесное решение, не требуещее подключения баз данных, веб-серверов и прочих таких штук,
требующих каких-то установок и настроек. Обязательно нужно было иметь возможность быстрой пересылки этих закладок
с одного компьютера на другой.
И очень не хотелось писать html-страничку, в которой код отображения совмещен с данными, и для каждой новой ссылки надо искать место,
куда вставить и какой код копировать.
А также было желание делиться своей базой ссылок с другими, при этом вид отображения мог бы меняться легко и независимо (от данных).
Ну и конечно, хотелось проводить валидность на формат добавляемых данных, чтобы никто ничего случайно не испортил и не понимал из-за чего косяки.
И я стал думать… и придумал!
Я вспомнил, что как-то в одном проекте я применял xsl-преобразования. Правда я использовал это на стороне сервера,
то есть использовались те навороченные штуки, которые в данном случае мне были не нужны. Но можно же передавать xsl-шаблон прямо браузеру,
и уже он будет обрабатывать это. Да! Этот вопрос решен: данные по ссылкам и категориям вставляю в отдельный xml-файл (база ссылок),
а вид отображения в браузере реализую через xsl-шаблон.
Отлично. Но еще осталась проверка на валидность формата данных — валидность моей базы данных ссылок. И тут нашлось решение
из знаний по лабораторным работам института. Это же dtd-схема. Браузер автоматически будет проверять соответствие моей xml'ки
данной схеме.
Ну вот. Определился. Значит делаю так: XML + XSL + DTD. Три файлика будут представлять мою страничку закладок.
При этом: в браузере надо будет открывать xml-файл, а ссылки на xsl и dtd указываются в xml.
Далее реализация.
1. Разработка структуры базы данных на основе XML (links.xml)
Меня интересуют всего две сущности: ссылки и категории. Например, категория СПОРТ, а в ней несколько ссылок на сайты о футболе и баскетболе.
Вот такой xml я сформировал:
<?xml version="1.0" encoding="UTF-8"?>
<LINKS>
<GROUP name="Спорт">
<LINK>
<HREF>http://www.championat.ru/</HREF>
<DESCRIPTION>новости о футболе</DESCRIPTION>
В этом файле корневой тег LINKS содержит в себе теги GROUP, которые являются категориями. GROUP
в себе содержит теги LINK, представляющие ресурсы в виде ссылок HREF и их описаний DESCRIPTION.
Вот такая база данных получилась. В нее легко вносить данные. Структура минимальная и понятная.
2. Отображение ссылок — создание XSL-шаблона (links.xsl)
Данный шаблон обрабатывает xml-файл и строит html-структуру.
Этот небольшой код пробегает по всем тегам xml-файла и отображает содержимое в них через html.
При этом в xml можно добавлять или удалять ссылки и категории, а xsl будет обрабатывать все равно
полноценно и не требует модификации при этом. Очень удобно.
3. Валидация структуры данных — DTD (links.dtd)
Здесь все довольно просто. Стуктура xml получилась простая и правил для нее совсем не много.
<!ELEMENT LINKS (GROUP*)>
<!ELEMENT GROUP (LINK*)>
<!ATTLIST GROUP name CDATA #REQUIRED>
Здесь первая строка сообщает, что тег LINKS содержит 0 и более тегов GROUP. Вторая строка аналогично. В третьей строке
задается правило о том, что тег GROUP содержит атрибут name, и этот атрибут является обязательным. В следующей строке говорится о
содержимом тега LINK: по одном тегу HREF и DESCRIPTION. Ну а в последних строках сказано, что соответствующие теги содержат
текстовый контент.
4. Интеграция: привязка XSL и DTD к XML
Это делается в самом xml через следующие инструкции:
Итого, получился полноценный минисервис закладок, который прост в переносе, прост в добавлении информации,
можно разрабатывать независимо от данных много различных представлений в браузере через множество разных xsl.
Вот что я вижу в браузере, когда двойным щелчком открываю links.xml:
Так выглядит страница с моими ссылками. Дизайн не ахти, зато удобно.
Вы можете посмотреть или ,
содержащий три разработанных файла, готовых к работе.