LXP provides a core set of features that include external file inclusion, XML parsing, and a direct SQL interface to
PostgreSQL. As of Version 0.8, SQL execution is performed with either a dynamic or persistent connection to the PostgreSQL
RDBMS.
LXP also supports a few more advanced techniques commonly found in programming languages, such as variable setting,
insertion and substitution, arrays, branching logic, loop iteration, and a basic search-and-replace variable formatting
interface.
The essential concept of content inclusion is that other files, or sources of data, can be
included (e.g., inserted or embedded) within a requested document's HTML output. Instructing an LXP
document to include another file means that the output from that included file will appear inline, as if it had been part
of the originally requested document itself. This can aid both the efficiency and maintainability of a large, dynamic web
site.
LXP can natively include a variety of external files, from plain HTML, to XML, to token-delimited flat files.
However, one of the strongest features of LXP's content inclusion capability is that LXP can embed
any content type that your Apache web server has been configured to handle.
Earlier incarnations of LXP had somewhat rigid support for the inclusion of PHP scripts. As of Version 0.8,
however, LXP can include any available content type via Apache subrequests. This allows you to embed server-side
documents written in languages including, but not limited to, PHP, Perl, and
any executable CGI application. Any CGI arguments or LXP variables available to LXP are passed on to the included
document as if it had been called directly with those variables through an HTTP request.
LXP also utilizes expat, a nonvalidating XML parsing library. While expat
doesn't validate your XML based on a DTD, the XML to be parsed must at least be
well-formed (e.g., no invalid characters, mismatched tags, etc.).
The XML parser implementation was written into LXP with support for easy RSS/RDF formats in particular
(Rich Site Summary and Resource Description Framework, respectively). These
file formats are available on popular web sites to provide a short summary of the information supplied on their site to
other hosts that link to their content (e.g., the headlines from a news site, along with URL information).
LXP's XML method is evolving into a more generalized tool, but it can presently be used to a limited extent with
any well-formed XML.
LXP provides both dynamic and persistent PostgreSQL database connectivity, allowing for versatile execution of SQL
statements. The SQL inclusion method allows the execution of a query from within an LXP document.
Once a query is executed, its results are passed to the LXP parser for inline formatting. These values can either be
displayed immediately, or set as variables for use later in the document.
The persistent connections, inline formatting, and direct SQL query tags lend LXP unparalleled ease of use in the
arrangement of content from a database. An example use of the LXP database connectivity can be found in the
Fingerless LXP package, a simple and flexible weblog implementation.
Fingerless, first introduced in LXP 0.7, is an LXP-based weblog system, similar to those seen
on sites such as Slashdot.org and Kuro5hin.org.
As of the 0.8 release, the Fingerless implementation has been re-factored into an external package utilizing
general LXP tags and persistent SQL connectivity. As such, this documentation will not cover the now deprecated
Fingerless builtin methods, which will be removed from the LXP core in the next major release. For an example of a web
site running Fingerless, however, visit: https://www.thelinuxreview.com.