YstokHTML

YstokHTML — коллекция Коммон Лисп библиотек для генерации и разбора (синтаксического и семантического анализа) документов в форматах HTML и XHTML. Прототипами и источниками идей для YstokHTML послужили:

Все библиотеки реализованы с применением эффективных алгоритмов и не используют функции работы с регулярными выражениями.

LHTML и LHTT — языки разметки на основе Лисп

И генератор, и анализатор YstokHTML поддерживают внутреннее представление HTML-документа на основе Lisp HTML (LHTML) — языка S-выражений, предложенного компанией Franz в реализации HTMLGen. Позже П.Сейбель (Peter Seibel) в своей книге Practical Common Lisp описал аналогичный генератор с тем же исходным синтаксисом, названный им FOO HTML.

Lisp Hyper-Text Template (LHTT) является расширением LHTML. В кратце, S-выражение LHTT может содержать псевдоэлементы :include, :eval, :if, :loop, :repeat и т.п. вдобавок к стандартным элементам HTML, теги которых представлены одноимёнными ключами. Цель создания LHTT — обеспечить внутреннее представление, которое

Необходимые и необязательные библиотеки

Загрузка и установка

Исходные файлы YstokHTML общедоступены в любом из дистрибутивов:

Они включают исходные тексты программ, определение системы как для ASDlite и ASDF (файл ystok-html.asd), так и для LispWorks (файл defsys.lisp).

История разработки: change.log.

Документация

Русский перевод книги Practical Common Lisp может послужить в качестве введения в YstokHTML. В качестве описания подойдёт также оригинальная документация Franz на английском языке. Исходный код хорошо комментирован. Вдобавок, в дистрибутиве находится файл с демонстрационными примерами html-examples.lisp и файл с тестовыми примерами для анализатора phtml-test.lisp.

Если упомянутые файлы недоступны на сайте Franz, можно воспользоваться нашими локальными копиями HTMLGen и PHTML.

Примеры

(html:with-html-stream (*standard-output*)
  ((:table :border 2)
   (:tr ((:th :colspan 2)
         (:i "The square of four integers")))
   (dotimes (i 4)
     (html:htm
      (:tr (:td (:princ i))
           (:td (:b (:princ (* i i))))))))
The square of four integers
00
11
24
39

Платформы

Исходный код YstokHTML и необходимых библиотек, теоретически, переносимый. Фактически, тестирование проходило только под Lispworks 4.4 и 5.0 для Windows. Если Вам удалось запустить на другой платформе или реализации языка Лисп, пожалуйста, дайте нам знать.

См. также