(i) is now valid
(ii) allows HTML in head, top and foot
This commit is contained in:
sb 2008-01-09 15:42:32 +00:00
parent f59c6bf601
commit e672bbd40f

View file

@ -1,41 +1,42 @@
<schema <schema
xmlns='http://www.w3.org/2000/10/XMLSchema' xmlns='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://www.cygnets.co.uk/schemas/adl/' targetNamespace='http://www.cygnets.co.uk/schemas/adl-0.xsd'
xmlns:adl='http://www.cygnets.co.uk/schemas/adl/'> xmlns:adl='http://www.cygnets.co.uk/schemas/adl-0.xsd'
xmlns:html='http://www.w3.org/1999/xhtml'>
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> <!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<!-- --> <!-- -->
<!-- adl-0.xsd --> <!-- adl-0.xsd -->
<!-- --> <!-- -->
<!-- Purpose: --> <!-- Purpose: -->
<!-- XML Schema Application Description Language. Note that this --> <!-- XML Schema for Application Description Language. Note that this -->
<!-- is experimental; the DTD is still normative at this stage --> <!-- is experimental; the DTD is still normative at this stage -->
<!-- This revision autoconverted using dtd2xsd.pl from --> <!-- This revision autoconverted using dtd2xsd.pl from -->
<!-- adl-0.dtd revision 1.2 --> <!-- adl-0.dtd revision 1.2 -->
<!-- --> <!-- -->
<!-- Author: Simon Brooke <simon@cygnets.co.uk> --> <!-- Author: Simon Brooke <simon@cygnets.co.uk> -->
<!-- Created: 9th January 2008 --> <!-- Created: 9th January 2008 -->
<!-- $Revision: 1.1 $ <!-- $Revision: 1.2 $ -->
<!-- Copyright: (c) 2008 Cygnet Solutions Ltd --> <!-- Copyright: (c) 2008 Cygnet Solutions Ltd -->
<!-- --> <!-- -->
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> <!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<!-- the application that the document describes: required top level element --> <!-- the application that the document describes: required top level element -->
<element name='application'> <element name='application'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<element ref='adl:content' minOccurs='0' maxOccurs='1'/> <element ref='adl:content' minOccurs='0' maxOccurs='1'/>
<element ref='adl:definition' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:definition' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:group' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:group' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:entity' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:entity' minOccurs='0' maxOccurs='unbounded'/>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='version' type='string' use='optional'/> <attribute name='version' type='string' use='optional'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
the definition of a defined type. At this stage a defined type is either 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 string in which case it must have size and pattern, or
a scalar in which case it must have minimum and/or maximum a scalar in which case it must have minimum and/or maximum
@ -51,49 +52,49 @@
minimum: the minimum value for this type (if base type is scalar) minimum: the minimum value for this type (if base type is scalar)
maximum: the maximum value for this type (if base type is scalar) maximum: the maximum value for this type (if base type is scalar)
--> -->
<element name='definition'> <element name='definition'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='type' use='required'> <attribute name='type' use='required'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='string'/> <enumeration value='string'/>
<enumeration value='integer'/> <enumeration value='integer'/>
<enumeration value='real'/> <enumeration value='real'/>
<enumeration value='money'/> <enumeration value='money'/>
<enumeration value='date'/> <enumeration value='date'/>
<enumeration value='time'/> <enumeration value='time'/>
<enumeration value='timestamp'/> <enumeration value='timestamp'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
<attribute name='size' type='string' use='optional'/> <attribute name='size' type='string' use='optional'/>
<attribute name='pattern' type='string' use='optional'/> <attribute name='pattern' type='string' use='optional'/>
<attribute name='minimum' type='string' use='optional'/> <attribute name='minimum' type='string' use='optional'/>
<attribute name='maximum' type='string' use='optional'/> <attribute name='maximum' type='string' use='optional'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
a group of people with similar permissions to one another a group of people with similar permissions to one another
name: the name of this group name: the name of this group
parent: the name of a group of which this group is subset parent: the name of a group of which this group is subset
--> -->
<element name='group'> <element name='group'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='parent' type='string' use='optional'/> <attribute name='parent' type='string' use='optional'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
an entity which has properties and relationships; maps onto a database an entity which has properties and relationships; maps onto a database
table or a Java serialisable class - or, of course, various other things table or a Java serialisable class - or, of course, various other things
@ -103,35 +104,35 @@
the present implementation assumes all primary keys will be the present implementation assumes all primary keys will be
integers. This needs to be fixed!] integers. This needs to be fixed!]
--> -->
<element name='entity'> <element name='entity'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<element ref='adl:content' minOccurs='0' maxOccurs='1'/> <element ref='adl:content' minOccurs='0' maxOccurs='1'/>
<element ref='adl:property' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:property' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/>
<choice minOccurs='0' maxOccurs='unbounded'> <choice minOccurs='0' maxOccurs='unbounded'>
<element ref='adl:form'/> <element ref='adl:form'/>
<element ref='adl:page'/> <element ref='adl:page'/>
<element ref='adl:list'/> <element ref='adl:list'/>
</choice> </choice>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='natural-key' type='string' use='optional'/> <attribute name='natural-key' type='string' use='optional'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
contains documentation on the element which immediately contains it. TODO: contains documentation on the element which immediately contains it. TODO:
should HTML markup within a documentation element be allowed? If so, are should HTML markup within a documentation element be allowed? If so, are
there restrictions? there restrictions?
--> -->
<element name='documentation'> <element name='documentation'>
<complexType mixed='true'> <complexType mixed='true'>
</complexType> </complexType>
</element> </element>
<!-- <!--
a property (field) of an entity (table) a property (field) of an entity (table)
name: the name of this property. name: the name of this property.
@ -158,131 +159,131 @@
database but must be computed (manually written code must database but must be computed (manually written code must
be provided to support this) be provided to support this)
--> -->
<element name='property'> <element name='property'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:option' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:option' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:ifmissing' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:ifmissing' minOccurs='0' maxOccurs='unbounded'/>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='type' use='required'> <attribute name='type' use='required'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='entity'/> <enumeration value='entity'/>
<enumeration value='link'/> <enumeration value='link'/>
<enumeration value='list'/> <enumeration value='list'/>
<enumeration value='defined'/> <enumeration value='defined'/>
<enumeration value='string'/> <enumeration value='string'/>
<enumeration value='integer'/> <enumeration value='integer'/>
<enumeration value='real'/> <enumeration value='real'/>
<enumeration value='money'/> <enumeration value='money'/>
<enumeration value='date'/> <enumeration value='date'/>
<enumeration value='time'/> <enumeration value='time'/>
<enumeration value='timestamp'/> <enumeration value='timestamp'/>
<enumeration value='boolean'/> <enumeration value='boolean'/>
<enumeration value='text'/> <enumeration value='text'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
<attribute name='default' type='string' use='optional'/> <attribute name='default' type='string' use='optional'/>
<attribute name='definition' type='string' use='optional'/> <attribute name='definition' type='string' use='optional'/>
<attribute name='distinct' use='optional'> <attribute name='distinct' use='optional'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='none'/> <enumeration value='none'/>
<enumeration value='all'/> <enumeration value='all'/>
<enumeration value='user'/> <enumeration value='user'/>
<enumeration value='system'/> <enumeration value='system'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
<attribute name='entity' type='string' use='optional'/> <attribute name='entity' type='string' use='optional'/>
<attribute name='farkey' type='string' use='optional'/> <attribute name='farkey' type='string' use='optional'/>
<attribute name='required' use='optional'> <attribute name='required' use='optional'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='true'/> <enumeration value='true'/>
<enumeration value='false'/> <enumeration value='false'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
<attribute name='size' type='string' use='optional'/> <attribute name='size' type='string' use='optional'/>
<attribute name='concrete' use='optional'> <attribute name='concrete' use='optional'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='true'/> <enumeration value='true'/>
<enumeration value='false'/> <enumeration value='false'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
</complexType> </complexType>
</element> </element>
<!-- <!--
one of an explicit list of optional values a property may have one of an explicit list of optional values a property may have
NOTE: whether options get encoded at application layer or at database layer 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 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 UNDEFINED whether they're encoded as a single reference data table or as
separate reference data tables for each property. separate reference data tables for each property.
--> -->
<element name='option'> <element name='option'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/>
</sequence> </sequence>
<attribute name='value' type='string' use='optional'/> <attribute name='value' type='string' use='optional'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
permissions policy on an entity, a page, form, list or field permissions policy on an entity, a page, form, list or field
group: the group to which permission is granted group: the group to which permission is granted
permission: the permission which is granted to that group permission: the permission which is granted to that group
--> -->
<element name='permission'> <element name='permission'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
</sequence> </sequence>
<attribute name='group' type='string' use='required'/> <attribute name='group' type='string' use='required'/>
<attribute name='permission' use='required'> <attribute name='permission' use='required'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='none'/> <enumeration value='none'/>
<enumeration value='read'/> <enumeration value='read'/>
<enumeration value='insert'/> <enumeration value='insert'/>
<enumeration value='noedit'/> <enumeration value='noedit'/>
<enumeration value='edit'/> <enumeration value='edit'/>
<enumeration value='all'/> <enumeration value='all'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
</complexType> </complexType>
</element> </element>
<!-- <!--
pragmatic advice to generators of lists and forms, in the form of pragmatic advice to generators of lists and forms, in the form of
name/value pairs which may contain anything. Over time some pragmas name/value pairs which may contain anything. Over time some pragmas
will become 'well known', but the whole point of having a pragma will become 'well known', but the whole point of having a pragma
architecture is that it is extensible. architecture is that it is extensible.
--> -->
<element name='pragma'> <element name='pragma'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='value' type='string' use='required'/> <attribute name='value' type='string' use='required'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
a prompt for a property or field; used as the prompt text for a widget 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 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 per locale; if there are more than one all those matching the locale may
@ -291,17 +292,17 @@
prompt: the prompt to use prompt: the prompt to use
locale: the locale in which to prefer this prompt locale: the locale in which to prefer this prompt
--> -->
<element name='prompt'> <element name='prompt'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
</sequence> </sequence>
<attribute name='prompt' type='string' use='required'/> <attribute name='prompt' type='string' use='required'/>
<attribute name='locale' type='string' use='required'/> <attribute name='locale' type='string' use='required'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
helptext about a property of an entity, or a field of a page, form or 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 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 per locale; if there are more than one all those matching the locale may
@ -309,122 +310,122 @@
locale: the locale in which to prefer this prompt locale: the locale in which to prefer this prompt
--> -->
<element name='help'> <element name='help'>
<complexType mixed='true'> <complexType mixed='true'>
<attribute name='locale' type='string' use='required'/> <attribute name='locale' type='string' use='required'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
helpful text to be shown if a property value is missing, typically when 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 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 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 be concatenated, or just one may be used. Later there may be more sophisticated
behaviour here. behaviour here.
--> -->
<element name='ifmissing'> <element name='ifmissing'>
<complexType mixed='true'> <complexType mixed='true'>
<attribute name='locale' type='string' use='required'/> <attribute name='locale' type='string' use='required'/>
</complexType> </complexType>
</element> </element>
<!-- a form through which an entity may be added or edited --> <!-- a form through which an entity may be added or edited -->
<element name='form'> <element name='form'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<choice minOccurs='0' maxOccurs='unbounded'> <choice minOccurs='0' maxOccurs='unbounded'>
<element ref='adl:head'/> <element ref='adl:head'/>
<element ref='adl:top'/> <element ref='adl:top'/>
<element ref='adl:foot'/> <element ref='adl:foot'/>
<element ref='adl:field'/> <element ref='adl:field'/>
<element ref='adl:fieldgroup'/> <element ref='adl:fieldgroup'/>
<element ref='adl:auxlist'/> <element ref='adl:auxlist'/>
<element ref='adl:verb'/> <element ref='adl:verb'/>
<element ref='adl:permission'/> <element ref='adl:permission'/>
<element ref='adl:pragma'/> <element ref='adl:pragma'/>
</choice> </choice>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='properties' use='required'> <attribute name='properties' use='required'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='all'/> <enumeration value='all'/>
<enumeration value='user-distict'/> <enumeration value='user-distict'/>
<enumeration value='listed'/> <enumeration value='listed'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
</complexType> </complexType>
</element> </element>
<!-- a page on which an entity may be displayed --> <!-- a page on which an entity may be displayed -->
<element name='page'> <element name='page'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<choice minOccurs='0' maxOccurs='unbounded'> <choice minOccurs='0' maxOccurs='unbounded'>
<element ref='adl:head'/> <element ref='adl:head'/>
<element ref='adl:top'/> <element ref='adl:top'/>
<element ref='adl:foot'/> <element ref='adl:foot'/>
<element ref='adl:field'/> <element ref='adl:field'/>
<element ref='adl:fieldgroup'/> <element ref='adl:fieldgroup'/>
<element ref='adl:auxlist'/> <element ref='adl:auxlist'/>
<element ref='adl:verb'/> <element ref='adl:verb'/>
<element ref='adl:permission'/> <element ref='adl:permission'/>
<element ref='adl:pragma'/> <element ref='adl:pragma'/>
</choice> </choice>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='properties' use='required'> <attribute name='properties' use='required'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='all'/> <enumeration value='all'/>
<enumeration value='user-distict'/> <enumeration value='user-distict'/>
<enumeration value='listed'/> <enumeration value='listed'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
</complexType> </complexType>
</element> </element>
<!-- <!--
a list on which entities of a given type are listed a list on which entities of a given type are listed
onselect: name of form/page/list to go to when onselect: name of form/page/list to go to when
a selection is made from the list a selection is made from the list
--> -->
<element name='list'> <element name='list'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<choice minOccurs='0' maxOccurs='unbounded'> <choice minOccurs='0' maxOccurs='unbounded'>
<element ref='adl:head'/> <element ref='adl:head'/>
<element ref='adl:top'/> <element ref='adl:top'/>
<element ref='adl:foot'/> <element ref='adl:foot'/>
<element ref='adl:field'/> <element ref='adl:field'/>
<element ref='adl:fieldgroup'/> <element ref='adl:fieldgroup'/>
<element ref='adl:auxlist'/> <element ref='adl:auxlist'/>
<element ref='adl:verb'/> <element ref='adl:verb'/>
<element ref='adl:permission'/> <element ref='adl:permission'/>
<element ref='adl:pragma'/> <element ref='adl:pragma'/>
</choice> </choice>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
<attribute name='properties' use='required'> <attribute name='properties' use='required'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='all'/> <enumeration value='all'/>
<enumeration value='user-distict'/> <enumeration value='user-distict'/>
<enumeration value='listed'/> <enumeration value='listed'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
<attribute name='onselect' type='string' use='optional'/> <attribute name='onselect' type='string' use='optional'/>
</complexType> </complexType>
</element> </element>
<!-- <!--
a subsidiary list, on which entities related to primary a subsidiary list, on which entities related to primary
entities in the enclosing page or list are listed entities in the enclosing page or list are listed
@ -435,128 +436,147 @@
canadd: true if the user should be able to add records canadd: true if the user should be able to add records
to this list to this list
--> -->
<element name='auxlist'> <element name='auxlist'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<choice minOccurs='0' maxOccurs='unbounded'> <choice minOccurs='0' maxOccurs='unbounded'>
<element ref='adl:prompt'/> <element ref='adl:prompt'/>
<element ref='adl:field'/> <element ref='adl:field'/>
<element ref='adl:fieldgroup'/> <element ref='adl:fieldgroup'/>
<element ref='adl:auxlist'/> <element ref='adl:auxlist'/>
<element ref='adl:verb'/> <element ref='adl:verb'/>
</choice> </choice>
</sequence> </sequence>
<attribute name='property' type='string' use='required'/> <attribute name='property' type='string' use='required'/>
<attribute name='onselect' type='string' use='optional'/> <attribute name='onselect' type='string' use='optional'/>
<attribute name='canadd' use='optional'> <attribute name='canadd' use='optional'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='true'/> <enumeration value='true'/>
<enumeration value='false'/> <enumeration value='false'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
</complexType> </complexType>
</element> </element>
<!-- <!--
a group of fields and other controls within a form or list, which the 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. renderer might render as a single pane in a tabbed display, for example.
--> -->
<element name='fieldgroup'> <element name='fieldgroup'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<choice minOccurs='0' maxOccurs='unbounded'> <choice minOccurs='0' maxOccurs='unbounded'>
<element ref='adl:prompt'/> <element ref='adl:prompt'/>
<element ref='adl:field'/> <element ref='adl:field'/>
<element ref='adl:fieldgroup'/> <element ref='adl:fieldgroup'/>
<element ref='adl:auxlist'/> <element ref='adl:auxlist'/>
<element ref='adl:verb'/> <element ref='adl:verb'/>
</choice> </choice>
</sequence> </sequence>
<attribute name='name' type='string' use='required'/> <attribute name='name' type='string' use='required'/>
</complexType> </complexType>
</element> </element>
<!-- a field in a form or page <!-- a field in a form or page
property: the property which this field displays/edits property: the property which this field displays/edits
--> -->
<element name='field'> <element name='field'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/>
</sequence> </sequence>
<attribute name='property' type='string' use='required'/> <attribute name='property' type='string' use='required'/>
</complexType> </complexType>
</element> </element>
<!-- a verb is something that may be done through a form. Probably the verbs 'store' <!-- 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' 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 --> attribute of the verb is what gets returned to the controller -->
<element name='verb'> <element name='verb'>
<complexType> <complexType>
<sequence> <sequence>
<element ref='adl:documentation' minOccurs='0' maxOccurs='1'/> <element ref='adl:documentation' minOccurs='0' maxOccurs='1'/>
<element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:prompt' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:help' minOccurs='0' maxOccurs='unbounded'/>
<element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/> <element ref='adl:permission' minOccurs='0' maxOccurs='unbounded'/>
</sequence> </sequence>
<attribute name='verb' type='string' use='required'/> <attribute name='verb' type='string' use='required'/>
<attribute name='dangerous' use='required'> <attribute name='dangerous' use='required'>
<simpleType> <simpleType>
<restriction base='string'> <restriction base='string'>
<enumeration value='true'/> <enumeration value='true'/>
<enumeration value='false'/> <enumeration value='false'/>
</restriction> </restriction>
</simpleType> </simpleType>
</attribute> </attribute>
</complexType> </complexType>
</element> </element>
<!-- a container for global content --> <!-- a container for global content -->
<element name='content'> <element name='content'>
<complexType> <complexType>
<choice minOccurs='0' maxOccurs='unbounded'> <choice minOccurs='0' maxOccurs='unbounded'>
<element ref='adl:head'/> <element ref='adl:head'/>
<element ref='adl:top'/> <element ref='adl:top'/>
<element ref='adl:foot'/> <element ref='adl:foot'/>
</choice> </choice>
</complexType> </complexType>
</element> </element>
<!-- <!--
content to place in the head of the generated document; this is #PCDATA content to place in the head of the generated document; this is #PCDATA
because it will almost certainly belong to a different namespace because it will almost certainly belong to a different namespace
(usually HTML) (usually HTML)
--> -->
<element name='head'> <element name='head'>
<complexType mixed='true'> <complexType>
</complexType> <sequence>
</element> <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; 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 this is #PCDATA because it will almost certainly belong to a different
namespace (usually HTML) namespace (usually HTML)
Schema only: no harm in this being required to be contained in an HTML div
--> -->
<element name='top'> <element name='top'>
<complexType mixed='true'> <complexType>
</complexType> <sequence>
</element> <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; 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 this is #PCDATA because it will almost certainly belong to a different
namespace (usually HTML) namespace (usually HTML)
Schema only: no harm in this being required to be contained in an HTML div
--> -->
<element name='foot'> <element name='foot'>
<complexType mixed='true'> <complexType>
</complexType> <sequence>
</element> <any namespace="http://www.w3.org/1999/xhtml"
minOccurs="1" maxOccurs="unbounded"
processContents="skip"/>
</sequence>
</complexType>
</element>
</schema> </schema>