Projects / Functional XML Parsing Framework

Functional XML Parsing Framework

The Functional XML Parsing Framework is a package of low-to-high-level lexing and parsing procedures that can be combined to yield a SAX, DOM, validating parsers, or a parser intended for a particular document type. The procedures in the package can be used separately to tokenize or parse various pieces of XML documents. The package supports XML namespaces, character, internal, and external parsed entities, xml:space, attribute value normalization, processing instructions and CDATA sections. It is intended to be a framework, a set of "Lego blocks" you can use to build a parser that follows DOM, SAX, or another discipline, and performs validation to any degree. As an example of such parser construction, the package includes a semi-validating SXML parser. It converts XML to SXML, an instance of XML Infoset as S-expressions, an abstract syntax tree of an XML document. SXML can be queried (in a XPath style), transformed, and evaluated. The framework parses XML in a pure functional style, as folding over a text XML document considered a spread-out tree. The input port is treated as a linear, read-once parameter. The framework's code does not use assignments at all.

Operating Systems

Recent releases

  •  17 Sep 2004 01:56

    Release Notes: This release implemented complete R5RS compatibility for the whole library and the examples. All low-level macros in the library proper and the examples were replaced with syntax-rules. SRFI-13 is now used natively if available, or via srfi-13-local.scm. SXML 3.0 compatibility was established, and Scheme 48 packages and package declarations were added for the library and the examples. Petite Chez Scheme was added as a supported platform.

    •  01 Sep 2001 18:29

      Release Notes: The new version is roughly 10% faster than the previous one, and allocates half as much memory. It is more easily ported, and it works on more Scheme systems. The project's CVS repository at SourceForge includes several sample applications and usable examples.

      •  19 Mar 2001 10:38

        Release Notes: This release includes complete support for XML Namespaces, support for xml:space, character, external, and internal parsed entities with detection of nonrecursion violations, support for validation of element and attribute content, a number of validation self-tests, and more portability. It currently runs on Gambit 3.0 and SCM 5d3, and there are distributions for several other Scheme systems.

        Recent comments

        27 Sep 2001 03:24 lisovsky

        SSAX 4.9 ports
        SSAX 4.9 packaged for Bigloo, Chicken, Gambit, Guile and PLT Schemes
        is available for download from

        20 Mar 2001 03:13 lisovsky

        SSAX ports
        This framework is pretty portable across the

        different Scheme implementation.

        You can find some examples at:

        Versions for Gambit, SCM, Bigloo, PLT,

        Guile and Chicken are already available.


        Project Spotlight


        A Fluent OpenStack client API for Java.


        Project Spotlight

        TurnKey TWiki Appliance

        A TWiki appliance that is easy to use and lightweight.