From 01e25adf5a5b17cbf9cfdbef2c7308531fdd96b4 Mon Sep 17 00:00:00 2001
From: sb <sb>
Date: Tue, 14 Oct 2008 09:11:13 +0000
Subject: [PATCH] Removed redundent DTDs

---
 schemas/adl-0-1-0.xsd | 734 ------------------------------------------
 schemas/adl-0.dtd     | 597 ----------------------------------
 schemas/adl-0.xsd     | 582 ---------------------------------
 3 files changed, 1913 deletions(-)
 delete mode 100755 schemas/adl-0-1-0.xsd
 delete mode 100755 schemas/adl-0.dtd
 delete mode 100755 schemas/adl-0.xsd

diff --git a/schemas/adl-0-1-0.xsd b/schemas/adl-0-1-0.xsd
deleted file mode 100755
index cc59244..0000000
--- a/schemas/adl-0-1-0.xsd
+++ /dev/null
@@ -1,734 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::	-->
-<!--						    												-->
-<!--	adl-0-1-0.xsd															-->
-<!--																			-->
-<!--	Purpose:																-->
-<!--	XML Schema for Application Description Language. Note that this			-->
-<!--        is experimental; the DTD is still normative at this stage			-->
-<!--        This revision autoconverted using visual studio from				-->
-<!--        adl-0.dtd revision 1.14												-->
-<!--																			-->
-<!--	Author:		Simon Brooke <sb@cygnets.co.uk>								-->
-<!--	Created:	9th January 2008											-->
-<!--	$Revision: 1.1 $														-->
-<!--	Copyright:	(c) 2008 Cygnet Solutions Ltd								-->
-<!--																			-->
-<!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::	-->
-
-<xs:schema elementFormDefault="qualified"
-		xmlns:xs="http://www.w3.org/2001/XMLSchema"
-		xmlns='http://www.cygnets.co.uk/schemas/adl-0-1-0.xsd'
-		targetNamespace='http://www.cygnets.co.uk/schemas/adl-0-1-0.xsd'
-		xmlns:adl='http://www.cygnets.co.uk/schemas/adl-0-1-0.xsd'
-		xmlns:html='http://www.w3.org/1999/xhtml'>
-
-	<!-- 
-		the application that the document describes: required top level element
-  
-		name:     the name of this application
-		version:  the version number of this application
-		xmlns:    XML namespace, in case required
-	-->
-	<xs:element name="application">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:element minOccurs="0" maxOccurs="1" ref="content" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="typedef" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="group" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="entity" />
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="version" type="xs:string" />
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		the definition of a defined type. At this stage a defined type is either
-		a string		in which case it must have size and pattern, or
-		a scalar		in which case it must have minimum and/or maximum
-		pattern must be a regular expression as interpreted by org.apache.regexp.RE
-		minimum and maximum must be of appropriate format for the datatype specified.
-		Validation may be done client-side and/or server-side at application layer
-		and/or server side at database layer.
-
-		name:     the name of this typedef
-		type:     the simple type on which this defined type is based; must be
-		          present unless in-implementation children are supplied
-		size:     the data size of this defined type
-		pattern:  a regular expression which values for this type must match
-		minimum:  the minimum value for this type (if base type is scalar)
-		maximum:  the maximum value for this type (if base type is scalar)
-	-->
-	<xs:element name="typedef">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="in-implementation" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="help" />
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="type">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="string" />
-						<xs:enumeration value="integer" />
-						<xs:enumeration value="real" />
-						<xs:enumeration value="money" />
-						<xs:enumeration value="date" />
-						<xs:enumeration value="time" />
-						<xs:enumeration value="timestamp" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-			<xs:attribute name="size" type="xs:string" />
-			<xs:attribute name="pattern" type="xs:string" />
-			<xs:attribute name="minimum" type="xs:string" />
-			<xs:attribute name="maximum" type="xs:string" />
-		</xs:complexType>
-	</xs:element>
-
-	<!--
-		information about how to translate a type into types known to different target
-		languages. TODO: Once again I'm not wholly comfortable with the name; I'm not 
-		really comfortable that this belongs in ADL at all.
-  
-		target:		the target language
-		value:		the type to use in that target language
-		kind:		OK, I confess I don't understand this, but Andrew needs it... 
-	-->
-	<xs:element name="in-implementation">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-			</xs:sequence>
-			<xs:attribute name="target" type="xs:string" use="required" />
-			<xs:attribute name="value" type="xs:string" use="required" />
-			<xs:attribute name="kind" type="xs:string" />
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		a group of people with similar permissions to one another 
-  
-		name:		the name of this group
-		parent:		the name of a group of which this group is subset
-	-->
-	<xs:element name="group">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="parent" type="xs:string" />
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		an entity which has properties and relationships; maps onto a database
-		table or a Java serialisable class - or, of course, various other things
-  
-		name:			obviously, the name of this entity
-		natural-key:	if present, the name of a property of this entity which forms
-						a natural primary key [NOTE: Only partly implemented. NOTE: much of
-						the present implementation assumes all primary keys will be 
-						integers. This needs to be fixed!] DEPRECATED: remove; replace with the
-						'key' element, below.
-		table:			the name of the table in which this entity is stored. Defaults to same
-						as name of entity. Strongly recommend this is not used unless it needs
-						to be different from the name of the entity
-		foreign:		this entity is part of some other system; no code will be generated
-						for it, although code which links to it will be generated
-	-->
-	<xs:element name="entity">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:element minOccurs="0" maxOccurs="1" ref="content" />
-				<xs:element minOccurs="0" maxOccurs="1" ref="key" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="permission" />
-				<xs:choice minOccurs="0" maxOccurs="unbounded">
-					<xs:element ref="form" />
-					<xs:element ref="page" />
-					<xs:element ref="list" />
-				</xs:choice>
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="natural-key" type="xs:string" />
-			<xs:attribute name="table" type="xs:string" />
-			<xs:attribute name="foreign">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="true" />
-						<xs:enumeration value="false" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		contains documentation on the element which immediately contains it. TODO:
-		should HTML markup within a documentation element be allowed? If so, are
-		there restrictions?
-	-->
-	<xs:element name="documentation">
-		<xs:complexType>
-			<xs:simpleContent>
-				<xs:extension base="xs:string" />
-			</xs:simpleContent>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- an explicit primary key, possibly compound -->
-	<xs:element name="key">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		a property (field) of an entity (table) 
-	
-		name:		the name of this property.
-		type:		the type of this property.
-		default:	the default value of this property. There will probably be 
-					magic values of this!
-		typedef:	name of the typedef to use, it type = 'defined'.
-		distinct:	distinct='system' required that every value in the system 
-					will be distinct (i.e. natural primary key);
-					distinct='user' implies that the value may be used by users 
-					in distinguishing entities even if values are not formally 
-					unique; 
-					distinct='all' implies that the values are formally unique 
-					/and/ are user friendly (NOTE: not implemented).
-		entity:		if type='entity', the name of the entity this property is 
-					a foreign key link to.
-					if type='list', the name of the entity that has a foreign 
-					key link to this entity
-		farkey:     if type='list', the name of farside key in the listed 
-					entity; if type='entity' and the farside field to join to 
-					is not the farside primary key, then the name of that
-					farside field
-		required:	whether this propery is required (i.e. 'not null').
-		size: 		fieldwidth of the property if specified.
-		concrete:   if set to 'false', this property is not stored in the 
-					database but must be computed (manually written code must
-					be provided to support this)
-		cascade:    what action(s) on the parent entity should be cascaded to
-					entitie(s) linked on this property. Valid only if type='entity',
-					type='link' or type='list'.
-		column:     name of the column in a SQL database table in which this property
-					is stored. If not present, use name. TODO: Think about this.
-		unsaved-value:
-					of a property whose persistent value is set on first being 
-					committed to persistent store, the value which it holds before
-					it has been committed
-	-->
-	<xs:element name="property">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:element minOccurs="0" maxOccurs="1" ref="generator" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="permission" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="option" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="prompt" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="help" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="ifmissing" />
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="type" use="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="entity" />
-						<xs:enumeration value="link" />
-						<xs:enumeration value="list" />
-						<xs:enumeration value="defined" />
-						<xs:enumeration value="string" />
-						<xs:enumeration value="integer" />
-						<xs:enumeration value="real" />
-						<xs:enumeration value="money" />
-						<xs:enumeration value="date" />
-						<xs:enumeration value="time" />
-						<xs:enumeration value="timestamp" />
-						<xs:enumeration value="boolean" />
-						<xs:enumeration value="text" />
-						<xs:enumeration value="geopos" />
-						<xs:enumeration value="image" />
-						<xs:enumeration value="message" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-			<xs:attribute name="default" type="xs:string" />
-			<xs:attribute name="typedef" type="xs:string" />
-			<xs:attribute name="distinct">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="none" />
-						<xs:enumeration value="all" />
-						<xs:enumeration value="user" />
-						<xs:enumeration value="system" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-			<xs:attribute name="entity" type="xs:string" />
-			<xs:attribute name="farkey" type="xs:string" />
-			<xs:attribute name="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="true" />
-						<xs:enumeration value="false" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-			<xs:attribute name="size" type="xs:string" />
-			<xs:attribute name="column" type="xs:string" />
-			<xs:attribute name="concrete">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="true" />
-						<xs:enumeration value="false" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-			<xs:attribute name="cascade">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="all" />
-						<xs:enumeration value="all-delete-orphan" />
-						<xs:enumeration value="delete" />
-						<xs:enumeration value="manual" />
-						<xs:enumeration value="save-update" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		marks a property which is auto-generated by some part of the system. 
-		This is based on the Hibernate construct, except that the Hibernate 
-		implementation folds both its internal generators and custom generators 
-		onto the same attribute. This separates them onto two attributes so we 
-		can police values for Hibernate's 'builtin' generators.
-  
-		action:		one of the supported Hibernate builtin generators, or 
-					'manual'. 'native' is strongly recommended in most instances
-		class:		if action is 'manual', the name of a manually maintained 
-					class conforming to the Hibernate IdentifierGenerator 
-					interface, or its equivalent in other languages
-	-->
-	<xs:element name="generator">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="param" />
-			</xs:sequence>
-			<xs:attribute name="action" use="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="assigned" />
-						<xs:enumeration value="guid" />
-						<xs:enumeration value="manual" />
-						<xs:enumeration value="native" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-			<xs:attribute name="class" type="xs:string" />
-		</xs:complexType>
-	</xs:element>
-
-	<!--
-		A parameter passed to the generator. Again, based on the Hibernate 
-		implementation. TODO: #PCDATA is wrong as the content model, as embedded
-		markup is definitely not allowed!
-  
-		name:		the name of this parameter
-	-->
-	<xs:element name="param">
-		<xs:complexType>
-			<xs:simpleContent>
-				<xs:extension base="xs:string">
-					<xs:attribute name="name" type="xs:string" use="required" />
-				</xs:extension>
-			</xs:simpleContent>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		one of an explicit list of optional values a property may have 
-		NOTE: whether options get encoded at application layer or at database layer 
-		is UNDEFINED; either behaviour is correct. If at database layer it's also 
-		UNDEFINED whether they're encoded as a single reference data table or as 
-		separate reference data tables for each property.
-	
-		value:	the value of this option
-	-->
-	<xs:element name="option">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="prompt" />
-			</xs:sequence>
-			<xs:attribute name="value" type="xs:string" />
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		permissions policy on an entity, a page, form, list or field 
-	
-		group:			the group to which permission is granted
-		permission:		the permission which is granted to that group
-	-->
-	<xs:element name="permission">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-			</xs:sequence>
-			<xs:attribute name="group" type="xs:string" use="required" />
-			<xs:attribute name="permission" use="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="none" />
-						<xs:enumeration value="read" />
-						<xs:enumeration value="insert" />
-						<xs:enumeration value="noedit" />
-						<xs:enumeration value="edit" />
-						<xs:enumeration value="all" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-		</xs:complexType>
-	</xs:element>
-
-	<!--
-		pragmatic advice to generators of lists and forms, in the form of 
-		name/value pairs which may contain anything. Over time some pragmas
-		will become 'well known', but the whole point of having a pragma
-		architecture is that it is extensible.
-	-->
-	<xs:element name="pragma">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="value" type="xs:string" use="required" />
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		a prompt for a property or field; used as the prompt text for a widget 
-		which edits it. Typically there will be at most one of these per property
-		per locale; if there are more than one all those matching the locale may
-		be concatenated, or just one may be used.
-	
-		prompt:			the prompt to use
-		locale:			the locale in which to prefer this prompt	
-	-->
-	<xs:element name="prompt">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-			</xs:sequence>
-			<xs:attribute name="prompt" type="xs:string" use="required" />
-			<xs:attribute name="locale" type="xs:string" use="required" />
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		helptext about a property of an entity, or a field of a page, form or 
-		list, or a typedef. Typically there will be at most one of these per property
-		per locale; if there are more than one all those matching the locale may
-		be concatenated, or just one may be used.
-
-		locale:		the locale in which to prefer this prompt	
-	-->
-	<xs:element name="help">
-		<xs:complexType>
-			<xs:simpleContent>
-				<xs:extension base="xs:string">
-					<xs:attribute name="locale" type="xs:string" use="required" />
-				</xs:extension>
-			</xs:simpleContent>
-		</xs:complexType>
-	</xs:element>
-
-	<!--
-		helpful text to be shown if a property value is missing, typically when 
-		a form is submitted. Typically there will be at most one of these per property
-		per locale; if there are more than one all those matching the locale may
-		be concatenated, or just one may be used. Later there may be more sophisticated
-		 behaviour here.
-	-->
-	<xs:element name="ifmissing">
-		<xs:complexType>
-			<xs:simpleContent>
-				<xs:extension base="xs:string">
-					<xs:attribute name="locale" type="xs:string" use="required" />
-				</xs:extension>
-			</xs:simpleContent>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		a form through which an entity may be added or edited
-	-->
-	<xs:element name="form">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:choice minOccurs="0" maxOccurs="unbounded">
-					<xs:element ref="head" />
-					<xs:element ref="top" />
-					<xs:element ref="foot" />
-					<xs:element ref="field" />
-					<xs:element ref="fieldgroup" />
-					<xs:element ref="auxlist" />
-					<xs:element ref="verb" />
-					<xs:element ref="permission" />
-					<xs:element ref="pragma" />
-				</xs:choice>
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="properties" use="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="all" />
-						<xs:enumeration value="user-distinct" />
-						<xs:enumeration value="listed" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- a page on which an entity may be displayed (i.e. like a form, but read only -->
-	<xs:element name="page">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:choice minOccurs="0" maxOccurs="unbounded">
-					<xs:element ref="head" />
-					<xs:element ref="top" />
-					<xs:element ref="foot" />
-					<xs:element ref="field" />
-					<xs:element ref="fieldgroup" />
-					<xs:element ref="auxlist" />
-					<xs:element ref="verb" />
-					<xs:element ref="permission" />
-					<xs:element ref="pragma" />
-				</xs:choice>
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="properties" use="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="all" />
-						<xs:enumeration value="user-distinct" />
-						<xs:enumeration value="listed" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		a list on which entities of a given type are listed
-
-		onselect:		name of form/page/list to go to when
-					    a selection is made from the list 
-	-->
-	<xs:element name="list">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:choice minOccurs="0" maxOccurs="unbounded">
-					<xs:element ref="head" />
-					<xs:element ref="top" />
-					<xs:element ref="foot" />
-					<xs:element ref="field" />
-					<xs:element ref="fieldgroup" />
-					<xs:element ref="auxlist" />
-					<xs:element ref="verb" />
-					<xs:element ref="permission" />
-					<xs:element ref="pragma" />
-				</xs:choice>
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="properties" use="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="all" />
-						<xs:enumeration value="user-distinct" />
-						<xs:enumeration value="listed" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-			<xs:attribute name="onselect" type="xs:string" />
-		</xs:complexType>
-	</xs:element>
-
-	<!--
-		a subsidiary list, on which entities related to primary
-		entities in the enclosing page or list are listed
-  
-		property:   the property of the enclosing entity that this
-					list displays (obviously, must be of type='list')
-		onselect:   the form or page of the listed entity to call
-					when an item from the list is selected
-		canadd:     true if the user should be able to add records
-					to this list
-	-->
-	<xs:element name="auxlist">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:choice minOccurs="0" maxOccurs="unbounded">
-					<xs:element ref="prompt" />
-					<xs:element ref="field" />
-					<xs:element ref="fieldgroup" />
-					<xs:element ref="auxlist" />
-					<xs:element ref="verb" />
-				</xs:choice>
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-			<xs:attribute name="properties" use="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="all" />
-						<xs:enumeration value="user-distinct" />
-						<xs:enumeration value="listed" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-			<xs:attribute name="property" type="xs:string" use="required" />
-			<xs:attribute name="onselect" type="xs:string" />
-			<xs:attribute name="canadd">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="true" />
-						<xs:enumeration value="false" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-		</xs:complexType>
-	</xs:element>
-
-	<!--
-		a group of fields and other controls within a form or list, which the 
-		renderer might render as a single pane in a tabbed display, for example.
-	-->
-	<xs:element name="fieldgroup">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:choice minOccurs="0" maxOccurs="unbounded">
-					<xs:element ref="prompt" />
-					<xs:element ref="field" />
-					<xs:element ref="fieldgroup" />
-					<xs:element ref="auxlist" />
-					<xs:element ref="verb" />
-				</xs:choice>
-			</xs:sequence>
-			<xs:attribute name="name" type="xs:string" use="required" />
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		a field in a form or page
-
-		property:   the property which this field displays/edits
-	-->
-	<xs:element name="field">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="prompt" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="help" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="permission" />
-			</xs:sequence>
-			<xs:attribute name="property" type="xs:string" use="required" />
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		a verb is something that may be done through a form. Probably the verbs 'store' 
-		and 'delete' are implied, but maybe they need to be explicitly declared. The 'verb'
-		attribute of the verb is what gets returned to the controller 
-	-->
-	<xs:element name="verb">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element minOccurs="0" maxOccurs="1" ref="documentation" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="prompt" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="help" />
-				<xs:element minOccurs="0" maxOccurs="unbounded" ref="permission" />
-			</xs:sequence>
-			<xs:attribute name="verb" type="xs:string" use="required" />
-			<xs:attribute name="dangerous" use="required">
-				<xs:simpleType>
-					<xs:restriction base="xs:NMTOKEN">
-						<xs:enumeration value="true" />
-						<xs:enumeration value="false" />
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:attribute>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- a container for global content -->
-	<xs:element name="content">
-		<xs:complexType>
-			<xs:choice minOccurs="0" maxOccurs="unbounded">
-				<xs:element ref="head" />
-				<xs:element ref="top" />
-				<xs:element ref="foot" />
-			</xs:choice>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		content to place in the head of the generated document; this is #PCDATA 
-		because it will almost certainly belong to a different namespace 
-		(usually HTML). 
-		NOTE: things which are legal in HTML HEAD only. 
-		NOTE: it's questionable whether this should really be here at all.
-	-->
-	<xs:element name="head">
-		<xs:complexType>
-			<xs:simpleContent>
-				<xs:extension base="xs:string" />
-			</xs:simpleContent>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		content to place in the top of the body of the generated document; 
-		this should be %Flow; which is any HTML block or inline level element.
-	-->
-	<xs:element name="top">
-		<xs:complexType>
-			<xs:simpleContent>
-				<xs:extension base="xs:string" />
-			</xs:simpleContent>
-		</xs:complexType>
-	</xs:element>
-
-	<!-- 
-		content to place at the foot of the body of the generated document; 
-		this should be %Flow; which is any HTML block or inline level element.
-	-->
-	<xs:element name="foot">
-		<xs:complexType>
-			<xs:simpleContent>
-				<xs:extension base="xs:string" />
-			</xs:simpleContent>
-		</xs:complexType>
-	</xs:element>
-</xs:schema>
\ No newline at end of file
diff --git a/schemas/adl-0.dtd b/schemas/adl-0.dtd
deleted file mode 100755
index aefca1a..0000000
--- a/schemas/adl-0.dtd
+++ /dev/null
@@ -1,597 +0,0 @@
-    <!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-    <!--						    											-->
-    <!--	adl-1.1.dtd    			    										-->
-    <!--																		-->
-    <!--	Purpose:															-->
-    <!--	Document Type Description for Application Description				-->
-    <!--	Language. Normative for now; will be replaced by a schema.     	   `-->
-    <!--																		-->
-    <!--	Author:		Simon Brooke <simon@cygnets.co.uk>			  			-->
-    <!--	Created:	24th January 2006				                        -->
-    <!--	Copyright:	(c) 2007 Cygnet Solutions								-->
-    <!--      							      		                            -->
-    <!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-    
-    <!--
-        $Revision: 1.19 $
- 	    -->
-
-<!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-<!--  Before we start: import XHTML	for use in documentation sections			-->
-<!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-<!--  doesn't work yet  -->
-<!-- ENTITY  % XHTML PUBLIC
-   "-//W3C//DTD XHTML 1.0 Transitional//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-%XHTML; -->
-
-<!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-<!--  Before we start: some useful definitions					                -->
-<!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-
-<!-- some basic character entities inherited from HTML. Actually we probably ought to 
-import all the HTML4 character entity files, and possibly the HTML4 Strict DTD (so 
-that we can allow HTML block level entities within content elements -->
-<!ENTITY nbsp "&#160;">
-<!ENTITY pound "&#163;">
-<!ENTITY copy "&#169;">
-
-
-<!-- boolean means true or false -->
-<!ENTITY % Boolean "(true|false)" >
-
-<!-- 
-	Locale is a string comprising an ISO 639 language code followed by a space
-	followed by an ISO 3166 country code, or else the string 'default'. See:
-	<URL:http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt>
-	<URL:http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html>
--->
-<!ENTITY % Locale "CDATA" >
-
-<!-- 
-	permissions a group may have on an entity, list, page, form or field
-	permissions are deemed to increase as you go right. A group cannot 
-	have greater permission on a field than on the form it is in, or
-	greater permission on form than the entity it belongs to
-	
-	none:			none
-	read:			select
-	insert:			insert
-	noedit:			select, insert
-	edit:			select, insert, update
-	all:			select, insert, update, delete
--->
-<!ENTITY % Permissions "none|read|insert|noedit|edit|all" >
-
-
-<!--
-  actions which should be cascaded to dependent objects. All these values except
-  'manual' are taken from Hibernate and should be passed through the adl2hibernate 
-  mapping transparently. Relevent only for properties with type='entity', type='link'
-  and type='list'
-  
-  all :       cascade delete, save and update
-  all-delete-orphan : see hibernate documentation; relates to transient objects only
-  delete :    cascade delete actions, but not save and update
-  manual :    cascading will be handled in manually managed code, code to
-              handle cascading should not be generated
-  save-update : cascade save and update actions, but not delete.
--->
-<!ENTITY % CascadeActions "all|all-delete-orphan|delete|manual|save-update">
-
-<!-- 
-	data types which can be used in a typedef to provide validation - 
-	e.g. a string can be used with a regexp or a scalar can be used with 
-	min and max values 
-	string: 		  varchar		java.sql.Types.VARCHAR
-	integer:		  int			  java.sql.Types.INTEGER
-	real:			    double		java.sql.Types.DOUBLE
-	money:			  money		  java.sql.Types.INTEGER
-	date:			    date		  java.sql.Types.DATE
-	time:			    time		  java.sql.Types.TIME
-	timestamp:		timestamp	java.sql.Types.TIMESTAMP
--->
-<!ENTITY % DefinableDataTypes "string|integer|real|money|date|time|timestamp" >
-
-<!-- 
-	data types which are fairly straightforward translations of JDBC data types
-	boolean:		boolean or	java.sql.Types.BIT
-					    char(1)		  java.sql.Types.CHAR
-	text:			  text or		  java.sql.Types.LONGVARCHAR 
-					    memo		    java.sql.Types.CLOB
--->
-<!ENTITY % SimpleDataTypes "%DefinableDataTypes;|boolean|text" >
-
-<!-- 
-	data types which are more complex than SimpleDataTypes...
-	entity : 		a foreign key link to another entity (i.e. the 'many' end of a 
-					one-to-many link);
-	list :			a list of some other entity that links to me (i.e. the 'one' end of
-					a one-to-many link);
-	link : 			a many to many link (via a link table);
-	defined : 		a type defined by a typedef.
--->
-<!ENTITY % ComplexDataTypes "entity|link|list|defined" >
-
-<!--
-  data types which require special handling - which don't simply map onto 
-  common SQL data types
-  geopos :    a latitude/longitude pair (experimental and not yet implemented)
-  image :     a raster image file, in jpeg|gif|png format (experimental, not yet implemented)
-  message :   an internationalised message, having different translations for different locales
--->
-<!ENTITY % SpecialDataTypes "geopos|image|message" >
-
-<!-- all data types -->
-<!ENTITY % AllDataTypes "%ComplexDataTypes;|%SimpleDataTypes;|%SpecialDataTypes;" >
-
-<!-- content, for things like pages (i.e. forms, lists, pages) -->
-<!ENTITY % Content "head|top|foot" >
-
-<!ENTITY % FieldStuff "field|fieldgroup|auxlist|verb">
-
-<!ENTITY % PageContent "%Content;|%FieldStuff;" >
-
-<!ENTITY % PageStuff "%PageContent;|permission|pragma" >
-
-<!-- Properties for pages:
-  name:               obviously, the name (URL stub) of the page
-  properties:         the properties of the entity the page describes to be shown
-                      as fields on the page
-      all:            obviously, all properties (except the abstract primary key, if
-                      present)
-      user-distinct:  all properties which are user-distinct (NOTE: Not yet implemented)
-      listed:         only those properties for which fields are explicitly listed
--->  
-<!ENTITY % PageAttrs 
-	"name CDATA #REQUIRED
-	 properties (all|user-distinct|listed) #REQUIRED" >
-
-<!-- Actions for generators (mainly for keyfields - see entity 'generator', below
-  assigned:           In manually-maintained code, you contract to assign a value 
-                      to this property before it is persisted.
-  guid:               The system will supply a unique GUid value to this field 
-                      before it is persisted.
-  mannual:            You contract to supply a generatos class in manually maintained
-                      code.
-  native:             The database will supply a unique value to this field when it
-                      is persisted; the value will be an integer. RECOMMENDED!
--->
-<!ENTITY % GeneratorActions "assigned|guid|manual|native">
-
-<!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-<!--  Elements																	                                -->
-<!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-
-<!-- 
-  the application that the document describes: required top level element
-  
-  name:     the name of this application
-  version:  the version number of this application
-  revision:	the revision of the ADL document
-  currency: the base monetary currency, in the form of an ISO 4217 three-letter code
-  xmlns:    XML namespace, in case required
--->
-<!ELEMENT application ( specification?, documentation?, content?, typedef*,  group*, entity*)>
-<!ATTLIST application 
-	name 		CDATA 						#REQUIRED
-	version 	CDATA 						#IMPLIED
-	revision	CDATA						#IMPLIED
-	currency	CDATA						#IMPLIED
-	xmlns		CDATA						#IMPLIED>
-
-<!-- 
-	the definition of a defined type. At this stage a defined type is either
-	a string		in which case it must have size and pattern, or
-	a scalar		in which case it must have minimum and/or maximum
-	pattern must be a regular expression as interpreted by org.apache.regexp.RE
-	minimum and maximum must be of appropriate format for the datatype specified.
-	Validation may be done client-side and/or server-side at application layer
-	and/or server side at database layer.
-
-  name:     the name of this typedef
-  type:     the simple type on which this defined type is based; must be
-            present unless in-implementation children are supplied
-  size:     the data size of this defined type
-  pattern:  a regular expression which values for this type must match
-  minimum:  the minimum value for this type (if base type is scalar)
-  maximum:  the maximum value for this type (if base type is scalar)
-  -->
-<!ELEMENT typedef (documentation?, in-implementation*, help*) >
-
-<!ATTLIST typedef 
-	name 		  CDATA 						#REQUIRED
-	type 		  (%DefinableDataTypes;) 		#IMPLIED
-	size 		  CDATA 						#IMPLIED
-	pattern 	CDATA 						#IMPLIED
-	minimum 	CDATA 						#IMPLIED
-	maximum 	CDATA 						#IMPLIED>
-
-<!--
-  information about how to translate a type into types known to different target
-  languages. TODO: Once again I'm not wholly comfortable with the name; I'm not 
-  really comfortable that this belongs in ADL at all.
-  
-  target:     the target language
-  value:      the type to use in that target language
-  kind:       OK, I confess I don't understand this, but Andrew needs it... 
--->
-<!ELEMENT in-implementation (documentation?)>
-
-<!ATTLIST in-implementation
-      target  CDATA           #REQUIRED
-      value   CDATA           #REQUIRED
-      kind    CDATA           #IMPLIED>
-
-<!-- 
-  a group of people with similar permissions to one another 
-  
-  name: the name of this group
-  parent: the name of a group of which this group is subset
-  -->
-<!ELEMENT group (documentation?)>
-
-<!ATTLIST group 
-  name      CDATA             #REQUIRED
-  parent    CDATA             #IMPLIED>
-
-
-
-<!-- 
-	an entity which has properties and relationships; maps onto a database
-	table or a Java serialisable class - or, of course, various other things
-  
-  name:         obviously, the name of this entity
-  natural-key:  if present, the name of a property of this entity which forms
-                a natural primary key [NOTE: Only partly implemented. NOTE: much of
-                the present implementation assumes all primary keys will be 
-                integers. This needs to be fixed!] DEPRECATED: remove; replace with the
-                'key' element, below.
-  table:        the name of the table in which this entity is stored. Defaults to same
-                as name of entity. Strongly recommend this is not used unless it needs
-                to be different from the name of the entity
-  foreign:      this entity is part of some other system; no code will be generated
-                for it, although code which links to it will be generated
--->
-<!ELEMENT entity ( documentation?, content?, key?,
-      (property)*,
-      permission*, (form | page | list)*)>
-<!ATTLIST entity 
-    name      CDATA           #REQUIRED
-    natural-key CDATA         #IMPLIED
-    table     CDATA           #IMPLIED
-    foreign   %Boolean;       #IMPLIED>
-
-<!-- 
-  contains documentation on the element which immediately contains it. TODO:
-  should HTML markup within a documentation element be allowed? If so, are
-  there restrictions?
--->
-<!ELEMENT documentation ( #PCDATA|reference)*>
-<!ATTLIST documentation
-  xmlns     CDATA             #IMPLIED>
-
-
-<!-- an explicit primary key, possibly compound -->
-<!ELEMENT key (property*)>
-
-
-<!-- 
-	a property (field) of an entity (table) 
-	
-	name:			  the name of this property.
-	type:			  the type of this property.
-	default:		the default value of this property. There will probably be 
-					    magic values of this!
-	typedef:	  name of the typedef to use, it type = 'defined'.
-	distinct:		distinct='system' required that every value in the system 
-					    will be distinct (i.e. natural primary key);
-					    distinct='user' implies that the value may be used by users 
-					    in distinguishing entities even if values are not formally 
-					    unique; 
-					    distinct='all' implies that the values are formally unique 
-					    /and/ are user friendly (NOTE: not implemented).
-	entity:			if type='entity', the name of the entity this property is 
-					    a foreign key link to.
-              if type='list', the name of the entity that has a foreign 
-              key link to this entity
-  farkey:     if type='list', the name of farside key in the listed 
-              entity; if type='entity' and the farside field to join to 
-              is not the farside primary key, then the name of that
-              farside field
-	required:		whether this propery is required (i.e. 'not null').
-	size: 			fieldwidth of the property if specified.
-  concrete:   if set to 'false', this property is not stored in the 
-              database but must be computed (manually written code must
-              be provided to support this)
-  cascade:    what action(s) on the parent entity should be cascaded to
-              entitie(s) linked on this property. Valid only if type='entity',
-              type='link' or type='list'.
-  column:     name of the column in a SQL database table in which this property
-              is stored. TODO: Think about this.
-  unsaved-value:
-              of a property whose persistent value is set on first being 
-              committed to persistent store, the value which it holds before
-              it has been committed
--->
-<!ELEMENT property ( documentation?, generator?, permission*, option*, prompt*, help*, ifmissing*)>
-
-<!ATTLIST property 
-	name 		    CDATA 					#REQUIRED
-	type 		    (%AllDataTypes;)  #REQUIRED
-	default 	  CDATA 					#IMPLIED
-	typedef 	CDATA 					#IMPLIED
-	distinct 	  (none|all|user|system) 	#IMPLIED
-	entity 		  CDATA 					#IMPLIED
-  farkey      CDATA           #IMPLIED
- 	required 	  %Boolean; 			#IMPLIED
-	size 		    CDATA 					#IMPLIED
-  column      CDATA           #IMPLIED
-  concrete    %Boolean;       #IMPLIED
-  cascade     (%CascadeActions;)  #IMPLIED>
-
-
-<!-- 
-  marks a property which is auto-generated by some part of the system. 
-  This is based on the Hibernate construct, except that the Hibernate 
-  implementation folds both its internal generators and custom generators 
-  onto the same attribute. This separates them onto two attributes so we 
-  can police values for Hibernate's 'builtin' generators.
-  
-  action:       one of the supported Hibernate builtin generators, or 
-                'manual'. 'native' is strongly recommended in most instances
-  class:        if action is 'manual', the name of a manually maintained 
-                class conforming to the Hibernate IdentifierGenerator 
-                interface, or its equivalent in other languages
--->
-<!ELEMENT generator (documentation?, param*)>
-<!ATTLIST generator
-      action  (%GeneratorActions;)    #REQUIRED
-      class   CDATA                   #IMPLIED>
-
-<!--
-  A parameter passed to the generator. Again, based on the Hibernate 
-  implementation. TODO: #PCDATA is wrong as the content model, as embedded
-  markup is definitely not allowed!
-  
-  name:   the name of this parameter
-  
-  TODO: This needs to be renamed or removed because it conflicts with the
-  XHTML element of the same name. In fact it could be simply removed since 
-  our usage is compatible with the XHTML usage, but it might be less 
-  ambiguous to rename it.
--->
-<!ELEMENT param (#PCDATA)>
-<!ATTLIST param
-  name        CDATA           #REQUIRED>
-
-
-
-<!-- 
-	one of an explicit list of optional values a property may have 
-	NOTE: whether options get encoded at application layer or at database layer 
-	is UNDEFINED; either behaviour is correct. If at database layer it's also 
-	UNDEFINED whether they're encoded as a single reference data table or as 
-	separate reference data tables for each property.
-	
-	value:	the value of this option
-
-	TODO: This needs to be renamed or removed because it conflicts with the
-	XHTML element of the same name. In fact it could be simply removed since 
-	our usage is compatible with the XHTML usage, but it might be less 
-	ambiguous to rename it.
--->
-<!ELEMENT option (documentation?, prompt*)>
-<!-- if the value is different from the prompt the user sees, specify it -->
-<!ATTLIST option 
-  value       CDATA           #IMPLIED>
-
-
-<!-- 
-	permissions policy on an entity, a page, form, list or field 
-	
-	group: 			the group to which permission is granted
-	permission:		the permission which is granted to that group
--->
-<!ELEMENT permission (documentation?)>
-<!ATTLIST permission 
-	group 		  CDATA 					#REQUIRED
-	permission 	(%Permissions;) #REQUIRED>
-
-
-<!--
-  pragmatic advice to generators of lists and forms, in the form of 
-  name/value pairs which may contain anything. Over time some pragmas
-  will become 'well known', but the whole point of having a pragma
-  architecture is that it is extensible.
--->
-<!ELEMENT pragma (documentation?)>
-<!ATTLIST pragma
-  name        CDATA           #REQUIRED
-  value       CDATA           #REQUIRED>
-
-<!-- 
-	a prompt for a property or field; used as the prompt text for a widget 
-	which edits it. Typically there will be only one of these per property
-  per locale; if there are more than one all those matching the locale may
-  be concatenated, or just one may be used.
-	
-	prompt:			the prompt to use
-	locale:			the locale in which to prefer this prompt	
--->
-<!ELEMENT prompt (documentation?)>
-<!ATTLIST prompt
-	prompt		  CDATA				  	#REQUIRED
-	locale		  %Locale;				#REQUIRED >
-
-<!-- 
-	helptext about a property of an entity, or a field of a page, form or 
-	list, or a typedef. Typically there will be only one of these per property
-  per locale; if there are more than one all those matching the locale may
-  be concatenated, or just one may be used.
-
-	locale:			the locale in which to prefer this prompt	
--->
-<!ELEMENT help (#PCDATA)>
-<!ATTLIST help
-	locale		  %Locale;				#REQUIRED
-  xmlns     CDATA             #IMPLIED >
-
-<!--
-  helpful text to be shown if a property value is missing, typically when 
-  a form is submitted. Typically there will be only one of these per property
-  per locale; if there are more than one all those matching the locale may
-  be concatenated, or just one may be used. Later there may be more sophisticated
-  behaviour here.
--->
-<!ELEMENT ifmissing (#PCDATA)>
-<!ATTLIST ifmissing
-  locale      %Locale;        #REQUIRED
-  xmlns     CDATA             #IMPLIED>
-
-<!-- a form through which an entity may be added or edited
-
-  TODO: This needs to be renamed because it conflicts with the
-  XHTML element of the same name. 
--->
-<!ELEMENT form (documentation?, ( %PageStuff;)*)>
-<!ATTLIST form %PageAttrs;>
-
-
-<!-- a page on which an entity may be displayed -->
-<!ELEMENT page (documentation?, ( %PageStuff;)*)>
-<!ATTLIST page %PageAttrs;>
-
-
-<!-- 
-	a list on which entities of a given type are listed
-
-	onselect:		name of form/page/list to go to when
-					    a selection is made from the list 
--->
-<!ELEMENT list (documentation?, ( %PageStuff;)*)>
-<!ATTLIST list %PageAttrs;
-	onselect	  CDATA 					#IMPLIED >
-
-
-<!--
-  a subsidiary list, on which entities related to primary
-  entities in the enclosing page or list are listed
-  
-  property:   the property of the enclosing entity that this
-              list displays (obviously, must be of type='list')
-  onselect:   the form or page of the listed entity to call
-              when an item from the list is selected
-  canadd:     true if the user should be able to add records
-              to this list
-  -->
-<!ELEMENT auxlist (documentation?, (prompt|%FieldStuff;)*)>
-<!ATTLIST auxlist %PageAttrs;
-  property    CDATA           #REQUIRED
-  onselect    CDATA           #IMPLIED
-  canadd      %Boolean;       #IMPLIED>
-
-<!--
-  a group of fields and other controls within a form or list, which the 
-  renderer might render as a single pane in a tabbed display, for example.
-  -->
-<!ELEMENT fieldgroup (documentation?, (prompt|%FieldStuff;)*)>
-<!ATTLIST fieldgroup
-  name        CDATA           #REQUIRED>
-
-
-<!-- a field in a form or page
-
-  property:   the property which this field displays/edits
-  -->
-<!ELEMENT field (documentation?, prompt*, help*, permission*) >
-<!ATTLIST field 
-  property    CDATA           #REQUIRED >
-
-<!-- a verb is something that may be done through a form. Probably the verbs 'store' 
-  and 'delete' are implied, but maybe they need to be explicitly declared. The 'verb'
-  attribute of the verb is what gets returned to the controller -->
-<!ELEMENT verb (documentation?, prompt*, help*, permission*) >
-<!ATTLIST verb
-  verb        CDATA           #REQUIRED
-  dangerous   %Boolean;       #REQUIRED>
-
-
-<!-- a container for global content -->
-<!ELEMENT content (%Content;)*>
-
-
-<!-- 
-	content to place in the head of the generated document; this is #PCDATA 
-	because it will almost certainly belong to a different namespace 
-	(usually HTML)
-
-	TODO: This needs to be renamed or removed because it conflicts with the
-	XHTML element of the same name. In fact it could be simply removed since 
-	our usage is compatible with the XHTML usage, but it might be less 
-	ambiguous to rename it.
--->
-<!ELEMENT head (#PCDATA) >
-<!ATTLIST head
-  xmlns     CDATA             #IMPLIED>
-
-
-<!-- 
-	content to place in the top of the body of the generated document; 
-	this is %Flow; which is any HTML block or inline level element.
--->
-<!ELEMENT top (#PCDATA) >
-<!ATTLIST top
-  xmlns     CDATA             #IMPLIED>
-
-<!-- 
-	content to place at the foot of the body of the generated document; 
-	this is %Flow; which is any HTML block or inline level element.
--->
-<!ELEMENT foot (#PCDATA) >
-<!ATTLIST foot
-  xmlns     CDATA             #IMPLIED>
-
-<!-- 
-	The 'specification' and 'reference' elements are for documentation only,
-	and do not contribute to the engineering of the application described.
-	
-	A specification element is intended chiefly to declare the reference
-	documents which may be used in documentation elements later in the 
-	document. 
-	
-	url:		The URL from which the document referenced can be retrieved
-	name:		The full name (title) given to this document
-	abbr:		A convenient abbreviated name
--->
-<!ELEMENT specification (documentation?, reference*)>
-<!ATTLIST specification
-		url			CDATA	#IMPLIED
-		name		CDATA	#REQUIRED
-		abbr		CDATA	#REQUIRED
-		>
-
-<!-- 
-	The 'specification' and 'reference' elements are for documentation only,
-	and do not contribute to the engineering of the application described.
-	
-	A reference element is a reference to a specifying document. 
-	
-	abbr:		The abbreviated name of the specification to which this
-				reference refers
-	section:	The 'anchor part' (part following a hash character) which,
-				when appended to the URL, will locate the exact section
-				referenced.
-	entity:		A reference to another entity within this ADL document
-	property:	A reference to another property within this ADL document;
-				if entity is also specified then of that entity, else of
-				the ancestor entity if any
-	-->
-<!ELEMENT reference (documentation?)>
-<!ATTLIST reference
-		abbr		CDATA	#IMPLIED
-		section		CDATA	#IMPLIED
-		entity		CDATA	#IMPLIED
-		property	CDATA	#IMPLIED
-		>
-
diff --git a/schemas/adl-0.xsd b/schemas/adl-0.xsd
deleted file mode 100755
index ff738a4..0000000
--- a/schemas/adl-0.xsd
+++ /dev/null
@@ -1,582 +0,0 @@
-<schema
-  xmlns='http://www.w3.org/2001/XMLSchema'
-  targetNamespace='http://www.cygnets.co.uk/schemas/adl-0.xsd'
-  xmlns:adl='http://www.cygnets.co.uk/schemas/adl-0.xsd'
-  xmlns:html='http://www.w3.org/1999/xhtml'>
-
-  <!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-  <!--						    												-->
-  <!--	adl-0.xsd																-->
-  <!--																			-->
-  <!--	Purpose:																-->
-  <!--	XML Schema for Application Description Language. Note that this			-->
-  <!--        is experimental; the DTD is still normative at this stage			-->
-  <!--        This revision autoconverted using dtd2xsd.pl from					-->
-  <!--        adl-0.dtd revision 1.2											-->
-  <!--																			-->
-  <!--	Author:		Simon Brooke <sb@cygnets.co.uk>								-->
-  <!--	Created:	9th January 2008											-->
-  <!--  $Revision: 1.3 $														-->
-  <!--	Copyright:	(c) 2008 Cygnet Solutions Ltd								-->
-  <!--																			-->
-  <!--  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -->
-
-  <!-- the application that the document describes: required top level element -->
-	<element name='application'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:content' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:definition' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:group' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:entity' minOccurs='0' maxOccurs='unbounded'/>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='version' type='string' use='optional'/>
-		</complexType>
-	</element>
-
-	<!-- 
-	the definition of a defined type. At this stage a defined type is either
-	a string		in which case it must have size and pattern, or
-	a scalar		in which case it must have minimum and/or maximum
-	pattern must be a regular expression as interpreted by org.apache.regexp.RE
-	minimum and maximum must be of appropriate format for the datatype specified.
-	Validation may be done client-side and/or server-side at application layer
-	and/or server side at database layer.
-
-  name:     the name of this definition
-  type:     the simple type on which this defined type is based
-  size:     the data size of this defined type
-  pattern:  a regular expression which values for this type must match
-  minimum:  the minimum value for this type (if base type is scalar)
-  maximum:  the maximum value for this type (if base type is scalar)
-  -->
-	<element name='definition'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='type' use='required'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='string'/>
-						<enumeration value='integer'/>
-						<enumeration value='real'/>
-						<enumeration value='money'/>
-						<enumeration value='date'/>
-						<enumeration value='time'/>
-						<enumeration value='timestamp'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-			<attribute name='size' type='string' use='optional'/>
-			<attribute name='pattern' type='string' use='optional'/>
-			<attribute name='minimum' type='string' use='optional'/>
-			<attribute name='maximum' type='string' use='optional'/>
-		</complexType>
-	</element>
-
-	<!-- 
-  a group of people with similar permissions to one another 
-  name: the name of this group
-  parent: the name of a group of which this group is subset
-  -->
-	<element name='group'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='parent' type='string' use='optional'/>
-		</complexType>
-	</element>
-
-	<!-- 
-	an entity which has properties and relationships; maps onto a database
-	table or a Java serialisable class - or, of course, various other things
-  
-  name:         obviously, the name of this entity
-  natural-key:  if present, the name of a property of this entity which forms
-                a natural primary key [NOTE: Only partly implemented. NOTE: much of
-                the present implementation assumes all primary keys will be 
-                integers. This needs to be fixed!]
--->
-	<element name='entity'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:content' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:property' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/>
-				<choice minOccurs='0' maxOccurs='unbounded'>
-					<element ref='adl:form'/>
-					<element ref='adl:page'/>
-					<element ref='adl:list'/>
-				</choice>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='natural-key' type='string' use='optional'/>
-		</complexType>
-	</element>
-
-	<!-- 
-  contains documentation on the element which immediately contains it. TODO:
-  should HTML markup within a documentation element be allowed? If so, are
-  there restrictions?
--->
-	<element name='documentation'>
-		<complexType mixed='true'>
-		</complexType>
-	</element>
-
-	<!-- 
-	a property (field) of an entity (table) 
-	
-	name:			  the name of this property.
-	type:			  the type of this property.
-	default:			the default value of this property. There will probably be 
-					    magic values of this!
-	definition:	name of the definition to use, it type = 'defined'.
-	distinct:		distinct='system' required that every value in the system 
-					    will be distinct (i.e. natural primary key);
-					    distinct='user' implies that the value may be used by users 
-					    in distinguishing entities even if values are not formally 
-					    unique; 
-					    distinct='all' implies that the values are formally unique 
-					    /and/ are user friendly (NOTE: not implemented).
-	entity:			if type='entity', the name of the entity this property is 
-					    a foreign key link to.
-              if type='list', the name of the entity that has a foreign 
-              key link to this entity
-  farkey:     if type='list', the name of farside key in the listed 
-              entity
-	required:		whether this propery is required (i.e. 'not null').
-	size: 			fieldwidth of the property if specified.
-  concrete:   if set to 'false', this property is not stored in the 
-              database but must be computed (manually written code must
-              be provided to support this)
--->
-	<element name='property'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:option' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:ifmissing' minOccurs='0' maxOccurs='unbounded'/>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='type' use='required'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='entity'/>
-						<enumeration value='link'/>
-						<enumeration value='list'/>
-						<enumeration value='defined'/>
-						<enumeration value='string'/>
-						<enumeration value='integer'/>
-						<enumeration value='real'/>
-						<enumeration value='money'/>
-						<enumeration value='date'/>
-						<enumeration value='time'/>
-						<enumeration value='timestamp'/>
-						<enumeration value='boolean'/>
-						<enumeration value='text'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-			<attribute name='default' type='string' use='optional'/>
-			<attribute name='definition' type='string' use='optional'/>
-			<attribute name='distinct' use='optional'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='none'/>
-						<enumeration value='all'/>
-						<enumeration value='user'/>
-						<enumeration value='system'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-			<attribute name='entity' type='string' use='optional'/>
-			<attribute name='farkey' type='string' use='optional'/>
-			<attribute name='required' use='optional'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='true'/>
-						<enumeration value='false'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-			<attribute name='size' type='string' use='optional'/>
-			<attribute name='concrete' use='optional'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='true'/>
-						<enumeration value='false'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-		</complexType>
-	</element>
-
-	<!-- 
-	one of an explicit list of optional values a property may have 
-	NOTE: whether options get encoded at application layer or at database layer 
-	is UNDEFINED; either behaviour is correct. If at database layer it's also 
-	UNDEFINED whether they're encoded as a single reference data table or as 
-	separate reference data tables for each property.
--->
-	<element name='option'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/>
-			</sequence>
-			<attribute name='value' type='string' use='optional'/>
-		</complexType>
-	</element>
-
-	<!-- 
-	permissions policy on an entity, a page, form, list or field 
-	
-	group: 			the group to which permission is granted
-	permission:		the permission which is granted to that group
--->
-	<element name='permission'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-			</sequence>
-			<attribute name='group' type='string' use='required'/>
-			<attribute name='permission' use='required'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='none'/>
-						<enumeration value='read'/>
-						<enumeration value='insert'/>
-						<enumeration value='noedit'/>
-						<enumeration value='edit'/>
-						<enumeration value='all'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-		</complexType>
-	</element>
-
-	<!--
-  pragmatic advice to generators of lists and forms, in the form of 
-  name/value pairs which may contain anything. Over time some pragmas
-  will become 'well known', but the whole point of having a pragma
-  architecture is that it is extensible.
--->
-	<element name='pragma'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='value' type='string' use='required'/>
-		</complexType>
-	</element>
-
-	<!-- 
-	a prompt for a property or field; used as the prompt text for a widget 
-	which edits it. Typically there will be only one of these per property
-  per locale; if there are more than one all those matching the locale may
-  be concatenated, or just one may be used.
-	
-	prompt:			the prompt to use
-	locale:			the locale in which to prefer this prompt	
--->
-	<element name='prompt'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-			</sequence>
-			<attribute name='prompt' type='string' use='required'/>
-			<attribute name='locale' type='string' use='required'/>
-		</complexType>
-	</element>
-
-	<!-- 
-	helptext about a property of an entity, or a field of a page, form or 
-	list, or a definition. Typically there will be only one of these per property
-  per locale; if there are more than one all those matching the locale may
-  be concatenated, or just one may be used.
-
-	locale:			the locale in which to prefer this prompt	
--->
-	<element name='help'>
-		<complexType mixed='true'>
-			<attribute name='locale' type='string' use='required'/>
-		</complexType>
-	</element>
-
-	<!--
-  helpful text to be shown if a property value is missing, typically when 
-  a form is submitted. Typically there will be only one of these per property
-  per locale; if there are more than one all those matching the locale may
-  be concatenated, or just one may be used. Later there may be more sophisticated
-  behaviour here.
--->
-	<element name='ifmissing'>
-		<complexType mixed='true'>
-			<attribute name='locale' type='string' use='required'/>
-		</complexType>
-	</element>
-
-	<!-- a form through which an entity may be added or edited -->
-	<element name='form'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<choice minOccurs='0' maxOccurs='unbounded'>
-					<element ref='adl:head'/>
-					<element ref='adl:top'/>
-					<element ref='adl:foot'/>
-					<element ref='adl:field'/>
-					<element ref='adl:fieldgroup'/>
-					<element ref='adl:auxlist'/>
-					<element ref='adl:verb'/>
-					<element ref='adl:permission'/>
-					<element ref='adl:pragma'/>
-				</choice>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='properties' use='required'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='all'/>
-						<enumeration value='user-distict'/>
-						<enumeration value='listed'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-		</complexType>
-	</element>
-
-	<!-- a page on which an entity may be displayed -->
-	<element name='page'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<choice minOccurs='0' maxOccurs='unbounded'>
-					<element ref='adl:head'/>
-					<element ref='adl:top'/>
-					<element ref='adl:foot'/>
-					<element ref='adl:field'/>
-					<element ref='adl:fieldgroup'/>
-					<element ref='adl:auxlist'/>
-					<element ref='adl:verb'/>
-					<element ref='adl:permission'/>
-					<element ref='adl:pragma'/>
-				</choice>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='properties' use='required'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='all'/>
-						<enumeration value='user-distict'/>
-						<enumeration value='listed'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-		</complexType>
-	</element>
-
-	<!-- 
-	a list on which entities of a given type are listed
-
-	onselect:		name of form/page/list to go to when
-					    a selection is made from the list 
--->
-	<element name='list'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<choice minOccurs='0' maxOccurs='unbounded'>
-					<element ref='adl:head'/>
-					<element ref='adl:top'/>
-					<element ref='adl:foot'/>
-					<element ref='adl:field'/>
-					<element ref='adl:fieldgroup'/>
-					<element ref='adl:auxlist'/>
-					<element ref='adl:verb'/>
-					<element ref='adl:permission'/>
-					<element ref='adl:pragma'/>
-				</choice>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-			<attribute name='properties' use='required'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='all'/>
-						<enumeration value='user-distict'/>
-						<enumeration value='listed'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-			<attribute name='onselect' type='string' use='optional'/>
-		</complexType>
-	</element>
-
-	<!--
-  a subsidiary list, on which entities related to primary
-  entities in the enclosing page or list are listed
-  
-  property:   the property of the enclosing entity that this
-              list displays (obviously, must be of type='list')
-  onselect:   the form or page of the listed entity to call
-              when an item from the list is selected
-  canadd:     true if the user should be able to add records
-              to this list
-  -->
-	<element name='auxlist'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<choice minOccurs='0' maxOccurs='unbounded'>
-					<element ref='adl:prompt'/>
-					<element ref='adl:field'/>
-					<element ref='adl:fieldgroup'/>
-					<element ref='adl:auxlist'/>
-					<element ref='adl:verb'/>
-				</choice>
-			</sequence>
-			<attribute name='property' type='string' use='required'/>
-			<attribute name='onselect' type='string' use='optional'/>
-			<attribute name='canadd' use='optional'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='true'/>
-						<enumeration value='false'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-		</complexType>
-	</element>
-
-	<!--
-  a group of fields and other controls within a form or list, which the 
-  renderer might render as a single pane in a tabbed display, for example.
-  -->
-	<element name='fieldgroup'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<choice minOccurs='0' maxOccurs='unbounded'>
-					<element ref='adl:prompt'/>
-					<element ref='adl:field'/>
-					<element ref='adl:fieldgroup'/>
-					<element ref='adl:auxlist'/>
-					<element ref='adl:verb'/>
-				</choice>
-			</sequence>
-			<attribute name='name' type='string' use='required'/>
-		</complexType>
-	</element>
-
-	<!-- a field in a form or page
-
-  property:   the property which this field displays/edits
-  -->
-	<element name='field'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/>
-			</sequence>
-			<attribute name='property' type='string' use='required'/>
-		</complexType>
-	</element>
-
-	<!-- a verb is something that may be done through a form. Probably the verbs 'store' 
-  and 'delete' are implied, but maybe they need to be explicitly declared. The 'verb'
-  attribute of the verb is what gets returned to the controller -->
-	<element name='verb'>
-		<complexType>
-			<sequence>
-				<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
-				<element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/>
-				<element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/>
-			</sequence>
-			<attribute name='verb' type='string' use='required'/>
-			<attribute name='dangerous' use='required'>
-				<simpleType>
-					<restriction base='string'>
-						<enumeration value='true'/>
-						<enumeration value='false'/>
-					</restriction>
-				</simpleType>
-			</attribute>
-		</complexType>
-	</element>
-
-	<!-- a container for global content -->
-	<element name='content'>
-		<complexType>
-			<choice minOccurs='0' maxOccurs='unbounded'>
-				<element ref='adl:head'/>
-				<element ref='adl:top'/>
-				<element ref='adl:foot'/>
-			</choice>
-		</complexType>
-	</element>
-
-	<!-- 
-	content to place in the head of the generated document; this is #PCDATA 
-	because it will almost certainly belong to a different namespace 
-	(usually HTML)
--->
-	<element name='head'>
-		<complexType>
-			<sequence>
-				<any namespace="http://www.w3.org/1999/xhtml"
-					 minOccurs="1" maxOccurs="unbounded"
-					 processContents="skip"/>
-			</sequence>
-		</complexType>
-	</element>
-
-	<!-- 
-	content to place in the top of the body of the generated document; 
-	this is #PCDATA because it will almost certainly belong to a different 
-	namespace (usually HTML)
-   
-   Schema only: no harm in this being required to be contained in an HTML div
--->
-	<element name='top'>
-		<complexType>
-			<sequence>
-				<any namespace="http://www.w3.org/1999/xhtml"
-					 minOccurs="1" maxOccurs="unbounded"
-					 processContents="skip"/>
-			</sequence>
-		</complexType>
-	</element>
-
-	<!-- 
-	content to place at the foot of the body of the generated document; 
-	this is #PCDATA because it will almost certainly belong to a different 
-	namespace (usually HTML)
-   
-   Schema only: no harm in this being required to be contained in an HTML div
--->
-	<element name='foot'>
-		<complexType>
-			<sequence>
-				<any namespace="http://www.w3.org/1999/xhtml"
-					 minOccurs="1" maxOccurs="unbounded"
-					 processContents="skip"/>
-			</sequence>
-		</complexType>
-	</element>
-</schema>