We present two complementary approaches to writing XML document-processing
applications in a functional language.
In the first approach, the generic tree structure of XML documents is used
as the basis far the design of a library of combinators for generic process
ing: selection, generation, and transformation of XML trees.
The second approach is to use a type-translation framework for treating XML
document type definitions (DTDs) as declarations of algebraic data types,
and a derivation of the corresponding functions for reading and writing doc
uments as typed values in Haskell.