ISO/IEC JTC 1/SC34 N0060
ISO/IEC JTC 1/SC34
Information Technology ---
Document Description and Processing Languages
TITLE: | Interchange Standard for Multimedia Interactive Documents (ISMID, ISO/IEC CD 13250) |
SOURCE: | ISMID Editors |
PROJECT: | |
PROJECT EDITOR: | Norman Chenard, David Cooper |
STATUS: | Proposed new text |
ACTION: | For FCD ballot |
DATE: | 20 May 1999 |
DISTRIBUTION: | SC34 and Liaisons |
REFER TO: | |
REPLY TO: | Dr. James David Mason (ISO/IEC JTC1/SC34 Chaiman) Lockheed Martin Energy Systems Information Management Services 1060 Commerce Park, M.S. 6480 Oak Ridge, TN 37831-6480 U.S.A. Telephone: +1 423 574-6973 Facsimile: +1 423 574-0004 Network: [email protected] http://www.jtc1sc34.org/wg4/ ftp://ftp.ornl.gov/pub/sgml/wg4/ |
Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission) form the specialized system for worldwide standardization. National bodies that are members of ISO or IEC participate in the development of International Standards through technical committees established by the respective organization to deal with particular fields of technical activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other international organization, governmental and non-governmental, in liaison with ISO and IEC, also take part in the work
In the field of information technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1. Draft International Standards adopted by the joint technical committee are circulated to national bodies for voting. Publication as an International Standard requires approval by at least 75% of the national bodies casting a vote.
International Standard ISO/IEC 13250 was prepared by Joint Technical Committee JTC1, Information technology.
Introduction
Interactive documents combine data content with instructions that define the behavior of the interactive document; that is, how and when the content is represented on a computer display. Because a reader's interactions with a document might be important to its presentation, a standard way to encode behavior instructions associated with specific content is essential if the document is to be transportable. This standard focuses on the representation of the behavioral aspects of interactive documents and hyperdocuments. The language defined in this standard facilitates the interchange of interactive documents among heterogeneous development and delivery systems by defining the behavioral aspects of interactive documents independent of proprietary scripting or processing languages.
Interactive Documents
In the context of interactive documents, interactive means that a software application is responsible for dynamically rendering content in response to stimuli from users or other sources. The response is often to tailor the content and presentation of subsequent information. Therefore, to create an interactive document, developers must consider a philosophy different from that used to create documents and hyperdocuments that will be presented in a static manner; they must program behavior into the document. The inclusion of the behavior component is one facet of interactive documents that can cause incompatibility between interactive document development and delivery systems.
It is important to recognize the distinction between "document" in the SGML sense (a static source of data) and "document" in the rendition sense (a particular view or presentation of the source data). It is also important to recognize that any document can be made interactive in sense (1) through the application of behavioral style. Throughout this standard the term interactive document is used when referring to the presentation of the source data.
Document Standards
Standards currently exist for describing the structure, content, and static presentation of documents and hyperdocuments. The Interchange Standard for Multimedia Interactive Documents (ISMID) adds the missing component - a standard for representing the behavior of documents in an unambiguous way for the purpose of interchange among heterogeneous interactive document development and delivery systems. The behavior definition may be embedded within the documents to which it applies.
While there are established standards for implementing Graphical User Interface objects in a programming context, there is a need for a standard that will allow developers of interactive documents to express in a device independent manner how they intended to make use of those interface objects. ISMID provides an architecture for defining how the interface objects communicate with the structured content covered by existing standards.
Because the presentation of interface objects in interactive documents is often integral to the message being communicated, ISMID allows the developer to specify presentation properties of the interface objects. Types of presentation properties could include things such as font, color, and location of the object. It is up to the interactive document developer to decide whether ISMID is used to apply these properties or whether a style specification language like DSSSL is used.
Scope
Definition of scope
This International Standard, known as the Interchange Standard for Multimedia Interactive Documents or ISMID, facilitates the interchange of Multimedia Interactive Documents (MIDs) among heterogeneous interactive document development and delivery systems by providing the architecture from which common interchange languages can be created. ISMID is a client architecture of International Standard ISO/IEC10744:1997, Information technology -- Hypermedia/Time-based Structuring Language (HyTime) and is an SGML application conforming to International Standard ISO 8879 -- Standard Generalized Markup Language.
ISMID also specifies use of the DSSSL expression language described in clause 8 of ISO/IEC 10179:1992 Information technology -- Processing languages -- Document Style Semantics and Specification Language (DSSSL).
In general, the rendering of a Multimedia Interactive Document (MID) requires three major components:
- Content: the information that the document author intended to communicate to the user of the MID;
- Behavior: the instructions that govern what, when, where, and how content is presented, and how the MID responds to stimuli from various sources; and
- Software: the application that interprets behavior, retrieves the content, and presents the information to the user.
Various vendors, standards bodies, and other groups define the notations (such as SGML for text, CGM for graphics, MPEG for video, and WAV for audio) with which the information in the content component is represented. It is up to software vendors to determine the most effective way to implement the software component. Therefore, the ISMID standard addresses only the behavior component.
The ISMID Architecture
The ISMID standard defines an architecture that enables authors and developers to describe the behavior component of MIDs in a device-independent manner. This architecture is known as the ISMID architecture (clause 9). The ISMID architecture defines architectural forms for the behavior component.
The ISMID architecture includes:
- Interface objects;
- Container objects that are used to group other interface objects (e.g., Windows, Frames, Panels);
- Content objects that are used to render specific information content (e.g., Video, Image, Audio, Animation, Text);
- Control objects through which interaction with the MID takes place (e.g., Button, Scroll Bar, List Box, Check Box). Control objects enable users to make decisions and facilitate navigation through a MID instance;
- External objects are used to allow the MID to communicate with external systems such as the computer operating environment or a diagnostic system.
- Stimuli, which are actions received via the interface objects; and
- Responses, which are reactions performed by the MID in response to a given stimulus.
Although interface objects are listed as a major part of the ISMID architecture, ISMID does not define architectural forms that represent these objects directly. Instead these objects are specified using architectural forms to describe the creation, modification, and destruction of the objects. The architectural forms for creation, modification, and destruction of objects are classified as responses because a MID would create, modify, or destroy an object only in response to a stimulus from a user or some other source.
The stimulus and response element forms in the architecture provide the templates for specific ISMID applications. These architectural forms within the architecture are general enough to allow for any new stimulus and response elements that may be required in the future.
It is important to note that content objects are not the actual information being conveyed to the user, but are used to render and manipulate the information. The information referenced by content objects can be reused, and can reside in various external notations that are independent of the content object.
The Example ISMID application
An example ISMID application is included in this standard (non-normative annex B). The example defines a set of elements, derived from the architecture, for stimuli and responses. The semantics of the forms in the example reflect the objects, stimuli, and responses used in state-of-the-art interactive document development and delivery systems. For example, one of the element types defined in the example ISMID application is for displaying images. Because the image object is used to present information content to the user, the element is derived from the content object forms in the architecture.
The example elements implement all of the attributes of the architecture forms and add attributes that define the presentation properties of these objects as they exist in current use. For example, a button object in the example ISMID application has attributes that define properties for caption, visible, enabled, and foreground color.
It is envisioned that various industries and organizations will define ISMID applications in which they remove from and/or add to the specific objects, stimuli, and responses defined in the example application in order to meet the industry's requirements. These industry-defined applications shall also define the semantics of the objects, stimuli, and responses. Conforming ISMID applications must be defined according to the ISMID Application Definition Document (IADD) (Clause 10). The ISMID application in non-normative annex B is an example of an IADD.
The example application DTD in annex B includes notation forms for the most common information types in current use. These notation declarations do not imply that a conforming ISMID system must support these notations. The notations supported by an ISMID system shall be specified within the ISMID application. For example, the Department of Defense may specify that SGML must be supported for text while a commercial entity with existing software investments may prefer that RTF be supported for text. Which specific objects, stimuli, responses and notations must be supported for a particular industry or organization can be specified formally in the IADD.
Field of application
The field of application of ISMID is Electronic Performance Support Systems (EPSS), computer-based interactive document systems that provide users access to just-in-time information and on-the-job training. Two common types of EPSS are Interactive Electronic Technical Manuals (IETMs) and Interactive Courseware (ICW).
The use of EPSSs is increasing within many industries as the quantity of information that workers must have access to increases. Because organizations are increasing their investments in these systems, it is important that they have a way to protect their investments by representing all aspects of the EPSS in a device independent manner.
Conformance
Because ISMID is primarily a language that facilitates the interchange of interactive documents, it is not a conformance requirement that ISMID systems operate directly on the ISMID document in its native notation. Developers will probably chose to translate the ISMID representation to their own proprietary internal representation optimized for their application programs to execute.
A conforming ISMID system shall:
- be able to import any ISMID document that conforms to any application that the system claims to support.
- be able to export ISMID documents that conform to any applications that the system claims to support.
- as a minimum, support the HyTime modules and options specified in the ISMID HyTime support declaration (clause 7). A conforming system need not be limited to these modules and options. If additional modules and/or options are supported, they shall be specified in the systems HyTime support declaration.
- support the HyFunk expression language defined in clause 6.8.6 of ISO/IEC 10744:1997 Information technology -- Hypermedia/Time-based Structuring Language (HyTime)
- support all of the interface objects, stimuli, responses, and notations specified in a conforming ISMID application which the system claims to support.
- declare the ISMID applications it supports.
A conforming ISMID application shall:
- be defined by an IADD (Clause 10).
- be used as the means of representing a class of interactive documents applicable to a particular industry or organization.
- if the application makes use of HyTime modules and/or options in addition to those specified in the ISMID HyTime support declaration (clause 7), specify the additional modules and/or options in the applications HyTime support declaration.
A conforming ISMID document shall:
- be a conforming SGML document conforming to the encompassing architecture described in the IADD.
- contain all features that are required by the application.
- not exceed the feature set declared for any system that will operate on the document.
Normative references
ISO/IEC 10744:1997 Information technology -- Hypermedia/Time-based Structuring Language (HyTime).
ISO 8879:1986, Information processing -- Text and office systems -- Standard Generalized Markup Language (SGML).
ISO/IEC 10179:1992 Information technology -- Processing languages -- Document Style Semantics and Specification Language (DSSSL).
Definitions
behavior component
The instructions that govern how an interactive document responds to stimuli from various sources.
application
A DTD conforming to the ISMID architecture, and serving as the basis for a class of interactive documents e.g., for an industry.
container object
A type of interface object used to group other interface objects.
content object
A type of interface object used to render information content.
control object
A type of interface object through which interaction with an interactive document takes place.
document
As defined in ISO 8879:1986, a document is a collection of information that is identified as a unit and that is intended for human perception.
hyperdocument
As defined in ISO/IEC 10744:1997, a hyperdocument is two or more documents or other information objects that are connected to one another by one or more hyperlinks.
hyperlink
As defined in ISO/IEC 10744:1997, a hyperlink is an information structure that represents a relationship among two or more objects.
interface objects
Components of an interactive document that are the vehicle through which stimuli and responses occur.
interactive document
1. The presentation of a document in which the order, formatting, and content of the source information may be dynamically modified as the document is presented based on external stimuli (such as user interaction) and presentation algorithms defined within the document or within the software that governs the presentation of the document.
2. A source data collection that explicitly enables and defines the rules for its presentation as an interactive document.
NOTE 1. The source data for an interactive document need not explicitly enable or define its interactive behavior in order for it to be presented as an interactive document (in other words, all documents are potentially interactive whether or not they were originally authored with interactive presentation in mind). However, it is still useful to distinguish documents that explicitly enable and define interactive presentation from those that do not. In addition, through the use of location addressing it is possible to apply an explicitly interactive document to other documents in order to add explicit interaction definitions to them.
interactive document delivery system
The run-time software used to render an interactive document.
interactive document development system
A software system used to author interactive documents.
interactive presentation
A form of presentation of a document in which the order of navigation through the document content is modified during presentation in response to conditions.
NOTE 2. The modifications are typically in response to external stimuli, such as user interactions, which is why these presentations are termed "interactive". However, the dynamic modification can also be in response to presentation algorithms contained in the document or within the system controlling the presentation.
NOTE 3. A document need not be an interactive document in order for it to be the subject of an interactive presentation.
response
A reaction performed by the interactive document, triggered by a stimulus.
response chain
A predetermined sequence of responses that may be initiated by a single stimulus.
static document
- A document whose order of presentation is largely or entirely determined by the source order of the information.
- A document authored with the intent or expectation that the presentation will be static.
-
NOTE 4. any static document in sense (2) can be presented as an interactive document given the necessary presentation software and behavioral definition. This behavioral definition may be provided by ISMID documents.
static presentation
A form of presentation of a document in which the order of navigation through the document content is essentially the same as the order in which the content appears in the computer representation of the document.
NOTE 5. In a static presentation, any dynamic modification is typically limited to the navigational functionality offered by a printed volume, such as page-turning and cross-reference following.
stimulus
An action, received by an interface object, that triggers reactions performed by the interactive document.
stimulus-driven
A system in which action is initiated when an interface object receives a stimulus.
Symbols and abbreviations
DSSSL
Document Style Semantics and Specification Language
EPSS
Electronic Performance Support System
HyTime
Hypermedia/Time-based Structuring Language
ICW
Interactive Courseware
IADD
ISMID Application Definition Document
IETM
Interactive Electronic Technical Manual
ISMID
Interchange Standard for Multimedia Interactive Documents
MID
Multimedia Interactive Document
Notations
ISMID is an enabling architecture whose definition conforms to the Architectural Form Definition Requirements in Annex A.3 of ISO/IEC 10744:1997, Hypermedia/Time-based Structuring Language. The notation conventions used in this International Standard conform to clause 5 of the HyTime standard.
The ISMID HyTime support declarations
As a HyTime client architecture, ISMID uses the HyTime support declarations to specify the HyTime modules and options that must be supported by conforming ISMID systems.
<!NOTATION HyTime
PUBLIC "ISO/IEC 10744:1992//NOTATION AFDR ARCBASE
Hypermedia/Time-based Structuring Language (HyTime)//EN"
>
<!ATTLIST #NOTATION HyTime
ArcFormA NAME HyTime
ArcNamrA NAME HyNames
ArcSuprA NAME sHyTime
ArcIgnDA NAME HyIgnD
ArcDocF NAME #FIXED HyDoc
ArcDTD CDATA "HyTime"
ArcQuant CDATA #FIXED "NAMELEN 9"
ArcDataF NAME #FIXED HyBridN
ArcBridF NAME #FIXED HyBrid
ArcAuto (ArcAuto|nArcAuto) nArcAuto
ArcOptSA NAMES "GenArc base links"
GenArc CDATA "ireftype"
base CDATA "HyFunk"
locs CDATA "referatt refloc reftype mixedloc nameloc nmsploc treeloc"
links CDATA ""
sched CDATA ""
rend CDATA ""
anysgml (anysgml|nanysgml) anysgml
exrefs (exrefs|nexrefs) exrefs
refmodel (SGMLmdl|nSGMLmdl) nSGMLmdl
hyqcnt NUMBER 32
manyanch NUMBER #IMPLIED
manyaxes NUMBER "4"
>
<!ENTITY
HyTime
PUBLIC "ISO/IEC 10744:1992//DTD AFDR Meta-DTD
Hypermedia/Time-based Structuring Language (HyTime)//EN"
CDATA AFDRMeta
>
The ISMID expression language
A conforming ISMID system shall, at a minimum, support the HyTime Marker Function Language (HyFunk) expression language. This expression language is adequate for documents that require only integer arithmetic operations. HyFunk is based on the DSSSL expression Language. The following notation shall be used to specify use of HyFunk as the ISMID expression language.
<!notation HyFunk
PUBLIC "ISO/IEC 10744:1992//NOTATION HyTime Marker Function Language//EN">
If a richer set of expressions are required, the ISMID system shall support the expression language described in clause 8 of the DSSSL standard. The following notation shall be used to specify support of the DSSSL expression language within ISMID documents.
<!NOTATION DSSSLExp
PUBLIC "ISO/IEC 10179:1996//NOTATION DSSSL Expression Language Notation//EN">
The ISMID architecture
A MID is defined as a stimulus-driven application. This means that interface objects within the MID wait for a stimulus initiated by a user, an external system, or another interface object before responding.
For each stimulus, the author/developer of a MID instance can define a series of responses that, at runtime, determine how the interface object will respond to the stimulus. Specific stimulus types are defined in the IADD for each ISMID application. Each stimulus in the ISMID application implements the attributes of the corresponding stimulus element form in the ISMID architecture, from which the element is derived. For each stimulus, the author may specify a series of specific actions (e.g., creating, destroying, or modifying objects and variables) that will occur in the MID. For example, when the user clicks a "Show Video" button (i.e., when the interface object labeled "Show Video" receives a click stimulus from the user), the developer could program the "Show Video" button to respond by:
- Creating a Video Content Object;
- Creating a Stop Playing control object (button);
- Opening a video source in the Video Content Object;
- Playing the video; and
- Creating a series of responses within the click stimulus of the Stop Playing button that will terminate the playing of the video, or associating the click stimulus of the Stop Playing button with a previously defined response chain that will terminate the playing of the video.
Interface objects are the targets of user-, object- or externally-generated stimuli presented to the MID. The element type declaration for each element that creates or modifies an interface object can contain within its content model a series of stimulus elements. For example, a button control object could contain an "OnClick" stimulus and an "OnMouseOver" stimulus. Each stimulus element can contain a chain of one or more responses to be executed when the object receives the stimulus; this is referred to as "hard-coding" the response chain. Alternatively, the stimulus could reference a previously defined response chain; this is referred to as "soft-coding" the response chain.
Within a response chain, objects are created, modified, and destroyed. Control flow statements can also be included within response chains so that responses can be based on conditions or states within the MID.
Parameter entity declarations
Create object
Create object elements shall be used to create Container objects, Content objects, Control objects, and External objects.
<!entity % CreateObject "CreateContainer | CreateContentObject | CreateControl | CreateExternalObject">
Control flow
Control flow shall allow construction of If, While, and Switch constructs.
<!entity % ControlFlow "If | While | Switch">
Variable Types
<!entity % VariableTypes "Boolean | i1 | i2 | i4 | i8 | ui1 | ui2 | ui4 | ui8 | r4 | r8 | String | Char | Variant">
Location addressing
Intrinsic data content is presented to the user through content objects. The information that is to be presented to the user is located through the use of HyTime location addressing. Location addressing shall be in accordance with the following types defined in International Standard ISO/IEC10744:1997, Information technology -- Hypermedia/Time-based Structuring Language (HyTime).
<!entity % Locations "nameloc | treeloc">
Modify object
Create object elements shall be used to create Container objects, Content objects, Control objects, and External objects.
Modify object elements shall be used to modify any properties of existing Container objects, Content objects, Control objects, and External objects.
<!entity % ModifyObject "ModifyContainer | ModifyContentObject | ModifyControl | ModifyExternalObject">
Responses
Responses shall include CreateObject, ModifyObject, and control ControlFlow entities defined above. Responses shall also allow assignment of values to variables, destruction of objects, or execution of any predefined response chain or external process.
<!entity % Responses "%CreateObject; | %ControlFlow; | %ModifyObject; | DestroyObject | ExecuteChain | Execute">
Multimedia Interactive Document
The Multimedia Interactive Document (MID) element form is the document element form of an ISMID document. When the MID is initiated, it receives an OnSystemStart stimulus. In response to this stimulus, the MID executes the Responses in the SystemChain. Zero or more other response chains can be defined within the MID element but they are not executed until they are referenced through a stimulus within the MID. These response chains exist as a pool of functions that can be called as required throughout the MID.
The ID attribute is a unique identifier for each element of this type. The outermost container objects parent attribute must exhibit the value of this attribute.
<!element MID (ContentReference*, SystemChain, ResponseChain*)>
<!attlist MID
HyTime NAME #FIXED "HyBrid"
ID ID #REQUIRED>
<!element ContentReference (nmlist)>
<!attlist ContentReference
HyTime CDATA #FIXED "nameloc"
ContentNotExist (error | ignore) "ignore">
<!element nmlist (#PCDATA)>
<!attlist nmlist
HyTime CDATA #FIXED "nmlist"
nametype (element | entity) "entity"
docorsub #ENTITY #IMPLIED>
Property Values
Interactive documents often set the value of an object property relative to another objects property values. A HyTime value reference attribute shall be used to obtain the effective value of an attribute from the properties of another object.
NOTE 6. The "effective value" of an attribute is the value that an application or architectural processor needs, which is not necessarily limited to the types of data or objects that can be expressed through SGML's attribute value syntax.
The value of the value reference attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
A referential attribute value shall take precedence over any fixed attribute value defined in a document instance. If the effective value can not be resolved or if there is no referential attribute present, the value of the fixed attribute shall be used.
The referential attribute must refer to the ID of an Expression element that determines the effective value of the property attribute.
NOTE 7. For example, the position of a control element may be determined relative to the position of other control elements. In this case, the Expression element would contain a PropertyReference element that referred to a property of another object. The property, defined by the value of an attribute, would be resolved in the expression, and the results of the expression would be used as the effective value of the attribute. In this example, the value of the Left attriubute on the element with ID « ButtonX » is equal to the vlaue of the Left attribute on the element with ID « ButtonY » plus 100 pixels.
<CreateButton
ID="ButtonY"
leftLeft="200">
<Expression ExpressionLanguage="DSSSL" id="RelPosition">
(number->string
(+ (string->number
(attribute-string "LEFT"
(element-with-id ButtonY"))) 100))
(+ <PropertyReference idref="buttonY">left</PropRef> 200)</Expression>
<CreateButton ID="buttonX"
valueref="Left LeftRef"
Left="500"
LeftRef="RelPosition">
Interface Objects
There are three classes of interface objects: containers; content objects; and controls. Within a MID, these objects exist in a hierarchy. This means that each object is contained within some larger parent object. The only exception to this rule is the outermost container object, the parent of which must be the MID element. Each object specifies its parent explicitly rather than relying on the SGML hierarchy to indicate parent-child relationships. This approach gives authors direct control of the order that objects are created and destroyed.
Create a Container Object
The create container (CreateContainer) element shall be used to create objects whose primary purpose is grouping other interface objects within the interactive document. Each container object may define stimuli to which the system will respond. If no stimuli are included for the container, the container cannot receive stimuli from users or other sources.
NOTE 8. Examples of container objects are windows, panels, and frames.
Variable declarations and stimuli are associated with the CreateContainer element through their occurrence within the CreateContainers content model.
The HyTime ireftype attribute contains the name of the Parent attribute followed by a list of GIs that express which create object element types are valid as parents of this object. The first item in the system chain shall be a container whose Parent is the GI for the element derived from the MID architectural form. The value of this attribute shall be fixed in the encompassing architecture (DTD).
A HyTime valueref attribute shall be used to obtain the effective value of an attribute from the properties of another object (clause 9.3). The value of the valueref attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
The Parent attribute must reference element types derived from either the MID or the CreateContainer forms. The value of the Parent attribute for the outermost container object must be the value of the ID attribute of the element derived from the MID architectural form.
The ObjectNotExist attribute determines how the system shall handle the case where a referenced object is not found at runtime. The ObjectNotExist attribute applies to either a Parent container or an object used to provide the effective value for an attribute. The document author determines whether the "not found" condition should result in an error (that could be trapped or reported) or is ignored by the processing system. The default is to ignore the condition and continue processing.
NOTE 9. This attribute is provided to handle situations where interactive traversal leads to unexpected paths through the document, rather than to report logic errors. The error condition is most likely to occur when an object is either referenced before it is created or after it has been destroyed.
When an object expected to provide the effective value for an attribute does not exist and ObjectNotExist is set to « ignore, » the system shall use the fixed attribute value of required attributes. When a Parent container object does not exist, the content object shall not be created and ObjectNotExist shall determine whether the condition is reported or ignored.
The ID attribute is a unique identifier for each element of this type. Each object for which this object is the parent must exhibit the value of this attribute in its parent attribute.
The value of the Label attribute is a descriptive name for this object. This label may be used to identify the object to the user in the documentation or in the application.
<!element CreateContainer (VariableDeclaration*, Expression*, Stimulus*)>
<!attlist CreateContainer
HyTime NAME #FIXED "HyBrid"
ireftype CDATA #IMPLIED
valueref CDATA #IMPLIED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED>
Modify a Container Object
The modify container (ModifyContainer) element shall be used to redefine properties of an existing container object, to modify values of variables that were declared for the container object, and/or to specify new or modify existing responses to stimuli for this container object.
The HyTime ireftype attribute contains the name of the Object attribute followed by a list of GIs that express which CreateContainer element types are valid objects to be modified. It may also contain the name of the Parent attribute followed by a list of GIs that express which CreateContainer element types are valid parent objects.
A HyTime valueref attribute shall be used to obtain the effective value of an attribute from the properties of another object (clause 9.3). The value of the valueref attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
The Object attribute identifies the existing container object to be modified, by referring to its unique identifier. The Object attribute must reference element types derived from the CreateContainer form. The unique identifier (ID) shall not be modified, and the object label attribute (Label) shall not be modified. All other attributes of the object may be modified.
The Parent attribute may be optionally modified, but must continue to reference element types derived from either the MID or the CreateContainer forms.
NOTE 10. Modifying the Parent of a container object effectively moves all the contents of the container to the new Parent container.
The ObjectNotExist attribute determines how the system shall handle the case where a referenced object is not found at runtime. The ObjectNotExist attribute applies to a Parent container, an Object reference, or an object used to provide the effective value for an attribute. The document author determines whether the "not found" condition should result in an error (that could be trapped or reported) or is ignored by the processing system. The default is to ignore the condition and continue processing.
NOTE 11. This attribute is provided to handle situations where interactive traversal leads to unexpected paths through the document, rather than to report logic errors. The error condition is most likely to occur when an object is either referenced before it is created or after it has been destroyed.
When an object expected to provide the effective value for an attribute does not exist and ObjectNotExist is set to « ignore, » the system shall use the fixed attribute value of required attributes. When a Parent container object or an Object reference does not exist, the content object shall not be created and ObjectNotExist shall determine whether the condition is reported or ignored.
New variable assignments, and stimuli can be associated with the ModifyContainer element through their occurrence within the ModifyContainers content model. All variable declarations must occur when the object is created; new variables shall not be declared when modifying a container object.
All modifications of an object that use an expression to refer to a property attribute value refer to the current state of the object, not to the original creation state.
<!element ModifyContainer (Assign*, Expression*, Stimulus*)>
<!attlist ModifyContainer
HyTime NAME #FIXED "HyBrid"
ireftype CDATA #IMPLIED
valueref CDATA #IMPLIED
Object IDREF #REQUIRED
Parent IDREF #IMPLIED
ObjectNotExist (error | ignore) "ignore">
Create a Content Object
The create content object (CreateContentObject) element shall be used to create a host object for information content. If no stimuli are included for the content object, the content object cannot receive stimuli from users or other sources.
NOTE 12. Examples of content objects are text, image, video, audio, and animation objects.
The HyTime attribute ireftype associates names of referential attributes with element types to which their immediate targets must conform. This architectural declaration indicates that the SemanticContent attribute must reference a ContentReference element. In addition, the ireftype shall contain the name of the Parent attribute followed by a model group (contrained to be an "or group") that expresses which CreateContainer element types are valid as parents of this object. The value of this attribute shall be fixed in the encompassing architecture (DTD).
A HyTime valueref attribute shall be used to obtain the effective value of an attribute from the properties of another object (clause 9.3). The value of the valueref attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
The Parent attribute must reference element types derived from the CreateContainer form. The document author is responsible for ensuring that the parent container is created before any content object that references it. The application developer is responsible for checking for existence of parent objects, and responding as specified in the ObjectNotExist attribute.
The ObjectNotExist attribute determines how the system shall handle the case where a referenced object is not found at runtime. The ObjectNotExist attribute applies to either a Parent container or an object used to provide the effective value for an attribute. The document author determines whether the "not found" condition should result in an error (that could be trapped or reported) or is ignored by the processing system. The default is to ignore the condition and continue processing.
NOTE 13. This attribute is provided to handle situations where interactive traversal leads to unexpected paths through the document, rather than to report logic errors. The error condition is most likely to occur when an object is either referenced before it is created or after it has been destroyed.
When an object expected to provide the effective value for an attribute does not exist and ObjectNotExist is set to « ignore, » the system shall use the fixed attribute value of required attributes. When a Parent container object does not exist, the content object shall not be created and ObjectNotExist shall determine whether the condition is reported or ignored.
The SemanticContent attribute is used to locate information that will be rendered in the content object. The content is located by reference through the HyTime nameloc element called ContentReference.
The ID attribute is a unique identifier for each element of this type. Any control object that will be a child of this content object must exhibit the value of this ID attribute in the childs Parent attribute.
The value of the Label attribute is a descriptive name for this object. This label may be used to identify the object to the user in the documentation or in the application.
<!element CreateContentObject (VariableDeclaration*, Expression*, Stimulus*)>
<!attlist CreateContentObject
HyTime NAME #FIXED "HyBrid"
ireftype CDATA "SemanticContent ContentReference"
valueref CDATA #IMPLIED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
SemanticContent IDREF #IMPLIED
ID ID #REQUIRED
Label CDATA #IMPLIED>
Modify a Content Object
The modify content object (ModifyContentObject) element shall be used to redefine properties of an existing content object, to modify values of variables that were declared for the content object, and/or to specify new or modify existing responses to stimuli for this content object.
The HyTime attribute ireftype associates names of referential attributes with element types to which their immediate targets must conform. This architectural declaration indicates that the SemanticContent attribute must reference a ContentReference element. The ireftype shall also contain the name of the Object attribute followed by a model group (contrained to be an "or group") that expresses which CreateContentObject element types are valid objects. It may also contain the name of the Parent attribute followed by a model group (contrained to be an "or group") that expresses which CreateContainer element types are valid parent objects.
A HyTime valueref attribute shall be used to obtain the effective value of an attribute from the properties of another object (clause 9.3). The value of the valueref attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
The Object attribute identifies the existing content object to be modified, by referring to its unique identifier. The Object attribute must reference element types derived from the CreateContentObject form. The unique identifier (ID) shall not be modified, and the object label attribute (Label) shall not be modified. All other attributes of the object may be modified.
The Parent attribute may be optionally modified, but must continue to reference element types derived from the CreateContainer form.
NOTE 14. Modifying the Parent of a content object effectively moves the content a new Parent container. This could be used, for example, to support drag and drop functions.
The ObjectNotExist attribute determines how the system shall handle the case where a referenced object is not found at runtime. The ObjectNotExist attribute applies to either a Parent container or an object used to provide the effective value for an attribute. The document author determines whether the "not found" condition should result in an error (that could be trapped or reported) or is ignored by the processing system. The default is to ignore the condition and continue processing.
NOTE 15. This attribute is provided to handle situations where interactive traversal leads to unexpected paths through the document, rather than to report logic errors. The error condition is most likely to occur when an object is either referenced before it is created or after it has been destroyed.
When an object expected to provide the effective value for an attribute does not exist and ObjectNotExist is set to « ignore, » the system shall use the fixed attribute value of required attributes. When a Parent container object does not exist, the content object shall not be created and ObjectNotExist shall determine whether the condition is reported or ignored.
The SemanticContent attribute uses HyTime location addressing to reference the source data content that will populate the content object.
<!element ModifyContentObject (Assign*, Expression*, Stimulus*)>
<!attlist ModifyContentObject
HyTime NAME #FIXED "HyBrid"
ireftype CDATA "SemanticContent ContentReference"
valueref CDATA #IMPLIED
Object IDREF #REQUIRED
Parent IDREF #IMPLIED
ObjectNotExist (error | ignore) "ignore"
SemanticContent IDREF #IMPLIED >
Create a Control Object
The create control object (CreateControl) element shall be used to define selection, navigation, and input/output controls for interaction with users. If no stimuli are included for the control object, the control object cannot receive stimuli from users or other sources.
NOTE 16. Examples of control objects are buttons, check boxes, and scroll bars.
The HyTime ireftype attribute contains the name of the Parent attribute followed by a list of GIs that express which create object element types are valid as parents of this object. The value of this attribute shall be fixed in the encompassing architecture (DTD).
A HyTime valueref attribute shall be used to obtain the effective value of an attribute from the properties of another object (clause 9.3). The value of the valueref attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
The Parent attribute must reference element types derived from the CreateContainer or CreateContentObject forms.
The ObjectNotExist attribute determines how the system shall handle the case where a referenced object is not found at runtime. The ObjectNotExist attribute applies to either a Parent container or an object used to provide the effective value for an attribute. The document author determines whether the "not found" condition should result in an error (that could be trapped or reported) or is ignored by the processing system. The default is to ignore the condition and continue processing.
NOTE 17. This attribute is provided to handle situations where interactive traversal leads to unexpected paths through the document, rather than to report logic errors. The error condition is most likely to occur when an object is either referenced before it is created or after it has been destroyed.
When an object expected to provide the effective value for an attribute does not exist and ObjectNotExist is set to « ignore, » the system shall use the fixed attribute value of required attributes. When a Parent container object does not exist, the content object shall not be created and ObjectNotExist shall determine whether the condition is reported or ignored.
The ID attribute is a unique identifier for each element of this type.
The value of the Label attribute is a descriptive name for this object. This label may be used to identify the object to the user in the documentation or in the application.
<!element CreateControl (VariableDeclaration*, Expression*, Stimulus*)>
<!attlist CreateControl
HyTime NAME #FIXED "HyBrid"
ireftype CDATA #IMPLIED
valueref CDATA #IMPLIED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED>
Modify a Control Object
The modify control object (ModifyControl) element shall be used to redefine properties of an existing control object; to modify values of variables that were declared for the control object; and/or to specify new or modify existing responses to stimuli for this control object.
The HyTime ireftype attribute contains the name of the Object attribute followed by a list of GIs that express which CreateControl element types are valid objects to be modified. It may also contain the name of the Parent attribute followed by a list of GIs that express which CreateContainer or CreateContentObject element types are valid parent objects.
A HyTime valueref attribute shall be used to obtain the effective value of an attribute from the properties of another object (clause 9.3). The value of the valueref attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
The Object attribute identifies the existing container object to be modified, by referring to its unique identifier. The Object attribute must reference element types derived from the CreateControl form. The unique identifier (ID) of the CreateControl object shall not be modified, and the CreateControl object label attribute (Label) shall not be modified. All other attributes of the object may be modified.
The Parent attribute may be optionally modified, but must continue to reference element types derived from the CreateContainer or CreateContentObject forms.
NOTE 18. Modifying the Parent of a control object effectively moves the control to the new Parent container.
The ObjectNotExist attribute determines how the system shall handle the case where a referenced object is not found at runtime. The ObjectNotExist attribute applies to a Parent container, an Object reference, or an object used to provide the effective value for an attribute. The document author determines whether the "not found" condition should result in an error (that could be trapped or reported) or is ignored by the processing system. The default is to ignore the condition and continue processing.
NOTE 19. This attribute is provided to handle situations where interactive traversal leads to unexpected paths through the document, rather than to report logic errors. The error condition is most likely to occur when an object is either referenced before it is created or after it has been destroyed.
When an object expected to provide the effective value for an attribute does not exist and ObjectNotExist is set to « ignore, » the system shall use the fixed attribute value of required attributes. When a Parent container object or an Object reference does not exist, the content object shall not be created and ObjectNotExist shall determine whether the condition is reported or ignored.
<!element ModifyControl (Assign*, Expression*, Stimulus*)>
<!attlist ModifyControl
HyTime NAME #FIXED "HyBrid"
ireftype CDATA #IMPLIED
valueref CDATA #IMPLIED
Object IDREF #REQUIRED
Parent IDREF #IMPLIED
ObjectNotExist (error | ignore) "ignore">
Create an External Object
The create external object (CreateExternalObject) element shall be used to create objects representing things outside of the ISMID application. If no stimuli are included for the container, the container cannot receive stimuli from users or other sources.
NOTE 20. Examples of external objects are the computer operating environment, an external database, or a diagnostic system connected to the ISMID system.
The HyTime ireftype attribute contains the name of the Parent attribute followed by a list of GIs that express which create object element types are valid as parents of this object. The value of this attribute shall be fixed in the encompassing architecture (DTD).
A HyTime valueref attribute shall be used to obtain the effective value of an attribute from the properties of another object (clause 9.3). The value of the valueref attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
The Parent attribute must reference element types derived from the CreateContainer form.
The ObjectNotExist attribute determines how the system shall handle the case where a referenced object is not found at runtime. The ObjectNotExist attribute applies to either a Parent container or an object used to provide the effective value for an attribute. The document author determines whether the "not found" condition should result in an error (that could be trapped or reported) or is ignored by the processing system. The default is to ignore the condition and continue processing.
NOTE 21. This attribute is provided to handle situations where interactive traversal leads to unexpected paths through the document, rather than to report logic errors. The error condition is most likely to occur when an object is either referenced before it is created or after it has been destroyed.
When an object expected to provide the effective value for an attribute does not exist and ObjectNotExist is set to « ignore, » the system shall use the fixed attribute value of required attributes. When a Parent container object does not exist, the content object shall not be created and ObjectNotExist shall determine whether the condition is reported or ignored.
The ID attribute is a unique identifier for each element of this type.
The value of the Label attribute is a descriptive name for this object. This label may be used to identify the object to the user in the documentation or in the application.
<!element CreateExternalObject (VariableDeclaration*, Expression*, Stimulus*)>
<!attlist CreateExternalObject
HyTime NAME #FIXED "HyBrid"
ireftype CDATA #IMPLIED
valueref CDATA #IMPLIED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED>
Modify an External Object
The modify external object (ModifyExternalObject) element shall be used to modify objects created using the CreateExternalObject architectural form.
The HyTime ireftype attribute contains the name of the Object attribute followed by a list of GIs that express which CreateExternalObject element types are valid objects to be modified. It may also contain the name of the Parent attribute followed by a list of GIs that express which CreateContainer element types are valid parent objects.
A HyTime valueref attribute shall be used to obtain the effective value of an attribute from the properties of another object (clause 9.3). The value of the valueref attribute shall be fixed in the ISMID encompassing architecture (Document Type Definition).
The Object attribute identifies the existing container object to be modified, by referring to its unique identifier. The Object attribute must reference element types derived from the CreateExternalObject form. The unique identifier (ID) of CreateExternalObject shall not be modified, and the CreateExternalObject label attribute (Label) shall not be modified. All other attributes of the object may be modified.
The Parent attribute may be optionally modified, but must continue to reference element types derived from the CreateContainer form.
NOTE 22. Modifying the Parent of an external object effectively moves the object to a new Parent container.
The ObjectNotExist attribute determines how the system shall handle the case where a referenced object is not found at runtime. The ObjectNotExist attribute applies to a Parent container, an Object reference, or an object used to provide the effective value for an attribute. The document author determines whether the "not found" condition should result in an error (that could be trapped or reported) or is ignored by the processing system. The default is to ignore the condition and continue processing.
NOTE 23. This attribute is provided to handle situations where interactive traversal leads to unexpected paths through the document, rather than to report logic errors. The error condition is most likely to occur when an object is either referenced before it is created or after it has been destroyed.
When an object expected to provide the effective value for an attribute does not exist and ObjectNotExist is set to « ignore, » the system shall use the fixed attribute value of required attributes. When a Parent container object or an Object reference does not exist, the content object shall not be created and ObjectNotExist shall determine whether the condition is reported or ignored.
The Object attribute must reference element types derived from the CreateContainer form.
<!element ModifyExternalObject (Assign*, Expression*, Stimulus*)>
<!attlist ModifyExternalObject
HyTime NAME #FIXED "HyBrid"
ireftype CDATA #IMPLIED
valueref CDATA #IMPLIED
Object IDREF #REQUIRED
Parent IDREF #IMPLIED
ObjectNotExist (error | ignore) "ignore">
Destroy an Object
This element deletes the Object and all of its children. Any variables that are scoped at the level of the Object will also be deleted.
The HyTime ireftype attribute contains the name of the Object attribute followed by a list of GIs that express which create object element types are valid objects to be destroyed.
The Object attribute must reference element types derived from the CreateContainer, CreateContentObject, CreateControl, or CreateExternalObject forms.
NOTE 24. If the object doesnt exist, ignore the destroy command.
<!element DestroyObject EMPTY>
<!attlist DestroyObject
HyTime NAME #FIXED "HyBrid"
ireftype CDATA #IMPLIED
Object IDREF #REQUIRED>
Stimulus
A stimulus element can contain a chain of responses and/or reference a previously defined response chain. If the Stimulus element both contains and references response chains, the ISMID system shall first execute the contained response chain and then execute the referenced response chain.
<!element Stimulus ((%Responses;)*, End?)>
<!attlist Stimulus
HyTime NAME #FIXED "HyBrid"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED
>
Response
Response chains are called by their unique identifiers and passed parameters via the ArgumentDeclaration element. Response chains are initiated when the MID receives a stimulus. The system chain must exist and is the chain that is initiated by the OnSystemStart stimulus resulting from system startup.
<!element (SystemChain | ResponseChain) (ArgumentDeclaration*, (%Responses;)*, End?)>
<!attlist ResponseChain
HyTime NAME #FIXED "HyBrid"
ID ID #IMPLIED
Label CDATA #IMPLIED>
Argument Declaration
The ArgumentDeclaration element is used to declare arguments that can be passed to response chains using the ExecuteChain element.
The VariableType attribute specifies the type of the variable.
<!element ArgumentDeclaration (Name)>
<!element ArgumentDeclaration (Name)>
<!attlist ArgumentDeclaration
HyTime NAME #FIXED "HyBrid"
VariableType (%VariableTypes;) #REQUIRED>
Execute Response Chain
The ireftype attribute contains the name of a ResponseChainRef attribute followed by the GI of the ResponseChain element. The value of this attribute shall be fixed in the encompassing architecture (DTD).
<!element ExecuteChain (Argument*)>
<!attlist ExecuteChain
HyTime NAME #FIXED "HyBrid"
ireftype CDATA " ResponseChainRef ResponseChain"
ResponseChainRef IDREF #REQUIRED>
Control Flow
The control flow elements allow for conditional execution of response elements within response chains.
If statement
If the If expression evaluates to true, the responses are executed. Otherwise, if one of the Elseif expressions evaluates to true, its responses are executed. If none of the If or Elseif expressions evaluate to true, the responses within the Else are evaluated.
<!element If (Expression, (%Responses;)*, ElseIf*, Else?)>
Elseif statement
<!element ElseIf ( Expression, (%Responses;)*)>
Else statement
<!element Else ( (%Responses;)*)>
While statement
The expression is evaluated. If the expression is true, the responses are executed. The expression is reevaluated and the responses are re-executed until the expression returns false.
<!element While ( Expression, (%Responses;)*)>
Switch, Case and Default Statements
The expression is evaluated. Each of the expressions of the cases is evaluated in the order in which the cases appear until one matches the Switch expression. If a match is found, the responses under the matched Case are executed until a Break is encountered. Control continues to the responses under the next Case if no Break is encountered; the interceding expression is not evaluated. If no Case expression is matched, the responses in the Default element, if one exists, are executed.
<!element Switch ( Expression, Case+, Default?)>
<!element Case ( Expression, (%Responses;)*, Break?)>
<!element Default ( (%Responses;)*, Break?)>
Break statement
This element may be used, but is not required, to terminate a Case or Default statement.
<!element Break EMPTY>
Expression
The Expression element is evaluated as a DSSSL or HyFunk expression and the result is returned.
The Notation attribute specifies whether the content of the Expression element is specified using the DSSSL or HyFunk expression language.
<!element Expression (#PCDATA)>
<!attlist Expression
HyTime NAME #FIXED "HyBrid"
ExpressionLanguage NOTATION (DSSSL | HyFunk) "DSSSL">
Argument
The Argument element is used to pass arguments when executing chains or external processes using ExecuteChain and Execute.
<!element Argument (Expression)>
Variable declaration
The VariableDeclaration element is used to define the variables that will be used within the MID. Variables must be declared before use. The variable can be assigned a value when it is declared by using the Expression element.
The VariableType attribute specifies the type of the variable.
<!element VariableDeclaration ( Name, Expression?)>
<!attlist VariableDeclaration
HyTime NAME #FIXED "HyBrid"
VariableType (%VariableTypes;) #REQUIRED>
Assignment statement
The Assign element is used to assign a value to a variable.
<!element Assign (Name, Expression)>
Variable name
The Name element contains the name of the variable being defined or assigned a value.
<!element Name (#PCDATA)>
Execute external process
The Execute element is used to a invoke an external process. There is no requirement that the MID communicate with the external process after it is launched.
The value of the Process attribute is used to specify the external process to be invoked. The value of this attribute is an entity that must have been declared prior to using it as the value of this attribute.
<!element Execute (Argument*)>
<!attlist Execute
HyTime NAME #FIXED "HyBrid"
Process ENTITY #Required
ID ID #IMPLIED>
End
This element terminates the execution of the MID.
<!element End EMPTY>
ISMID Application Definition Document (IADD)
This annex states the requirements for creating and documenting a conforming ISMID Application. It defines how the syntax and semantics must be specified for each object type, stimulus, response, and property. A sample IADD is shown in Annex B.
Architectural Form Usage
Each object declared in the IADD must be derived from one of the architectural forms defined in Clause 9: "The ISMID Architecture."
Requirements
A conforming IADD shall contain the following sections. Each section shall be written as described below.
Encompassing Architecture (Document Type Definition)
The syntax of a conforming IADD shall be governed by a conforming SGML Document Type Definition or encompassing architecture.
This section of the IADD contains the declarations that are defined throughout the IADD. There need not be any no comments within this section as each declaration is described in following sections.
Data Content Notations
A conforming IADD shall declare in this section all data content notations required by the application using SGML notation declarations. The semantics of each notation may be further described, as deemed necessary by the IADD author.
Entities
A conforming IADD shall declare and define all parameter entities.
Stimuli
A conforming IADD shall declare and define the semantics of each stimulus that is listed in the content model of any element in the encompassing architecture (DTD). A unique name shall be given to each stimulus that has a unique semantic. Stimuli shall be categorized as follows:
User-generated
User-generated stimuli are invoked as a result of user action, such as a mouse click or key press in a graphical user interface or a spoken command in a voice-activated interface.
[Stimulus Name]
This section structure shall be repeated in the IADD for each user-generated stimulus. The heading « [Simulus Name] » shall be replaced with each element name derived from the Stimulus architectural form.
Semantic Definition
This section contains a semantic defintion for the named stimulus.
Formal Declaration
This section contains the formal SGML element and attribute definition list declarations for the named stimulus. Arguments required to be passed to an expression via a stimulus shall be declared as attributes and described in the following section.
Parameter Descriptions
Each parameter that is passed to an expression as an argument shall be described here. This section shall be omitted if there are no parameters defined in the formal declaration. Parameters and descriptions shall be presented in the following format :
NOTE 25. Parameters and descriptions should be presented in a form similar to the terms and definitions in the glossary section.
Object-generated
Object-generated stimuli are invoked from within a created object such as a video container completing the playing of a video.
[Stimulus Name]
This section structure shall be repeated in the IADD for each object-generated stimulus. The heading « [Simulus Name] » shall be replaced with each element name derived from the Stimulus architectural form.
Semantic Definition
This section contains a semantic defintion for the named stimulus.
Formal Declaration
This section contains the formal SGML element and attribute definition list declarations for the named stimulus. Arguments required to be passed to an expression via a stimulus shall be declared as attributes and described in the following section.
Parameter Descriptions
Each parameter that is passed to an expression through an argument shall be described here. This section shall be omitted if there are no parameters defined in the formal declaration. Parameters and descriptions shall be presented in the following format :
NOTE 26. Parameters and descriptions should be presented in a form similar to the terms and definitions in the glossary section.
Externally-generated
Externally generated stimuli are initiated from external sources such as input from an operating environment or hardware diagnostic system.
[Stimulus Name]
This section structure shall be repeated in the IADD for each externally-generated stimulus. The heading « [Simulus Name] » shall be replaced with each element name derived from the Stimulus architectural form.
Semantic Definition
This section contains a semantic defintion for the named stimulus.
Formal Declaration
This section contains the formal SGML element and attribute definition list declarations for the named stimulus. Arguments required to be passed to an expression via a stimulus shall be declared as attributes and described in the following section.
Parameter Descriptions
Each parameter that is passed to an expression through an argument shall be described here. This section shall be omitted if there are no parameters defined in the formal declaration. Parameters and descriptions shall be presented in the following format :
NOTE 27. Parameters and descriptions should be presented in a form similar to the terms and definitions in the glossary section.
Properties
A conforming IADD shall define the semantics of each property declared in the attribute definition list of any object element in the encompassing architecture (DTD). A unique name shall be given to each property that has a unique semantic.
Objects
A conforming IADD shall define each object type that can be created, modified, and destroyed in this ISMID application. The objects shall be classified and documented as described in the following subparagraphs.
Container Objects
A conforming IADD shall list each container object type that is declared in the ISMID application being defined.
[Container Object Name]
Each container object type shall be listed by name. This section structure shall be repeated in the IADD for each container object. The heading « [Container Object Name] » shall be replaced with each element name derived from the CreateContainer architectural form.
Semantics
The semantics of this container object type shall be defined.
Stimuli
Stimuli that can be accepted by this container object type shall be listed.
Properties
Properties valid for this container type shall be listed.
CreateContainer Declaration
The architectural form and declaration for creating this object type shall be defined.
ModifyContainer Declaration
The architectural form and declaration for modifying this object type shall be defined.
Content Objects
A conforming IADD shall list each content object type that is declared in the ISMID application being defined.
[Content Object TypeName]
Each content object type shall be listed by name. This section structure shall be repeated in the IADD for each content object. The heading « [Content Object Name] » shall be replaced with each element name derived from the CreateContentObject architectural form.
Semantics
The semantics of this content object type shall be defined.
Stimuli
Stimuli that can be accepted by this content object type shall be listed.
Properties
Properties valid for this content object type shall be listed.
CreateContentObject Declaration
The architectural form and declaration for creating this object type shall be defined.
ModifyContentObject Declaration
The architectural form and declaration for modifying this object type shall be defined.
Control Objects
A conforming IADD shall list each control object type that is declared in the ISMID application being defined.
[Control Object TypeName]
Each control object type shall be listed by name. This section structure shall be repeated in the IADD for each control object. The heading « [Control Object Name] » shall be replaced with each element name derived from the CreateControl architectural form.
Semantics
The semantics of this control object type shall be defined.
Stimuli
Stimuli that can be accepted by this control object type shall be listed.
Properties
Properties valid for this control object type shall be listed.
CreateControl Declaration
The architectural form and declaration for creating this object type shall be defined.
ModifyControl Declaration
The architectural form and declaration for modifying this object type shall be defined.
External Objects
A conforming IADD shall list each external object type that is declared in the ISMID application being defined.
[External Object Name]
Each external object type shall be listed by name. This section structure shall be repeated in the IADD for each external object. The heading « [External Object Name] » shall be replaced with each element name derived from the CreateExternalObject architectural form.
Semantics
The semantics of this external object type shall be defined.
Stimuli
Stimuli that can be accepted by this external object type shall be listed.
Properties
Properties valid for this external object type shall be listed.
CreateExternalObject Declaration
The architectural form and declaration for creating this object type shall be defined.
ModifyExternal Object Declaration
The architectural form and declaration for modifying this object type shall be defined.
Informative Annex A: Sample ISMID Application Definition Document
Encompassing Architecture (Document Type Definition)
This section of the IADD contains the declarations that are defined throughout this document for the encompassing architecture. There are no comments within this section; each declaration is described in following sections.
<!NOTATION DSSSLExp PUBLIC "ISO/IEC 10179:1996//NOTATION DSSSL Expression Language Notation//EN">
<!NOTATION JPEG PUBLIC "ISO/IEC 10918-1:1994//NOTATION Digital Compression and Coding of Continuous-tone Still Images (JPEG)//EN" >
<!NOTATION MPEG1vid PUBLIC "ISO/IEC 11172-2:1993//NOTATION Information technology - Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s - Part 2: Video//EN" >
<!NOTATION MPEG1aud PUBLIC "ISO/IEC 11172-3:1993//NOTATION Information technology - Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s - Part 3: Audio//EN" >
<!NOTATION CGMbin PUBLIC "ISO/IEC 8632-3:1992//NOTATION Information technology - Computer graphics - Metafile for the storage and transfer of picture description information - Part 3: Binary encoding//EN" >
<!NOTATION SGML PUBLIC "ISO 8879:1986//NOTATION Information processing - Text and office systems - Standard Generalized Markup Language (SGML)//EN" >
<!entity % ControlFlow "If | While | Switch">
<!entity % VariableTypes "Boolean | i1 | i2 | i4 | i8 | ui1 | ui2 | ui4 | ui8 | r4 | r8 | String | Char | Variant">
<!entity % CreateObject "CreateWindow | CreateImage | CreateButton | CreateHotSpot | CreateVideo | CreateAudio | CreateSGML | CreateCGM">
<!entity % ModifyObject "ModifyWindow | ModifyImage | ModifyButton | ModifyHotSpot | ModifyVideo | ModifyAudio | ModifySGML | ModifyCGM">
<!entity % Responses "%CreateObject; | %ControlFlow; | %ModifyObject; | DestroyObject | ExecuteChain | Execute">
<!element MID (ContentReference*, SystemChain, ResponseChain*)>
<!attlist MID ID ID #REQUIRED>
<!element ContentReference (nmlist)>
<!attlist ContentReference
HyTime CDATA #FIXED "nameloc"
ContentNotExist (error | ignore) "ignore"
>
<!element nmlist (#PCDATA)>
<!attlist nmlist
HyTime CDATA #FIXED "nmlist"
nametype (element | entity) "entity"
docorsub #ENTITY #IMPLIED>
<!element DestroyObject EMPTY>
<!attlist DestroyObject
ireftype CDATA #IMPLIED
Object IDREF #REQUIRED>
<!element (SystemChain | ResponseChain) (ArgumentDeclaration*, (%Responses;)*, End?)>
<!attlist ResponseChain
ID ID #IMPLIED
Label CDATA #IMPLIED>
<!element ArgumentDeclaration (Name)>
<!attlist ArgumentDeclaration
VariableType (%VariableTypes;) #REQUIRED>
<!element ExecuteChain (Argument*)>
<!attlist ExecuteChain
ireftype CDATA " ResponseChainRef ResponseChain"
ResponseChainRef IDREF #REQUIRED>
<!element If (Expression, (%Responses;)*, ElseIf*, Else?)>
<!element ElseIf ( Expression, (%Responses;)*)>
<!element Else ( (%Responses;)*)>
<!element While ( Expression, (%Responses;)*)>
<!element Switch ( Expression, Case+, Default?)>
<!element Case ( Expression, (%Responses;)*, Break?)>
<!element Default ( (%Responses;)*, Break?)>
<!element Break EMPTY>
<!element Expression (#PCDATA)>
<!attlist Expression
ExpressionLanguage NOTATION (DSSSL | HyFunk) "DSSSL">
<!element Argument (Expression)>
<!element VariableDeclaration ( Name, Expression?)>
<!attlist VariableDeclaration
VariableType (%VariableTypes;) #REQUIRED>
<!element Assign (Name, Expression)>
<!element Name (#PCDATA)>
<!element Execute (Argument*)>
<!attlist Execute
Process ENTITY #Required
ID ID #IMPLIED>
<!element End EMPTY>
<!entity % CreateFontProperties
'FontName CDATA #REQUIRED
FontSize NUMBER "8"
FontBold (FontBold | NFontBold) "FontBold"'>
<!entity % ModifyFontProperties
'FontName CDATA #IMPLIED
FontSize NUMBER #IMPLIED
FontBold (FontBold | NFontBold) #IMPLIED'>
<!entity % WindowStimuli "OnResize?, OnDestroy?">
<!entity % ImageStimuli "OnResize?, OnLoadComplete?">
<!entity % ButtonStimuli "OnClick?">
<!entity % HotSpotStimuli "OnClick?">
<!entity % VideoStimuli "OnEnd?">
<!entity % AudioStimuli "OnEnd?">
<!entity % SGMLStimuli "OnNotationClick?">
<!entity % CGMStimuli "OnObjectClick?">
<!element OnClick ((%Responses;)*, End?)>
<!ATTLIST OnClick
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED
Button NUMBER #IMPLIED>
<!element OnClick ((%Responses;)*, End?)>
<!ATTLIST OnClick
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
<!element OnResize ((%Responses;)*, end?)>
<!ATTLIST OnResize
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
<!element OnDestroy ((%Responses;)*, End?)>
<!ATTLIST OnDestroy
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
<!element OnLoadComplete ((%Responses;)*, End?)>
<!ATTLIST OnLoadComplete
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
<!element OnEnd ((%Responses;)*, End?)>
<!ATTLIST OnEnd
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
<!element OnNotationClick ((%Responses;)*, End?)>
<!ATTLIST OnNotationClick
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED
Notation Name #IMPLIED
EntityName Name #IMPLIED
SystemID CDATA #IMPLIED>
<!element OnNotationClick ((%Responses;)*, End?)>
<!ATTLIST OnNotationClick
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
<!element OnObjectClick ((%Responses;)*, End?)>
<!ATTLIST OnObjectClick
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
<!element CreateWindow (VariableDeclaration*, (%WindowStimuli;))>
<!ATTLIST CreateWindow
ISMID NAME #FIXED "CreateContainer"
ireftype CDATA #FIXED "Parent MID"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
Caption CDATA #IMPLIED
TitleBar (TitleBar | NTitleBar) "TitleBar"
WindowState (Normal | Maximized | Minimized) "Normal"
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
%CreateFontProperties; >
<!element ModifyWindow (Assign*, (%WindowStimuli;))>
<!ATTLIST ModifyWindow
ISMID NAME #FIXED "ModifyContainer"
ireftype CDATA #FIXED "Object CreateWindow"
Object IDREF #REQUIRED
Caption CDATA #IMPLIED
TitleBar (TitleBar | NTitleBar) #IMPLIED
WindowState (Normal | Maximized | Minimized) #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
%ModifyFontProperties; >
<!element CreateImage (VariableDeclaration*, Expression*, (%ImageStimuli;))>
<!ATTLIST CreateImage
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
Visible (Visible | NVisible) "Visible"
ActualWidth NUMBER #IMPLIED
ActualHeight NUMBER #IMPLIED
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED>
<!element ModifyImage (Assign*, Expression*, (%ImageStimuli;))>
<!ATTLIST ModifyImage
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
valueref CDATA "SemanticContent SemanticContent"
ireftype CDATA #FIXED "Object CreateImage Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
Object IDREF #REQUIRED
ActualWidth NUMBER #IMPLIED
ActualHeight NUMBER #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED>
<!element CreateVideo (VariableDeclaration*, Expression*, (%VideoStimuli;))>
<!ATTLIST CreateVideo
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
Playing (Playing | NPlaying) "NPlaying"
CurrentFrame NUMBER "0"
VideoHeight NUMBER #IMPLIED
VideoWidth NUMBER #IMPLIED
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED>
<!element ModifyVideo (Assign*, Expression*, (%VideoStimuli;))>
<!ATTLIST ModifyVideo
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Object CreateVideo Parent CreateWindow"
Object IDREF #REQUIRED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
Playing (Playing | NPlaying) #IMPLIED
CurrentFrame NUMBER #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED>
<!element CreateAudio (VariableDeclaration*, Expression*, (%AudioStimuli;))>
<!ATTLIST CreateAudio
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
Playing (Playing | NPlaying) "NPlaying"
Left CDATA #REQUIRED
Top CDATA #REQUIRED>
<!element ModifyAudio (Assign*, Expression*, (%AudioStimuli;))>
<!ATTLIST ModifyAudio
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Object CreateAudio Parent CreateWindow"
Object IDREF #REQUIRED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
Playing (Playing | NPlaying) #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED>
<!element CreateSGML (VariableDeclaration*, Expression*, (%SGMLStimuli;))>
<!ATTLIST CreateSGML
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
StyleSheet ENTITY #IMPLIED
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED>
<!element ModifySGML (Assign*, Expression*, (%SGMLStimuli;))>
<!ATTLIST ModifySGML
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Object CreateSGML Parent CreateWindow"
Object IDREF #REQUIRED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ActualWidth NUMBER #IMPLIED
ActualHeight CDATA #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
%ModifyFontProperties; >
<!element CreateCGM (VariableDeclaration*, Expression*, (%CGMStimuli;))>
<!ATTLIST CreateCGM
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
Visible (Visible | NVisible) "Visible"
ActualWidth NUMBER #IMPLIED
ActualHeight CDATA #IMPLIED
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED>
<!element ModifyCGM (Assign*, Expression*, (%CGMStimuli;))>
<!ATTLIST ModifyCGM
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Object CreateCGM Parent CreateWindow"
Object IDREF #REQUIRED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ActualWidth NUMBER #IMPLIED
ActualHeight CDATA #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED>
<!element CreateButton (VariableDeclaration*, Expression*, (%ButtonStimuli;)*)>
<!ATTLIST CreateButton
ISMID NAME #FIXED "CreateControlObject"
ireftype CDATA #FIXED "parent CreateWindow LeftRef ContentReference TopRef ContentReference WidthRef ContentReference HeightRef ContentReference"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
valueref CDATA #FIXED "Left LeftRef Top TopRef Width WidthRef Height HeightRef"
Enabled (Enabled | NEnabled) "Enabled"
Visible (Visible | NVisible) "Visible"
BevelWidth NUMBER "2"
Caption CDATA #IMPLIED
ForeColor CDATA "000000"
Left NUMBER #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
WidthRef IDREF #IMPLIED
TopRef IDREF #IMPLIED
LeftRef IDREF #IMPLIED
HeightRef IDREF #IMPLIED
%CreateFontProperties;>
<!element ModifyButton (Assign*, Expression*, (%ButtonStimuli;)*)>
<!ATTLIST ModifyButton
ISMID NAME #FIXED "ModifyControl"
ireftype CDATA #FIXED "Object CreateButton Parent CreateWindow LeftRef ContentReference TopRef ContentReference WidthRef ContentReference HeightRef ContentReference"
Object IDREF #REQUIRED
Parent IDREF #IMPLIED
ObjectNotExist (error | ignore) "ignore"
valueref CDATA #FIXED "Left LeftRef Top TopRef Width WidthRef Height HeightRef"
Enabled (Enabled | NEnabled) #IMPLIED
Visible (Visible | NVisible) #IMPLIED
BevelWidth NUMBER #IMPLIED
Caption CDATA #IMPLIED
ForeColor CDATA #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
WidthRef IDREF #IMPLIED
TopRef IDREF #IMPLIED
LeftRef IDREF #IMPLIED
HeightRef IDREF #IMPLIED
%ModifyFontProperties; >
<!element CreateHotSpot (VariableDeclaration*, Expression*, (%HotSpotStimuli;)*)>
<!ATTLIST CreateHotSpot
ISMID NAME #FIXED "CreateControlObject"
ireftype CDATA #FIXED "Parent CreateImage LeftRef ContentReference TopRef ContentReference WidthRef ContentReference HeightRef ContentReference"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
valueref CDATA #FIXED "Left LeftRef Top TopRef Width WidthRef Height HeightRef"
Enabled (Enabled | NEnabled) "Enabled"
Visible (Visible | NVisible) "Visible"
Caption CDATA #IMPLIED
ForeColor CDATA "000000"
FillColor CDATA "000000"
DrawMode (CopyPen | MaskPen) "MaskPen"
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
WidthRef IDREF #IMPLIED
TopRef IDREF #IMPLIED
LeftRef IDREF #IMPLIED
HeightRef IDREF #IMPLIED
%CreateFontProperties; >
<!element ModifyHotSpot (Assign*, (%HotSpotStimuli;)*)>
<!ATTLIST ModifyHotSpot
ISMID NAME #FIXED "ModifyControl"
ireftype CDATA #FIXED "Object CreateHotspot Parent CreateImage LeftRef ContentReference TopRef ContentReference WidthRef ContentReference HeightRef ContentReference"
Object IDREF #REQUIRED
Parent IDREF #IMPLIED
ObjectNotExist (error | ignore) "ignore"
valueref CDATA #FIXED "Left LeftRef Top TopRef Width WidthRef Height HeightRef"
Enabled (Enabled | NEnabled) #IMPLIED
Visible (Visible | NVisible) #IMPLIED
BevelWidth NUMBER #IMPLIED
Caption CDATA #IMPLIED
ForeColor CDATA #IMPLIED
FillColor CDATA #IMPLIED
DrawMode (CopyPen | MaskPen) #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
WidthRef IDREF #IMPLIED
TopRef IDREF #IMPLIED
LeftRef IDREF #IMPLIED
HeightRef IDREF #IMPLIED
%ModifyFontProperties; >
Data Content Notations
<!NOTATION BMP PUBLIC "-//ISMB 0-7923-9432-1:: Graphic Notation//NOTATION Microsoft Device Dependant Bitmap//EN">
<!NOTATION JPEG PUBLIC "ISO/IEC 10918-1:1994//NOTATION Digital Compression and Coding of Continuous-tone Still Images (JPEG)//EN" >
<!NOTATION MPEG1vid PUBLIC "ISO/IEC 11172-2:1993//NOTATION Information technology - Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s - Part 2: Video//EN" >
<!NOTATION MPEG1aud PUBLIC "ISO/IEC 11172-3:1993//NOTATION Information technology - Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s - Part 3: Audio//EN" >
<!NOTATION CGMbin PUBLIC "ISO/IEC 8632-3:1992//NOTATION Information technology - Computer graphics - Metafile for the storage and transfer of picture description information - Part 3: Binary encoding//EN" >
<!NOTATION SGML PUBLIC "ISO 8879:1986//NOTATION Information processing - Text and office systems - Standard Generalized Markup Language (SGML)//EN" >
Entities
Create Object
This entity lists all possible object types that can be created in an instance of this ISMID application.
<!entity % CreateObject "CreateWindow | CreateImage | CreateButton | CreateHotSpot | CreateVideo | CreateAudio | CreateSGML | CreateCGM">
Modify Object
This entity lists all possible object types that can be modified in an instance of this ISMID application.
<!entity % ModifyObject "ModifyWindow | ModifyImage | ModifyButton | ModifyHotSpot | ModifyVideo | ModifyAudio | ModifySGML | ModifyCGM">
Control Flow
This entity lists all elements used to control the sequence of an interactive process defined by an instance of this ISMID application. Evaluation of the element types listed in this entity declaration will require processing of expressions.
<!entity % ControlFlow "If | While | Switch">
Responses
This entity lists the possible responses to a given stimulus.
<!entity % Responses "%CreateObject; | %ControlFlow; | %ModifyObject; | DestroyObject | ExecuteChain | Execute">
Window stimuli
This entity lists the stimuli that can be accepted by objects created with the CreateWindow container object element type.
<!entity % WindowStimuli "OnResize?, OnDestroy?">
Image stimuli
This entity lists the stimuli that can be accepted by objects created with the CreateImage content object element type.
<!entity % ImageStimuli "OnResize?, OnLoadComplete?">
Video stimuli
This entity lists the stimuli that can be accepted by objects created with the CreateVideo content object element type.
<!entity % VideoStimuli "OnEnd?">
Audio stimuli
This entity lists the stimuli that can be accepted by objects created with the CreateAudio content object element type.
<!entity % AudioStimuli "OnEnd?">
SGML stimuli
This entity lists the stimuli that can be accepted by objects created with the CreateSGML content object element type.
<!entity % SGMLStimuli "OnNotationClick?">
CGM stimuli
This entity lists the stimuli that can be accepted by objects created with the CreateCGM content object element type.
<!entity % CGMStimuli "OnObjectClick?">
Button stimuli
This entity lists the stimuli that can be accepted by objects created with the CreateButton control object element type.
<!entity % ButtonStimuli "OnClick?">
Hotspot stimuli
This entity lists the stimuli that can be accepted by objects created with the CreateHotSpot control object element type.
<!entity % HotSpotStimuli "OnClick?">
Font properties for creating objects
This entity lists the font properties that can be set when the object is created.
<!entity % CreateFontProperties
'FontName CDATA #REQUIRED
FontSize NUMBER "8"
FontBold (FontBold | NFontBold) "FontBold"'>
Font properties for modifying objects
This entity lists the font properties that can be modified using a modified object element.
<!entity % ModifyFontProperties
'FontName CDATA #IMPLIED
FontSize NUMBER #IMPLIED
FontBold (FontBold | NFontBold) #IMPLIED'>
Stimuli
User-generated
OnClick
Semantic Definition
The OnClick stimulus is initiated by a single click of a users pointing device. If there are multiple buttons on the pointing device, the left button will initiate this event. The pointing device mayshall send an OnClick stimulus to a single object at a time.
Formal Declaration
<!element OnClick ((%Responses;)*, End?)>
<!ATTLIST OnClick
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED
Button NUMBER #IMPLIED>
Parameter Descriptions
Button
The system uses this parameter to indicate which mouse button has been used to execute the click. Possible values are 1 (Left Button), 2 (Right Button), or 4 (Middle Button). The value of this attribute is supplied by the system and is read-only.
OnNotationClick
Semantic Definition
The OnNotationClick stimulus is initiated by a single click of a users pointing device on a data content notation (DCN) entity represented by an icon in the formatted SGML document. If there are multiple buttons on the pointing device, the left button will initiate this event. The pointing device mayshall send an OnNotationClick stimulus to a single DCN entity icon at a time.
Formal Declaration
<!element OnNotationClick ((%Responses;)*, End?)>
<!ATTLIST OnNotationClick
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED
Notation Name #IMPLIED
EntityName Name #IMPLIED
SystemID CDATA #IMPLIED>
Parameter Descriptions
Notation
The system uses this parameter to indicate the notation name of the DCN entity represented by the icon that received the click. Possible values are any valid SGML name. The value of this attribute is supplied by the system and is read-only.
EntityName
The system uses this parameter to indicate the name of the DCN entity represented by the icon that received the click. Possible values are any valid SGML name. The value of this attribute is supplied by the system and is read-only.
SystemID
The system uses this parameter to indicate the system identifier of the DCN entity represented by the icon that received the click. The value of this attribute is supplied by the system and is read-only.
OnObjectClick
Semantic Definition
The OnObjectClick stimulus is initiated by a single click of a users pointing device on an object within the CGM graphic. If there are multiple buttons on the pointing device, the left button will initiate this event. The pointing device mayshall send an OnObjectClick stimulus to a single CGM object at a time.
Formal Declaration
<!element OnObjectClick ((%Responses;)*, End?)>
<!ATTLIST OnObjectClick
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
Object-generated
OnResize
Semantic Definition
Container and content objects generate the OnResize stimulus when a user resizes the object.
Formal Declaration
<!element OnResize ((%Responses;)*, end?)>
<!ATTLIST OnResize
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
OnDestroy
Semantic Definition
Container and content objects generate the OnDestroy stimulus when a user closes the objects.
Formal Declaration
<!element OnDestroy ((%Responses;)*, End?)>
<!ATTLIST OnDestroy
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
OnLoadComplete
Semantic Definition
A content object generates an OnLoadComplete stimulus when it finishes loading the content specified in the ContentRef property.
Formal Declaration
<!element OnLoadComplete ((%Responses;)*, End?)>
<!ATTLIST OnLoadComplete
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
OnEnd
Semantic Definition
A content object generates an OnEnd stimulus when it finishes playing the content of a video or audio clip.
Formal Declaration
<!element OnEnd ((%Responses;)*, End?)>
<!ATTLIST OnEnd
ISMID NAME #FIXED "Stimulus"
reftype CDATA "ResponseChainRef ResponseChain"
ResponseChainRef IDREF #IMPLIED>
Properties
Caption
The Caption property is a text string that appears in the TitleBar of a Window or as the text on a button. The Caption is optional. On a window, the caption shall appear only if the TitleBar property value="TitleBar"
TitleBar
The TitleBar property indicates whether a Window is to be rendered with a title bar. The title bar shall be used to move the Window .
WindowState
The WindowState property allows the author to specify one of the following states for a Window object:
Normal- Object remains or is reset to a default or last displayed size
Maximized- Object is set to the maximum sized allowed by the client area of the display
Minimized- Object and its contents are reduced to an icon
FontName
The FontName property defines the name of a font or font family used in the object.
FontSize
Numerical indicator of the font size, in points.
FontBold
The font weight shall be defined as either Bbold or not bold (i.e., normal).
Visible
The Visible property indicates whether to show or hide a content object.
ActualWidth
This property applies to the Image object only. The ActualWidth property contains a read-only value supplied by the system value that indicates the actual width in pixels of the image being displayed.
ActualHeight
This property applies to the Image object only. The ActualHeight property contains a read-only value supplied by the system that indicates the actual height in pixels of the image being displayed.
Left
The Left property sets the position of the object by placing its left edge at the horizontal dimension specified as the value of this property. The value is in pixels from the left edge of the parent container.
LeftRef
This property is used to reference an expression element for the purpose of setting the Left property for this object.
Top
The Top property sets the position of the object by placing its top edge at the vertical dimension specified as the value of this property. The value is in pixels from the top edge of the parent container.
TopRef
This property is used to reference an expression element for the purpose of setting the Top property for this object.
Width
The Width property sets the width of the object to the indicated value, given in pixels.
WidthRef
This property is used to reference an expression element for the purpose of setting the Width property for this object.
Height
The ViewHeight property sets the height of the object to the indicated value, given in pixels.
HeightRef
This property is used to reference an expression element for the purpose of setting the Height property for this object.
Enabled
The Enabled property determines whether a control object is active or inactive.
BevelWidth
The BevelWidth property sets the visual bevel at the edge of a button that makes it appear three dimensional.
ForeColor
The ForeColor property sets the color of captions. Colors are specified as #RRGGBB in hexadecimal.
Playing
This property is used to set a Video or Audio object to a Playing or Not Playing state. When the value is set to Playing, the video or audio clip in the content object will start to play. When the value is set to NPlaying, the video or audio clip in the content object will pause playing. Setting this property has no effect on the current location within the audio or video.
CurrentFrame
This propery specifies the frame number from which the video referenced by the video content object starts playing.
StyleSheet
This property specifies the name of the entity containing the style sheet to be applied to the SGML doucment referenced by the SGML content object.
FillColor
This property specifies the color with which the object will be filled.
DrawMode
This property specifies how the object will be rendered. If value is set to CopyPen, the object is rendered with the fill color solid. If the value is set to MaskPen the object is rendered with the fill color transparent.
Objects
Container Objects
Window
Semantics
A window object is a general container for grouping content objects, control objects, and other container objects.
Stimuli
OnResize, OnDestroy
Properties
Caption, TitleBar, WindowState, Left, Top, Width, Height, FontName, FontSize, FontBold
CreateWindow
<!element CreateWindow (VariableDeclaration*, (%WindowStimuli;))>
<!ATTLIST CreateWindow
ISMID NAME #FIXED "CreateContainer"
ireftype CDATA #FIXED "Parent MID"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
Caption CDATA #IMPLIED
TitleBar (TitleBar | NTitleBar) "TitleBar"
WindowState (Normal | Maximized | Minimized) "Normal"
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
%CreateFontProperties; >
ModifyWindow
<!element ModifyWindow (Assign*, (%WindowStimuli;))>
<!ATTLIST ModifyWindow
ISMID NAME #FIXED "ModifyContainer"
ireftype CDATA #FIXED "Object CreateWindow"
Object IDREF #REQUIRED
Caption CDATA #IMPLIED
TitleBar (TitleBar | NTitleBar) #IMPLIED
WindowState (Normal | Maximized | Minimized) #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
%ModifyFontProperties; >
Content Objects
Image
Semantics
An image object is a content object that contains a graphic.
Stimuli
OnResize, OnLoadComplete
Properties
Visible, ActualWidth, ActualHeight, Left, Top, Width, Height
CreateImage
<!element CreateImage (VariableDeclaration*, Expression*, (%ImageStimuli;))>
<!ATTLIST CreateImage
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
Visible (Visible | NVisible) "Visible"
ActualWidth NUMBER #IMPLIED
ActualHeight NUMBER #IMPLIED
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED>
ModifyImage
<!element ModifyImage (Assign*, Expression*, (%ImageStimuli;))>
<!ATTLIST ModifyImage
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
valueref CDATA "SemanticContent SemanticContent"
ireftype CDATA #FIXED "Object CreateImage Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
Object IDREF #REQUIRED
ActualWidth NUMBER #IMPLIED
ActualHeight NUMBER #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED>
Video
Semantics
An video object is a content object that contains a video.
Stimuli
OnEnd
Properties
Playing, CurrentFrame, ActualHeight, ActualWidth, Height, Width, Top, Left
CreateVideo
<!element CreateVideo (VariableDeclaration*, Expression*, (%VideoStimuli;))>
<!ATTLIST CreateVideo
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
ID ID #REQUIRED
Label CDATA #IMPLIED
Playing (Playing | NPlaying) "NPlaying"
CurrentFrame NUMBER "0"
ActualHeight NUMBER #IMPLIED -- the video clip's height --
ActualWidth NUMBER #IMPLIED -- the video clip's width --
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED>
ModifyVideo
<!element ModifyVideo (Assign*, Expression*, (%VideoStimuli;))>
<!ATTLIST ModifyVideo
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Object CreateVideo Parent CreateWindow"
Object IDREF #REQUIRED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
Playing (Playing | NPlaying) #IMPLIED -- when set to "Playing", the video clip in this control will start playing. When set to "NPlaying" the video stops playing. --
CurrentFrame NUMBER #IMPLIED -- the frame number from which the video clip in this control starts playing --
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED>
Audio
Semantics
An audio object is a content object that contains an audio clip.
Stimuli
OnEnd
Properties
Playing, Left, Top
CreateAudio
<!element CreateAudio (VariableDeclaration*, Expression*, (%AudioStimuli;))>
<!ATTLIST CreateAudio
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
ID ID #REQUIRED
Label CDATA #IMPLIED
Playing (Playing | NPlaying) "NPlaying" -- Select if you want the audio clip in this control to play. Clear if you do not want the audio clip to play.--
Left CDATA #REQUIRED
Top CDATA #REQUIRED>
ModifyAudio
<!element ModifyAudio (Assign*, Expression*, (%AudioStimuli;))>
<!ATTLIST ModifyAudio
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Object CreateAudio Parent CreateWindow"
Object IDREF #REQUIRED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
Playing (Playing | NPlaying) #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED>
SGML
Semantics
An SGML object is a content object that contains an SGML document.
Stimuli
OnNotationClick
Properties
StyleSheet, Left, Top, Width, Height
CreateSGML
<!element CreateSGML (VariableDeclaration*, Expression*, (%SGMLStimuli;))>
<!ATTLIST CreateSGML
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
ID ID #REQUIRED
Label CDATA #IMPLIED
StyleSheet ENTITY #IMPLIED
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED>
ModifySGML
<!element ModifySGML (Assign*, Expression*, (%SGMLStimuli;))>
<!ATTLIST ModifySGML
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Object CreateSGML Parent CreateWindow"
Object IDREF #REQUIRED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
ActualWidth NUMBER #IMPLIED
ActualHeight CDATA #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
%ModifyFontProperties; >
CGM
Semantics
An CGM object is a content object that contains a Computer Graphics Metafile image.
Stimuli
OnObjectClick, OnLoadComplete
Properties
Visible, ActualWidth, ActualHeight, Left, Top, Width, Height
CreateCGM
<!element CreateCGM (VariableDeclaration*, Expression*, (%CGMStimuli;))>
<!ATTLIST CreateCGM
ISMID NAME #FIXED "CreateContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Parent CreateWindow"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
ID ID #REQUIRED
Label CDATA #IMPLIED
Visible (Visible | NVisible) "Visible"
ActualWidth NUMBER #IMPLIED
ActualHeight CDATA #IMPLIED
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED>
ModifyCGM
<!element ModifyCGM (Assign*, Expression*, (%CGMStimuli;))>
<!ATTLIST ModifyCGM
ISMID NAME #FIXED "ModifyContentObject"
SemanticContent IDREF #IMPLIED
ireftype CDATA #FIXED "Object CreateCGM Parent CreateWindow"
Object IDREF #REQUIRED
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
ActualWidth NUMBER #IMPLIED
ActualHeight CDATA #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED>
Control Objects
Button
Semantics
A Button is a control object used to initiate a stimulus.
Stimuli
OnClick
Properties
Enabled, Visible, BevelWidth, Caption, ForeColor, Left, LeftRef, Top, TopRef, Width, WidthRef, Height, HeightRef, FontName, FontSize, FontBold
CreateButton
<!element CreateButton (VariableDeclaration*, OnClick)?)>
<!element CreateButton (VariableDeclaration*, Expression*, (%ButtonStimuli;)*)>
<!ATTLIST CreateButton
ISMID NAME #FIXED "CreateControlObject"
ireftype CDATA #FIXED "Parent CreateWindow LeftRef ContentReference TopRef ContentReference WidthRef ContentReference HeightRef ContentReference"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "ignore"
ID ID #REQUIRED
Label CDATA #IMPLIED
valueref CDATA #FIXED "Left LeftRef Top TopRef Width WidthRef Height HeightRef"
Enabled (Enabled | NEnabled) "Enabled"
Visible (Visible | NVisible) "Visible"
BevelWidth NUMBER "2"
Caption CDATA #IMPLIED
ForeColor CDATA "000000"
Left NUMBER #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
WidthRef IDREF #IMPLIED
TopRef IDREF #IMPLIED
LeftRef IDREF #IMPLIED
HeightRef IDREF #IMPLIED
%CreateFontProperties;>
ModifyButton
<!element ModifyButton (Assign*, %ButtonStimuli;))>
<!element ModifyButton (Assign*, Expression*, (%ButtonStimuli;)*)>
<!ATTLIST ModifyButton
ISMID NAME #FIXED "ModifyControl"
ireftype CDATA #FIXED "Object CreateButton Parent CreateWindow LeftRef ContentReference TopRef ContentReference WidthRef ContentReference HeightRef ContentReference"
Object IDREF #REQUIRED
Parent IDREF #IMPLIED
ObjectNotExist (error | ignore) "ignore"
valueref CDATA #FIXED "Left LeftRef Top TopRef Width WidthRef Height HeightRef"
Enabled (Enabled | NEnabled) #IMPLIED
Visible (Visible | NVisible) #IMPLIED
BevelWidth NUMBER #IMPLIED
Caption CDATA #IMPLIED
ForeColor CDATA #IMPLIED
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
WidthRef IDREF #IMPLIED
TopRef IDREF #IMPLIED
LeftRef IDREF #IMPLIED
HeightRef IDREF #IMPLIED
%ModifyFontProperties; >
HotSpot
Semantics
A Hotspot is a coordinate zone that overlays part of an image, identifying an object on the image.
a control object used identify
Stimuli
OnClick
Properties
Enabled, Visible, Caption, ForeColor, FillColor, DrawMode, Left, LeftRef, Top, TopRef, Width, WidthRef, Height, HeightRef, FontName, FontSize, FontBold
CreateHotSpot
<!element CreateHotSpot (VariableDeclaration*, Expression*, (%HotSpotStimuli;)*)>
<!ATTLIST CreateHotSpot
ISMID NAME #FIXED "CreateControlObject"
ireftype CDATA #FIXED "Parent CreateImage LeftRef ContentReference TopRef ContentReference WidthRef ContentReference HeightRef ContentReference"
Parent IDREF #REQUIRED
ObjectNotExist (error | ignore) "error"
ID ID #REQUIRED
Label CDATA #IMPLIED
valueref CDATA #FIXED "Left LeftRef Top TopRef Width WidthRef Height HeightRef"
Enabled (Enabled | NEnabled) "Enabled"
Visible (Visible | NVisible) "Visible"
Caption CDATA #IMPLIED
ForeColor CDATA "000000"
FillColor CDATA "000000"
DrawMode (CopyPen | MaskPen) "MaskPen"
Left CDATA #REQUIRED
Top CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
WidthRef IDREF #IMPLIED
TopRef IDREF #IMPLIED
LeftRef IDREF #IMPLIED
HeightRef IDREF #IMPLIED
%CreateFontProperties; >
ModifyHotSpot
<!element ModifyHotSpot (Assign*, (%HotSpotStimuli;)*)>
<!ATTLIST ModifyHotSpot
ISMID NAME #FIXED "ModifyControl"
ireftype CDATA #FIXED "Object CreateHotspot Parent CreateImage LeftRef ContentReference TopRef ContentReference WidthRef ContentReference HeightRef ContentReference"
Object IDREF #REQUIRED
Parent IDREF #IMPLIED
ObjectNotExist (error | ignore) "error"
valueref CDATA #FIXED "Left LeftRef Top TopRef Width WidthRef Height HeightRef"
Enabled (Enabled | NEnabled) #IMPLIED
Visible (Visible | NVisible) #IMPLIED
BevelWidth NUMBER #IMPLIED
Caption CDATA #IMPLIED
ForeColor CDATA #IMPLIED
FillColor CDATA #IMPLIED -- the color with which the hotspot will be filled --
DrawMode (CopyPen | MaskPen) #IMPLIED -- CopyPen displays hotspot as a solid control . MaskPen displays the hotspot as a transparent control. --
Left CDATA #IMPLIED
Top CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
WidthRef IDREF #IMPLIED
TopRef IDREF #IMPLIED
LeftRef IDREF #IMPLIED
HeightRef IDREF #IMPLIED
%ModifyFontProperties; >
Annex B: IADD Subset
The following subset of ISMID architectural types is likely to be instantiated in conforming ISMID applications. They are collected here so that they can be referenced from an encompassing architecture (DTD) using the following parameter entity declaration and reference.
<!Entity % AIS public "ISO/IEC XXXX:XXXX//DTD ISMID Application Definition Document Subset//EN">
%AIS;
<!entity % ControlFlow "If | While | Switch">
<!entity % VariableTypes "Boolean | i1 | i2 | i4 | i8 | ui1 | ui2 | ui4 | ui8 | r4 | r8 | String | Char | Variant">
<!entity % CreateObject "CreateWindow | CreateImage | CreateButton | CreateHotSpot | CreateVideo | CreateAudio | CreateSGML | CreateCGM">
<!entity % ModifyObject "ModifyWindow | ModifyImage | ModifyButton | ModifyHotSpot | ModifyVideo | ModifyAudio | ModifySGML | ModifyCGM">
<!entity % Responses "%CreateObject; | %ControlFlow; | %ModifyObject; | DestroyObject | ExecuteChain | Execute">
<!element MID (ContentReference*, SystemChain, ResponseChain*)>
<!attlist MID ID ID #REQUIRED>
<!element ContentReference (nmlist)>
<!attlist ContentReference
HyTime CDATA #FIXED "nameloc">
<!element nmlist (#PCDATA)>
<!attlist nmlist
HyTime CDATA #FIXED "nmlist"
nametype (element | entity) "entity"
docorsub #ENTITY #IMPLIED>
<!element DestroyObject EMPTY>
<!attlist DestroyObject
ireftype CDATA #IMPLIED
Object IDREF #REQUIRED>
<!element (SystemChain | ResponseChain) (ArgumentDeclaration*, (%Responses;)*, End?)>
<!attlist ResponseChain
ID ID #IMPLIED
Label CDATA #IMPLIED>
<!element ArgumentDeclaration (Name)>
<!attlist ArgumentDeclaration
VariableType (%VariableTypes;) #REQUIRED>
<!element ExecuteChain (Argument*)>
<!attlist ExecuteChain
ireftype CDATA " ResponseChainRef ResponseChain"
ResponseChainRef IDREF #REQUIRED>
<!element If (Expression, (%Responses;)*, ElseIf*, Else?)>
<!element ElseIf ( Expression, (%Responses;)*)>
<!element Else ( (%Responses;)*)>
<!element While ( Expression, (%Responses;)*)>
<!element Switch ( Expression, Case+, Default?)>
<!element Case ( Expression, (%Responses;)*, Break?)>
<!element Default ( (%Responses;)*, Break?)>
<!element Break EMPTY>
<!element Expression (#PCDATA)>
<!attlist Expression ExpressionLanguage NOTATION (DSSSL | HyFunk) "DSSSL">
<!element Argument (Expression)>
<!element VariableDeclaration ( Name, Expression?)>
<!attlist VariableDeclaration
VariableType (%VariableTypes;) #REQUIRED>
<!element Assign (Name, Expression)>
<!element Name (#PCDATA)>
<!element Execute (Argument*)>
<!attlist Execute
Process ENTITY #Required
ID ID #IMPLIED>
<!element End EMPTY>