Commit d8355078 authored by Pietro Abate's avatar Pietro Abate

- clean up legacy website and debian directory

- the web directory now contains only the cgi code
parent 70331ae3
Document: cduce
Title: CDuce documentation
Author: The CDuce Team (
Abstract: Local copy of the CDuce website including tutorial, users'manual and examples
Section: interpreters
Format: HTML
Index: /usr/share/doc/cduce/html/index.html
Files: /usr/share/doc/cduce/html/*.html
cduce usr/bin/
dtd2cduce usr/bin/
debian/tmp/usr/bin/* usr/bin/
debian/tmp/usr/share/* usr/share/
cduce (0.1.1-1) unstable; urgency=low
* New upstream release
- Various bug fixes (expat might now work)
- Sequencing operator e1;e2 (equivalent to: let [] = e1 in e2)
- Encoded references
-- Stefano Zacchiroli <> Sun, 14 Sep 2003 11:50:59 +0200
cduce (0.1.0-1) unstable; urgency=low
* Initial Release.
-- Stefano Zacchiroli <> Fri, 4 Jul 2003 15:17:41 +0200
Source: cduce
Section: interpreters
Priority: optional
Maintainer: Stefano Zacchiroli <>
Build-Depends: debhelper (>> 4.0.0), dpatch, ocaml-3.07, ocaml-findlib, libwlexing-ocaml-dev, libpcre-ocaml-dev, libocamlnet-ocaml-dev, libpxp-ocaml-dev, libexpat1-dev
Package: cduce
Architecture: any
Depends: ${shlibs:Depends} ${misc:Depends}
Description: programming language adapted to the manipulation of XML data
CDuce is a modern programming language adapted to the manipulation of XML
Some of CDuce peculiar features:
- 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;
- an highly-effective type-driven compilation schema
CDuce is fast, functional, type-safe, and conforms to basic standards:
Unicode, XML, DTD, Namespaces are fully supported, partial support of XML
Schema validation is in alpha testing (and undocumented) while queries are
being implemented.
This package was debianized by Stefano Zacchiroli <> on
Fri, 4 Jul 2003 15:17:41 +0200.
It was downloaded from:
The main author of CDuce is:
Alain Frisch <>
with contributions of the CDuce Team (
CDuce @ ENS (Paris)
* Giuseppe Castagna <> (CNRS researcher)
* Alain Frisch <> (Ph.D. student)
* Stefano Zacchiroli <> (Graduate student)
* Josh de Letaillade <> (DEA student)
CDuce @ LRI (Orsay)
* Véronique Benzaken <> (Prof. Univ. Paris 11)
* Marwan Burelle <> (Ph.D student)
* Cédric Miachon <> (DEA student)
The CDuce interpreter is distributed under the terms of the Q Public License
version 1.0 (included below). The "Choice of Law" section been modified
from the original Q Public License (Copyright (C) 1999 Troll Tech AS, Norway).
Copyright (C) 1999 Troll Tech AS, Norway.
Everyone is permitted to copy and
distribute this license document.
The intent of this license is to establish freedom to share and change
the software regulated by this license under the open source model.
This license applies to any software containing a notice placed by the
copyright holder saying that it may be distributed under the terms of
the Q Public License version 1.0. Such software is herein referred to
as the Software. This license covers modification and distribution of
the Software, use of third-party application programs based on the
Software, and development of free software which uses the Software.
Granted Rights
1. You are granted the non-exclusive rights set forth in this license
provided you agree to and comply with any and all conditions in this
license. Whole or partial distribution of the Software, or software
items that link with the Software, in any form signifies acceptance of
this license.
2. You may copy and distribute the Software in unmodified form
provided that the entire package, including - but not restricted to -
copyright, trademark notices and disclaimers, as released by the
initial developer of the Software, is distributed.
3. You may make modifications to the Software and distribute your
modifications, in a form that is separate from the Software, such as
patches. The following restrictions apply to modifications:
a. Modifications must not alter or remove any copyright notices
in the Software.
b. When modifications to the Software are released under this
license, a non-exclusive royalty-free right is granted to the
initial developer of the Software to distribute your
modification in future versions of the Software provided such
versions remain available under these terms in addition to any
other license(s) of the initial developer.
4. You may distribute machine-executable forms of the Software or
machine-executable forms of modified versions of the Software,
provided that you meet these restrictions:
a. You must include this license document in the distribution.
b. You must ensure that all recipients of the machine-executable
forms are also able to receive the complete machine-readable
source code to the distributed Software, including all
modifications, without any charge beyond the costs of data
transfer, and place prominent notices in the distribution
explaining this.
c. You must ensure that all modifications included in the
machine-executable forms are available under the terms of this
5. You may use the original or modified versions of the Software to
compile, link and run application programs legally developed by you or
by others.
6. You may develop application programs, reusable components and other
software items that link with the original or modified versions of the
Software. These items, when distributed, are subject to the following
a. You must ensure that all recipients of machine-executable
forms of these items are also able to receive and use the
complete machine-readable source code to the items without any
charge beyond the costs of data transfer.
b. You must explicitly license all recipients of your items to
use and re-distribute original and modified versions of the
items in both machine-executable and source code forms. The
recipients must be able to do so without any charges whatsoever,
and they must be able to re-distribute to anyone they choose.
c. If the items are not available to the general public, and the
initial developer of the Software requests a copy of the items,
then you must supply one.
Limitations of Liability
In no event shall the initial developers or copyright holders be
liable for any damages whatsoever, including - but not restricted to -
lost revenue or profits or other direct, indirect, special, incidental
or consequential damages, even if they have been advised of the
possibility of such damages, except to the extent invariable law, if
any, provides otherwise.
No Warranty
The Software and this license document are provided AS IS with NO
Choice of Law
This license is governed by the Laws of France. Disputes shall be
settled by the Court of Paris.
#!/bin/sh -e
## 01_makefile_conf.dpatch by Stefano Zacchiroli <>
## All lines beginning with `## DP:' are a description of the patch.
## DP: installs HTML documentation and CGIs in debian specific dirs
if [ $# -ne 1 ]; then
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1
[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
case "$1" in
-patch) patch $patch_opts -p1 < $0;;
-unpatch) patch $patch_opts -p1 -R < $0;;
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1;;
exit 0
diff -urNad /home/zack/dati/cduce/CDUCE.main/Makefile.conf CDUCE.main/Makefile.conf
--- /home/zack/dati/cduce/CDUCE.main/Makefile.conf 2004-01-11 14:15:28.000000000 +0100
+++ CDUCE.main/Makefile.conf 2004-01-11 14:25:18.000000000 +0100
@@ -1,4 +1,5 @@
# build CDuce using OCaml native code compiler
+# DEBIAN: overridden in debian/rules
ifeq ($(NATIVE), false)
NATIVE = true
@@ -26,7 +27,7 @@
# Customize the following variables to match the settings
# of your local web server
-WEB_PREFIX = /var/www
-CGI_DIR = $(WEB_PREFIX)/cgi-bin
+WEB_PREFIX = debian/tmp/usr/share/doc/cduce
+CGI_DIR = debian/tmp/usr/lib/cgi-bin
SESSION_DIR = /tmp/cduce_sessions
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
include /usr/share/dpatch/dpatch.make
# This has to be exported to make some magic below work.
MAKE_OPTS := $(shell if [ -x /usr/bin/ocamlopt ]; then echo "NATIVE=true"; else echo "NATIVE=false"; fi)
build: build-arch
build-arch: build-arch-stamp
build-arch-stamp: patch-stamp
$(MAKE) $(MAKE_OPTS) all
touch build-arch-stamp
clean: patch clean1 unpatch
rm -f build-arch-stamp
# Add here commands to clean up after the build process.
-$(MAKE) $(MAKE_OPTS) clean
install: install-arch
dh_clean -k -a
dh_installdirs -a
mkdir -p debian/tmp/usr/bin
mkdir -p debian/tmp/usr/lib/cgi-bin/cduce
mkdir -p debian/tmp/usr/share/doc/cduce/html
$(MAKE) $(MAKE_OPTS) install_web
dh_install -a
dh_installchangelogs CHANGES
dh_installman doc/cduce.1
binary-arch: build-arch install-arch
$(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
binary: binary-arch
.PHONY: build clean binary-arch binary install install-arch
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<page name="CompteRendus">
<title>Compte Rendus</title>
<box title="Compte-Rendu de la réunion du 14/10/04" link="141004">
<li> Alain Frisch</li>
<li> Guillaume Gillard</li>
<li> Giuseppe Castagna</li>
<li> Cédric Miachon</li>
<li> Discussion autour de l'implantation du système de type dans l'atelier Brixlogix;
implantation en cours en Java du typecheker.
Les types CDuce sont idéaux pour le traitement global des données, et pour aller au-delà de la vérification de protocoles.
Le type singleton est intéressant pour les flots de contrôle, mais l'union pose problème.
L'objectif de l'atelier est de typer le document de sortie, le problème se pose sur le typage de l'impératif
nottamment pour l'aliasing.
Il faudrait mieux typer le programme CDuce correspondant à l'atelier, par le typage de chaque brique par un programme CDuce.
Discussion autour d'un logiciel pour le langage de requêtes de CDuce, en rapport avec l'atelier.
<box title="Compte-Rendu de la réunion du 04/06/04" link="040604">
<li> Alain Frisch</li>
<li> Guillaume Gillard</li>
<li> Maurice Martin</li>
<li> Démonstration de l'atelier Brixlogic: scénario, itération,
sous-scénario, représentation graphique, représentation interne,
meta-data, chemin dans sample document.
<li> Explications sur la structure de l'implantation du système de type;
détails de représentation des combinaisons booléennes (arbres de décision
ternaire), formule de décomposition des produits sous forme d'arbre
binaire, implémentation du sous-typage avec cache et retour-arrière.
<li> Discussion: approche pour utiliser le sous-typage de CDuce dans
Brixlogic (solution probablement retenue: reimplémenter plutôt que de
réutiliser, pour maîtriser la technologie et optimiser en laissant tomber
les caractéristiques inutiles pour Brix); discussion sur le paradigme
graphique (Brix représente graphiquement le flot de controle; serait-il
souhaitable de représenter en plus/à la place le flot de données ?).
<box title="Compte-Rendu de la réunion du 24/04/04" link="240404">
<li> Alain Frisch</li>
<li> Véronique Benzaken</li>
<li> Giuseppe Castagna</li>
<li> Guillaume Gillard</li>
<li> Guillaume Lebleu</li>
<li> Maurice Martin</li>
<li> Cédric Miachon</li>
<li> Brixlogix : prototype visuel. 2 projets en cours. IFX et ACCORD. Probleme du <i>Change Impact Analysis</i>. utilisation des <i>WSDL</i>. typage incremental avec detection de typage instantane.
<li> CDuce : Ajout des standards (<i>namespaces</i> et <i>XML Schema</i>). Interface Ocaml/CDuce. Implatation de CDuce avec les motifs <i>jit</i>. Langage de requetes.
<li> Cooperation: Deleguer le typage a CDuce, ou ne reprendre que les algorithmes de typage, systeme de type?
<box title="Présentation de GraphDuce" link="GDPres">
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<page name="graphduce">
<include file="GD/cr040604.xml"/>
<box title="Presentation" link="main">
Le projet GraphDUCE est une collaboration entre le groupe de developpement de
CDuce et la societé <a href="">Brixlogic</a>. Il a
pour objectif d'explorer la possibilité de mise en oeuvre d'un langage
dédié au traitement de documents XML qui ait les qualités suivantes:
<li>interface utilisateur déclarative et/ou graphique, intuitive le rendant
accessible au plus grand nombre possible de développeurs dans le monde</li>
<li>vérification statique des types afin d'assurer un niveau de robustesse et
d'optimisation du code généré supérieur au meilleures technologies
actuellement disponibles sur le marché.</li>
pertinent pour la mise en oeuvre de protocoles XML d'échanges de données
financières comme FIXML (Financial Information eXchange protocol), Visa 3D ou
encore IFX (Interactive Financial eXchange protocol).</li>
La collaboration entre Brixlogic et CDuce s'articule autour de deux modes
d'utilisation différents de CDuce et offre une couverture du cycle de
production. En amont, Brixlogic effectue le traitement de l'information
XML. Ensuite le flux de cette information est géré dans le cadre plus
général de workflows d'entreprise. En chaque point du processus, CDuce est
utilisé à des fins distinctes
<p><b>XML et CDuce comme fin:</b> Brixlogic fournit un outil graphique pour la
manipulation de documents XML pour des standards financiers. XML est perçu
comme fin. Dans ce cadre, CDuce est utilisé comme langage final pour la
définition de toute (ou parties de) la transformation. Cet aspect de la
collaboration conduit à la production de code CDuce.
<p><b>XML et CDuce comme moyen:</b> Brixlogic fournit un outil graphique pour la
description en XML du workflow d'entreprise. Donc XML est perçu comme
outil. le but consiste à utiliser CDuce pour implanter un langage de
<p><b>Apport pour CDuce:</b> Dans les deux cas, les avantages pour CDuce sont
multiples : (i) retour sur les caractéristiques du langage, (ii) accès au
savoir-faire en développement d'interfaces graphiques, (iii) bénéfice
du travail du développement d' outils "non-recherche", (iv) passage à
l'échelle: test en grandeur nature des possibilités du langage et de son
<p><b>Apport pour Brixlogic:</b>
Concernant le premier aspect, l'avantage pour Brixlogic est triple : (i)
obtention de transformations certifiées 100% sûres, (ii) possibilité
d'ajouter des briques CDuces programmées par un programmeur spécialisé
en activité de conseil et (iii) augmentation de productivité.
Relativement au deuxième aspect, l'avantage pour Brixlogic est double : (i)
utilisation d'un langage très adapté pour une telle modélisation :
higher order, typage, sûreté (ii) possibilité d'analyses statiques de
<section title="Verrous technologiques">
<li> Définition d'une opération CDuce pour Brixlogic </li>
<li> Utilisation de programmes CDuce à l'intérieur de Brixlogic </li>
<li> Utilisation des techniques de typage de CDuce pour types les transformation
élémentaire de Brixlogic </li>
<section title="Innovations et retombées économiques">
Le projet GraphDUCE se base sur l'association de Brixlogic, une société
spécialisée dans les outils graphiques pour la mise en oeuvre de
protocoles d'échange de données financières, et du groupe de recherche
CDuce (LIENS et LRI). La technologie résultant éventuellement de la
combinaison de ces expertises complémentaires pourra être transformée
en un produit unique en son genre, car alliant simplicité, robustesse et
performance, et qui pourra être commercialisée sur un marché mondial
représentant plusieurs centaines de millions voire plusieurs milliards
<box title="Documents" link="doc">
<p>Description scientifique du projet (<a href="descriptif_graphduce.pdf">PDF</a>)</p>
<p>Poster 2003 (<a href="poster-2003.pdf">PDF</a>)</p>
<p>Poster 2006 (<a href="poster-final.pdf">PDF</a>)</p>
<box title="Compte-Rendus" link="dcr">
<p><b><a href="CompteRendus.html#141004">Réunion du 14/10/04</a></b></p>
<p><b><a href="CompteRendus.html#040604">Réunion du 04/06/04</a></b></p>
<p><b><a href="CompteRendus.html#240404">Réunion du 24/04/04</a></b></p>
<p><b><a href="CompteRendus.html#GDPres">Présentation</a></b></p>
CDuce website: technical documentation
CDuce website is generated by "". The entry point is the file
The site is structured as a tree of pages, with a single toplevel page
(normally "index").
Items on a page:
- box: a large box on the main panel
- meta: a special box on the main panel to display meta information
- left: a narrow box on the left panel
- page: a sub-page
- external: a "virtual" sub-page, not managed by but
integrated in the tree
- boxes-toc: list of links to all boxes on this page
- pages-toc: list of links to all subpages
- site-toc: global sitemap
- local-links: list of links to some arbitrary pages of the site
(href is a comma separted list of page names)
- footnote
- ...
Add a table with complete syntax of type and patterns at the end of the
chapter on types and patterns.
Add syntactic sugar of references (pag 12)
DONE: Define exactly @ at page 10
Add section on Module system
- DONE PLEASE CHECK: update syntax for new elements
- explain syntax (x:? t) and why it is better for load xml in page 5
- finish the sections on patterns and references
- DONE: rewrite section on queries
DONE: (PDF) Add page numbers
DONE: (PDF) Add table of contents
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<page name="tralala">
<title>XML Transformation Languages: logic and applications (TraLaLA)</title>
<p style="font-size: 12pt; color: fuchsia">Available Pages</p>
<li><a href="tralala_partenaires.html">Partenaires</a> </li>
<li><a href="tralala_documents.html">Documents</a> </li>
<li><a href="tralala_reunions.html">Réunions</a> </li>
<li><a href="tralala_cr.html">Comptes rendus</a></li>
<li><a href="tralala_mailing.html">Listes de diffusion</a> </li>
<include file="tralala_partenaires.xml"/>
<include file="tralala_documents.xml"/>
<include file="tralala_reunions.xml"/>
<include file="tralala_cr.xml"/>
<include file="tralala_mailing.xml"/>
Project funded by the
<a href="">ACI MASSES DE DONNÉES</a>
<p style="text-align: center"><img src="img/marianne.jpg" alt="Ministere de la recherche"/>
<p> All pages of this site were automatically generated from an XML description of
the content by <a href="examples.html#site">the following CDuce program</a>.
</p><p><img src="img/cducepower.jpg" alt="Powered by CDuce"/></p>
<box title="Description" link="des">
Notre projet se propose d'étudier les aspects de traitement,
d'interrogation et de manipulation de grandes masses de données lorsque