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.ornl.gov/sgml/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:

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:

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:

A conforming ISMID application shall:

A conforming ISMID document shall:

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

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 object’s 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 object’s 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 CreateContainer’s 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 ModifyContainer’s 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 child’s 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 doesn’t 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 user’s 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 user’s 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 user’s 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>