CDuce is an XML-oriented functional language, which extends XDuce in a few directions. It features XML regular expression types, XML regular expression patterns, XML iterators. CDuce is not strictly speaking an XML transformation language since it can be used for general-purpose programming.
CDuce conforms to basic standards: Unicode, XML, DTD, Namespaces are fully supported, XML Schema is partially supported.
Benefits of CDuce
static verifications (e.g.: ensure that a transformation produces a valid document); smooth and safe compositions of XML transformations and incremental programming; static optimizations and efficient execution model (knowing the type of a document is crucial to extract information efficiently). complete integration with OCaml (OCaml libraries can be straightforwardly imported and CDuce programs can be exported to OCaml). integration with Ocsigen via the OcCDuce module
Features particular to CDuce
XML objects can be manipulated as first-class citizen values: elements, sequences, tags, characters and strings, attribute sets; sequences of XML elements can be specified by regular expressions, which also apply to characters strings; functions themselves are first-class values, they can be manipulated, stored in data structure, returned by a function,... a powerful pattern matching operation can perform complex extractions from sequences of XML elements; a rich type algebra, with recursive types and arbitrary boolean combinations (union, intersection, complement) allows precise definitions of data structures and XML types; general purpose types and types constructors are taken seriously (products, extensible records, arbitrary precision integers with interval constraints, Unicode characters); polymorphism through a natural notion of subtyping, and overloaded functions with dynamic dispatch; a highly-effective type-driven compilation schema.