<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
User Interface Markup Language (UIML)
=====================================
From: http://www.uiml.org/specs/uiml3/UIML3_0a_i.htm
Developed by:
Harmonia, Inc.
Usage:
<?xml version="1.0"?>
<!DOCTYPE uiml PUBLIC "-//Harmonia//DTD UIML 3.0a Draft//EN"
"http://uiml.org/dtds/UIML3_0a.dtd">
NOTE: This URL has not yet been activated.
<uiml>
<head> ... </head>
<template> ... </template>
<peers> ... </peers>
<interface> ... </interface>
</uiml>
Description:
This DTD corresponds to the UIML 3.0a specification.
Change History:
06 Feb 2002 - J Helms
- Initial Draft and added <repeat> and <iterator>
02 July 2002 - K Rodriguez
- Correct syntax errors in param, repeat, and iterator
-->
<!-- ==================== Content Models ======================= -->
<!--
'uiml' is the root element of a UIML document.
-->
<!ELEMENT uiml (head?,(template|interface|peers)*) >
<!--
The 'head' element is meant to contain metadata about the UIML
document. You can specify metadata using the meta tag,
this is similar to the head/meta from HTML.
-->
<!ELEMENT head (meta)*>
<!ELEMENT meta EMPTY>
<!ATTLIST meta
name NMTOKEN #REQUIRED
content CDATA #REQUIRED>
<!--
The 'peers' element contains information that defines
how a UIML interface component is mapped to the target platform's
rendering technology and to the backend logic.
-->
<!ELEMENT peers (presentation|logic)*>
<!ATTLIST peers
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
The 'interface' element describes a user interface in terms of
presentation widgets, component structure and behavior specifications.
-->
<!ELEMENT interface (structure|style|content|behavior)*>
<!ATTLIST interface
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
The 'template' element enables reuse of UIML elements.
When an element appears inside a template element it can
sourced by another element with the same tag.
-->
<!ELEMENT template (behavior|constant|content|d-class|d-component|interface
|logic|part|peers|presentation|property|restructure|rule
|script|structure|style)>
<!ATTLIST template
id NMTOKEN #IMPLIED>
<!-- Peer related elements -->
<!--
The 'presentation' element specifies the mapping between
abstract interface parts and platform dependent widgets.
-->
<!ELEMENT presentation (d-class*)>
<!ATTLIST presentation
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
base CDATA #REQUIRED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
The 'logic' element specifies the connection between the interface
and the backend application, including support for scripting.
-->
<!ELEMENT logic (d-component*)>
<!ATTLIST logic
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
The 'd-component' element maps the name used in a <call> element to
application logic external to the UIML document (e.g., a class in an
object oriented language or a function in a scripting langauge).
-->
<!ELEMENT d-component (d-method)*>
<!ATTLIST d-component
id NMTOKEN #REQUIRED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional"
maps-to CDATA #IMPLIED
location CDATA #IMPLIED>
<!--
Maps class names that can be used for parts and events, as
well as property and event data names, to UI toolkit.
-->
<!ELEMENT d-class (d-method*, d-property*, event*, listener*)>
<!ATTLIST d-class
id NMTOKEN #REQUIRED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional"
used-in-tag (event|listener|part) #REQUIRED
maps-type (attribute|tag|class) #REQUIRED
maps-to CDATA #REQUIRED>
<!--
Maps a property name to methods in UI toolkit that get and
set property’s value.
-->
<!ELEMENT d-property (d-method*, d-param*)>
<!ATTLIST d-property
id NMTOKEN #REQUIRED
maps-type (attribute|getMethod|setMethod|method) #REQUIRED
maps-to CDATA #REQUIRED
return-type CDATA #IMPLIED>
<!--
Maps a method to a callable method or function in the API of
the application logic.
-->
<!ELEMENT d-method (d-param*, script?)>
<!ATTLIST d-method
id NMTOKEN #REQUIRED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional"
maps-to CDATA #REQUIRED
return-type CDATA #IMPLIED>
<!--
Defines a single formal parameter to a <d-method>.
-->
<!ELEMENT d-param (#PCDATA)>
<!ATTLIST d-param
id NMTOKEN #IMPLIED
type CDATA #IMPLIED>
<!--
The 'script' element contains executable script code. The type
specifies the scripting language (see HTML4.0).
-->
<!ELEMENT script (#PCDATA)>
<!ATTLIST script
id NMTOKEN #IMPLIED
type NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!-- Interface related elements -->
<!--
The 'structure' element describes the initial organization of the
parts that comprise the user interface.
-->
<!ELEMENT structure (part*)>
<!ATTLIST structure
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
Specifies a single abstract part of the user interface.
-->
<!ELEMENT part (style?, content?, behavior?, part*, repeat*)>
<!ATTLIST part
id NMTOKEN #IMPLIED
class NMTOKEN #IMPLIED
source CDATA #IMPLIED
where (first|last|before|after) "last"
where-part NMTOKEN #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
A 'repeat' element encapsulates a sub-tree of the overall interface
virtual tree to be repeated 0 or more times. Each repeat MUST
have one 'iterator' child.
-->
<!ELEMENT repeat (iterator,part*)>
<!--
An 'iterator' defines how many times a sub-tree should be repeated
in an interface and serves as a indicator of the current iteration.
-->
<!ELEMENT iterator (#PCDATA|constant|property|call)*>
<!ATTLIST iterator
id NMTOKEN #REQUIRED>
<!--
A 'style' element is composed of one or more 'property' elements,
each of which specifies how a particular aspect of an interface
component's presentation is to be presented.
-->
<!ELEMENT style (property*)>
<!ATTLIST style
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
A 'property' element is typically used to set a specified
property for some interface component (or alternatively,
a class of interface components), using the element's
character data content as the value. If the 'operation'
attribute is given as "get", the element is equivalent to
a property-get operation, the value of which may be "returned"
as the content for an enclosing 'property' element.
-->
<!ELEMENT property (#PCDATA|constant|property|reference|call|op|event|iterator)*>
<!ATTLIST property
name NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional"
part-name NMTOKEN #IMPLIED
part-class NMTOKEN #IMPLIED
event-name NMTOKEN #IMPLIED
event-class NMTOKEN #IMPLIED
call-name NMTOKEN #IMPLIED
call-class NMTOKEN #IMPLIED>
<!--
A 'reference' may be thought of as a property-get operation,
where the "property" to be read is a 'constant' element defined
in the UIML document's 'content' section.
-->
<!ELEMENT reference EMPTY>
<!ATTLIST reference
constant-name NMTOKEN #IMPLIED
url-name NMTOKEN #IMPLIED>
<!--
The 'content' element is composed of one or more 'constant'
elements, each of which specifies some fixed value.
-->
<!ELEMENT content (constant*)>
<!ATTLIST content
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
'constant' elements may be hierarchically structured.
-->
<!ELEMENT constant (constant*)>
<!ATTLIST constant
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional"
model CDATA #IMPLIED
value CDATA #IMPLIED>
<!--
The 'behavior' element gives one or more "rule"s that
specifies what 'action' is to be taken whenever an associated
'condition' becomes TRUE.
-->
<!ELEMENT behavior (rule*)>
<!ATTLIST behavior
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!ELEMENT rule (condition,action)?>
<!ATTLIST rule
id NMTOKEN #IMPLIED
source CDATA #IMPLIED
how (union|cascade|replace) "replace"
export (hidden|optional|required) "optional">
<!--
At the moment, "rule"s may be associated with two types of
conditions: (1) whenever some expression is equal to some other
expression; and (2) whenever some event is triggered and caught.
-->
<!ELEMENT condition (equal|event|op)>
<!ELEMENT equal (event,(constant|property|reference|op))>
<!ELEMENT op (constant|property|reference|call|op|event)*>
<!ATTLIST op
name CDATA #REQUIRED>
<!ELEMENT action (((property|call|restructure)*,event?)|(when-true?,when-false?,by-default?))>
<!ELEMENT when-true ((property|call)*,restructure?,op?,equal?,event?)>
<!ELEMENT when-false ((property|call)*,restructure?,op?,equal?,event?)>
<!ELEMENT by-default ((property|call)*,restructure?,op?,equal?,event?)>
<!ELEMENT restructure (template)?>
<!ATTLIST restructure
at-part NMTOKEN #IMPLIED
how (union|cascade|replace|delete) "replace"
where (first|last|before|after) "last"
where-part NMTOKEN #IMPLIED
source CDATA #IMPLIED>
<!ELEMENT call (param*)>
<!ATTLIST call
name NMTOKEN #IMPLIED
class NMTOKEN #IMPLIED>
<!--
'event' denotes one of three things:
(1) When a child of <condition> or <op>, denotes that when the named
event is fired, the condition should be evaluated.
(2) When a child of <action>, denotes that the named event should
be fired.
(3) Inside <d-class>, denotes that the named event can occur for
the part class named by the <d-class>.
-->
<!ELEMENT event EMPTY>
<!ATTLIST event
name NMTOKEN #IMPLIED
class NMTOKEN #IMPLIED
part-name NMTOKEN #IMPLIED
part-class NMTOKEN #IMPLIED>
<!--
'param' denotes a single actual parameter to a call-able routine.
-->
<!ELEMENT param (#PCDATA|property|reference|call|op|event|constant|iterator)*>
<!ATTLIST param
name NMTOKEN #IMPLIED>
<!--
'listener' denotes that a name defined with d-class
used-in-tag="listener" should be attached as a listener to the
d-class which contains this <listener> element.
-->
<!ELEMENT listener EMPTY>
<!ATTLIST listener
class NMTOKEN #IMPLIED
attacher CDATA #IMPLIED>