Базовые возможности
К числу базовых возможностей LXP относится включение внешних файлов, лексический разбор кода XML и прямой интерфейс между SQL и PostgreSQL. В версии 0.8 команды SQL выполняются через динамическое или устойчивое подключение к СУБД PostgreSQL.
В LXP также поддерживаются современные средства, обычно встречающиеся в языках программирования, – механизмы работы с переменными, вставки и подстановки, массивы, условные команды, циклы и базовый интерфейс форматирования строковых данных с поиском и заменой.
Включение данных
Основная концепция включения данных заключается в том, что в выходные данные запрашиваемого документа HTML могут включаться другие файлы или источники данных. Например, при включении в документ LXP другого файла выходные данные этого файла подставляются в поток данных так, словно они были частью исходного документа. Тем самым повышается эффективность и удобство сопровождения больших динамических web-сайтов.
Непосредственно в LXP предусмотрена поддержка разнообразных внешних файлов, от простого кода HTML до XML и неструктурированных ("плоских") файлов, разделяемых при помощи специальных лексем. Тем не менее одна из самых сильных сторон технологии включения заключается в том, что LXP позволяет внедрять любые типы содержимого, указанные в конфигурации web-сервера Apache.
В предыдущих версиях LXP поддержка сценариев РНР была весьма ограниченной. В LXP версии 0.8 поддерживается включение любого информационного наполнения посредством подзапросов Apache. Это позволяет включать на стороне сервера документы, написанные на разных языках, в том числе PHP, Perl и любых исполняемых приложений CGI. Аргументы CGI и переменные LXP передаются включаемому документу так, словно он был вызван напрямую с передачей этих переменных в запросе HTTP.
В LXP также используется библиотека expat, предназначенная для лексического разбора XML без проверки по содержимому DTD. То есть обрабатываемый код проверяется, по крайней мере, на лексическую правильность (то есть па содержание недопустимых символов, непарных тегов и т. д.)
При реализации модуля лексического разбора для LXP особое внимание уделялось простой поддержке форматов RSS/RDF (Rich Site Summary и Resource Description Framework). Эти форматы поддерживаются многими популярными сайтами и обеспечивают краткую сводку по информации, предоставляемой сайтом (например, заголовки и URL-адреса на сайте новостей).
В настоящее время поддержка XML в LXP развивается и приобретает более общий характер, но и сейчас она до определенной степени может использоваться с любым нормально сформированным кодом XML.
Взаимодействие с PostgreSQL
В LXP поддерживаются как динамические, так и устойчивые подключения к PostgreSQL, благодаря чему выполнение команд SQL становится более гибким. Метод включения SQL позволяет выполнять запросы прямо из документов LXP. После выполнения запроса его результаты передаются модулю лексического разбора LXP для внутреннего форматирования. Полученные-значения выводятся в документе или сохраняются в переменных для дальнейшего использования.
Устойчивые соединения, внутреннее форматирование и теги запросов SQL обеспечивают LXP непревзойденную простоту при работе с информацией, полученной из базы данных. Пример использования средств LXP для работы с базой данных встречается в пакете Fingerless – простой и гибкой реализацией журнала ссылок на базе LXP.
Fingerless
Пакет Fingerless, впервые появившийся в LXP версии 0.7, представляет собой систему для ведения журнала ссылок (weblog) на базе LXP. Аналогичные системы применяются на таких сайтах, как Slashdot.org и Kuro5bin.org.
В версии 0.8 реализация Fingerless была переработана во внешний пакет, использующий общие теги LXP и устойчивые подключения. По этой причине в документации не рассматриваются устаревшие встроенные методы Fingerless, которые будут устранены из ядра LXP в следующей версии. Пример web-сайта, использующего Fingerless, можно найти по адресу http://www.thelinuxreview.com.