ISO/IEC JTC 1/SC34 N007

ISO/IEC JTC 1/SC34

Information Technology ---

Document Description and Processing Languages

TITLE:Revised text of ISMID
SOURCE:Norm Chenard, Dave Cooper
PROJECT:
PROJECT EDITOR:Norm Chenard, Dave Cooper
STATUS:
ACTION:For comment
DATE:30 October 1998
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: masonjd@ornl.gov
http://www.ornl.gov/sgml/wg4/
ftp://ftp.ornl.gov/pub/sgml/wg4/

Interchange Standard for Modifiable Interactive Documents (ISMID)

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 [ISMID#] 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 static documents and hyperdocuments; 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.

Document Standards

Standards currently exist for describing the structure, content, and formatting of static documents and hyperdocuments. The Interchange Standard for Modifiable Interactive Documents (ISMID) adds the missing component - a standard for representing the behavior within documents in an unambiguous way for the purpose of interchange among heterogeneous interactive document development and delivery systems.

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 like 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 Modifiable Interactive Documents or ISMID, facilitates the interchange of Modifiable 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 MID requires three major components:

Content: the information that the document author intended to communicate to the user of the MID;

Behavior: the instructions that govern what, when, where, and how content is presented, and how the MID responds to stimuli from various sources; and

Software: the application that interprets behavior, retrieves the content, and presents the information to the user.

Various vendors, standards bodies, and other groups define the notations (e.g., SGML, AVI, and WAV) 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 Abstract 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 abstract architecture (section 11, The ISMID abstract architecture, page *). The abstract architecture defines architectural forms for the behavior component.

The ISMID abstract architecture includes:

Interface objects;

Container objects that are used to group other interface objects (e.g., Windows, Frames, Panels);

Content Object objects that are used to render specific information content types (e.g., Video, Image, Audio, Animation, Text); and

Control objects through which interaction with the MID takes place (e.g., Button, Scroll Bar, List Box, Check Box). Control objects enable users to make decisions and facilitate navigation through a MID instance.

Stimuli, which are actions received via the interface objects; and

Responses, which are reactions performed by the MID in response to a given stimulus.

Although interface objects are listed as a major part of the ISMID abstract 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 abstract architecture provide the templates for specific ISMID applications. These architectural forms within the abstract architecture are general enough to allow for any new stimulus and response elements that may be required in the future.

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 abstract 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 modeled after the content object forms in the abstract architecture.

The example elements inherit all of the attributes of the abstract 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 concrete ISMID architectures must be defined according to the ISMID Application Definition Document (IADD) (Normative Annex A). 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 media types in current use. These notation declarations do not imply that a conforming ISMID system must support these notations. The types of media 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 media notations must be supported for a particular industry or organization can be specified formally in the IADD.

Field of application

The field of application of ISMID is Electronic Performance Support Systems (EPSS), computer-based interactive document systems that provide users access to just-in-time information and on-the-job training. Two common types of EPSS are Interactive Electronic Technical Manuals (IETMs) and Interactive Courseware (ICW).

The use of EPSSs is increasing within many industries as the quantity of information that workers must have access to increases. Because organizations are increasing their investments in these systems, it is important that they have a way to protect their investments by representing all aspects of the EPSS in a device independent manner.

Conformance

Because ISMID is primarily a language that facilitates the interchange of interactive documents, it is not a conformance requirement that ISMID systems operate directly on the ISMID document in its native notation. Developers will probably chose to translate the ISMID representation to their own proprietary internal representation optimized for their application programs to execute.

A conforming ISMID system shall:

be able to import any ISMID document that conforms to any application that the system claims to support.

be able to export ISMID documents that conform to any applications that the system claims to support.

support the HyTime modules and options specified in the ISMID HyTime support declaration (clause 7).

support either the expression language specified in clause 8 of ISO/IEC 10179:1992 Information technology -- Processing languages -- Document Style Semantics and Specification Language (DSSSL) or the HyFunk expression language defined in clause 6.8.6 of ISO/IEC 10744:1997 Information technology -- Hypermedia/Time-based Structuring Language (HyTime).

support all of the interface objects, stimuli, responses, and media notations specified in a valid ISMID application which it claims to support.

declare the ISMID applications it supports.

A conforming ISMID application shall:

be defined by an IADD (Normative Annex A).

be used as the means of representing a class of interactive documents applicable to a particular industry or organization.

be limited to the HyTime modules and options specified in the ISMID HyTime support declaration (section 7, The ISMID HyTime support declarations, page *).

A conforming ISMID document shall:

be a valid SGML document using the DTD described in the IADD.

declare the applications to which it conforms.

contain all features that are required by the application.

not exceed the feature set declared for any system that will operate on the document.

Normative references

ISO/IEC 10744:1997 Information technology -- Hypermedia/Time-based Structuring Language (HyTime).

ISO 8879:1986, Information processing -- Text and office systems -- Standard Generalized Markup Language (SGML).

ISO/IEC 10179:1992 Information technology -- Processing languages -- Document Style Semantics and Specification Language (DSSSL).

Definitions

abstract architecture

The architecture that defines the general model for describing interactive documents.

behavior component

The instructions that govern how an interactive document responds to stimuli from various sources.

application

A DTD conforming to the ISMID abstract 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.

control object

A type of interface object through which interaction with an interactive document takes place.

document

A collection of information that is identified as a unit and that is intended for human perception.

hyperdocument

Two or more documents or other information objects that are connected to one another by a web.

interface objects

Components of an interactive document that are the vehicle through which stimuli and responses occur.

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.

content object

A type of interface object used to render information content.

response

A reaction performed by the interactive document, triggered by a stimulus.

response chain

A predetermined sequence of responses that may be initiated by a single stimulus.

static document

A document in which the order of presentation of information is predetermined by the author.

stimulus

An action, received by an interface object, that triggers reactions performed by the interactive document.

stimulus-driven

A system in which action is initiated when an interface object receives a stimulus.

Symbols and abbreviations

DSSSL

Document Style Semantics and Specification Language

EPSS

Electronic Performance Support System

ICW

Interactive Courseware

IADD

ISMID Application Definition Document

IETM

Interactive Electronic Technical Manual

ISMID

Interchange Standard for Modifiable Interactive Documents

MID

Modifiable Interactive Document

Notations

ISMID is an enabling architecture whose definition conforms to the Architectural Form Definition Requirements in Annex A.3 of the ISO/IEC 10744:1997, HyTime. The notation conventions used in this International Standard conform to clause 5 of the HyTime standard.

The ISMID HyTime support declarations

As a HyTime client architecture, ISMID uses the HyTime support declarations to specify the HyTime modules and options that must be supported by conforming ISMID systems.

<!NOTATION HyTime

PUBLIC "ISO/IEC 10744:1992//NOTATION AFDR ARCBASE

Hypermedia/Time-based Structuring Language (HyTime)//EN"

>

<!ATTLIST #NOTATION HyTime

ArcFormA NAME HyTime

ArcNamrA NAME HyNames

ArcSuprA NAME sHyTime

ArcIgnDA NAME HyIgnD

ArcDocF NAME #FIXED HyDoc

ArcDTD CDATA "HyTime"

ArcQuant CDATA #FIXED "NAMELEN 9"

ArcDataF NAME #FIXED HyBridN

ArcBridF NAME #FIXED HyBrid

ArcAuto (ArcAuto|nArcAuto) nArcAuto

ArcOptSA NAMES "GenArc base links"

GenArc CDATA "ireftype"

base CDATA "HyFunk conloc"

locs CDATA "referatt refloc reftype nameloc nmsploc treeloc"

links CDATA ""

sched CDATA ""

rend CDATA ""

anysgml (anysgml|nanysgml) anysgml

exrefs (exrefs|nexrefs) exrefs

refmodel (SGMLmdl|nSGMLmdl) nSGMLmdl

hyqcnt NUMBER 32

manyanch NUMBER #IMPLIED

manyaxes NUMBER "4"

>

<!ENTITY

HyTime

PUBLIC "ISO/IEC 10744:1992//DTD AFDR Meta-DTD

Hypermedia/Time-based Structuring Language (HyTime)//EN"

CDATA AFDRMeta

>

 

The ISMID expression language

The expression language used within an ISMID document shall conform to the expression language described in clause 8 of the DSSSL standard or to the HyFunk language defined in the HyTime standard. The following notation shall be used to specify use of the DSSSL expression language within ISMID documents.

<!NOTATION DSSSLExp

PUBLIC "ISO/IEC 10179:1996//NOTATION DSSSL Expression Language Notation//EN">

For documents that require only integer arithmetic operations, the HyTime Marker Function Language (HyFunk) may be specified instead of the DSSSL expression language. HyFunk is based on the DSSSL expression Language. The following notation shall be used to specify use of HyFunk as the ISMID expression language.

<!notation HyFunk

PUBLIC "ISO/IEC 10744:1992//NOTATION HyTime Marker Function Language//EN">

The ISMID abstract architecture

A MID is defined as a stimulus-driven application. This means that interface objects within the MID wait for a stimulus initiated by a user, an external system, or another interface object before responding.

For each stimulus, the author/developer of a MID instance can define a series of responses that, at runtime, determine how the interface object will respond to the stimulus. Specific stimulus types are defined in each ISMID application. Each stimulus in the ISMID application inherits the attributes of the corresponding stimulus element form in the ISMID architecture, from which the element is derived. For each stimulus, the author may specify a series of specific actions (e.g., creating, destroying, or modifying objects and variables) that will occur in the MID. For example, when the user clicks a "Show Video" button (i.e., when the interface object labeled "Show Video" receives a click stimulus from the user), the developer could program the "Show Video" button to respond by:

Creating a Video Content Object;

Creating a Stop Playing control object (button);

Opening a video source in the Video Content Object;

Playing the video; and

Creating a series of responses within the click stimulus of the Stop Playing button that will terminate the playing of the video, or associating the click stimulus of the Stop Playing button with a previously defined response chain that will terminate the playing of the video.

Interface objects are the targets of user-, internally- 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 a "OnClick" stimulus and a "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, Content Object, or Control type interface objects.

<!entity % CreateObject "CreateContainer | CreateContentObject | CreateControl">

Control flow.

Control flow shall allow construction of if, while, and switch.

<!entity % ControlFlow "if | while | switch">

Location addressing

Intrinsic data content is presented to the user through Content Objects. The media 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.

Modify object shall allow the modification of any properties of existing Container, Content Object, or Control type interface objects.

<!entity % ModifyObject "ModifyContainer | ModifyContentObject | ModifyControl">

Responses.

Responses shall include create object, modify object, and control flow 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; | Assign | DestroyObject | ExecuteChain">

Modifiable Interactive Document

The Modifiable 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.

<!element mid (VariableDeclaration*, Assign*, Execute*, SystemChain, ResponseChain*)>

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. 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 it will respond. Examples of container objects are windows, panels, and frames.

Variable declarations, variable assignments, and stimuli are associated with the CreateContainer element through their occurrence within the CreateContainer’s content model.

The refrange attribute value must be fixed in the DTD. The value must be the name of the parent attribute followed by the letter B. The letter B indicates that the parent attribute must reference back to a preceding element ID.

The 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 DTD.

The parent attribute must reference element types derived from the CreateContainer form.

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 CreateContainer (VariableDeclaration*, Assign*, Stimulus*)>

<!attlist CreateContainer

refrange CDATA "parent B"

ireftype CDATA #IMPLIED

parent IDREF #REQUIRED

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.

The object attribute identifies the existing container object to be modified, by referring to its unique identifier. The unique identifier shall not be modified, and the object label shall not be modified. All other attributes of the object may be modified.

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 apply to its current state, not to the original creation state.

The refrange attribute value must be fixed in the DTD. The value must be the name of the object attribute followed by the letter B. The letter B indicates that the object attribute must reference back to a preceding element ID.

The 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 modified.

The object attribute must reference element types derived from the CreateContainer form.

<!element ModifyContainer (assign*, stimulus*)>

<!attlist ModifyContainer

refrange CDATA "object B"

ireftype CDATA #IMPLIED

object IDREF #REQUIRED

>

Create a Content Object.

The create Content Object (CreateContentObject) element shall be used to create a host Content Object for intrinsic data content. Examples of Content Objects are Text, Image, Video, Audio, and Animation objects.

The refrange attribute value must be fixed in the DTD. The value must be the name of the parent attribute followed by the letter B. The letter B indicates that the parent attribute must reference back to a preceding element ID.

The 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 DTD.

The parent attribute must reference element types derived from the CreateContainer form.

The loctype attribute specifies the type of location address used by the ContentRef attribute.

The ContentRef attribute uses HyTime location addressing to reference the source data content that will populate the content object.

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 CreateContentObject (VariableDeclaration*, assign*, stimulus*)>

<!attlist CreateContentObject

refrange CDATA "parent B"

ireftype CDATA #IMPLIED

parent IDREF #REQUIRED

loctype CDATA #IMPLIED

ContentRef CDATA #IMPLIED

ID ID #REQUIRED

Label CDATA #IMPLIED

>

Modify a Content Object.

The modify Content Object (ModifyContentObject) element shall be used to redefine an existing Content Object.

The refrange attribute value must be fixed in the DTD. The value must be the name of the object attribute followed by the letter B. The letter B indicates that the object attribute must reference back to a preceding element ID.

The 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 modified.

The object attribute must reference element types derived from the CreateContainer form.

 

The loctype attribute specifies the type of location address used by the ContentRef attribute.

The ContentRef attribute uses HyTime location addressing to reference the source data content that will populate the content object.

<!element ModifyContentObject (assign*, stimulus*)>

<!attlist ModifyContentObject


refrange CDATA "parent B"

ireftype CDATA #IMPLIED

object IDREF #REQUIRED

loctype CDATA #IMPLIED

ContentRef CDATA #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, internal, and external processes.

 

The refrange attribute value must be fixed in the DTD. The value must be the name of the parent attribute followed by the letter B. The letter B indicates that the parent attribute must reference back to a preceding element ID.

The 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 DTD.

The parent attribute must reference element types derived from the CreateContainer form.

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*, assign*, stimulus*)>

<!attlist CreateControl

refrange CDATA "parent B"

ireftype CDATA #IMPLIED

parent IDREF #REQUIRED

ID ID #REQUIRED

Label CDATA #IMPLIED

>

Modify a Control Object.

The modify control object (ModifyControl) element shall be used to redefine an existing control object.

The refrange attribute value must be fixed in the DTD. The value must be the name of the object attribute followed by the letter B. The letter B indicates that the object attribute must reference back to a preceding element ID.

The 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 modified.

The object attribute must reference element types derived from the CreateContainer form.

<!element ModifyControl (assign*, stimulus*)>

<!attlist ModifyControl

refrange CDATA "object B"

ireftype CDATA #IMPLIED

object IDREF #REQUIRED

>

Create an External Object.

The create external object (CreateExternalObject) element shall be used to create objects representing things outside of the ISMID application. For example, elements derived from this architectural form would be used to represent the computer operating environment or a diagnostic system connected to the ISMID system.

Label 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. --

The refrange attribute value must be fixed in the DTD. The value must be the name of the parent attribute followed by the letter B. The letter B indicates that the parent attribute must reference back to a preceding element ID.

The 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 DTD.

The parent attribute must reference element types derived from the CreateContainer form.

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*, assign*, stimulus*)>

<!attlist CreateExternalObject

refrange CDATA "parent B"

ireftype CDATA #IMPLIED

parent IDREF #REQUIRED

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 refrange attribute value must be fixed in the DTD. The value must be the name of the object attribute followed by the letter B. The letter B indicates that the object attribute must reference back to a preceding element ID.

The 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 modified.

The object attribute must reference element types derived from the CreateContainer form.

<!element ModifyExternalObject (VariableDeclaration*, assign*, stimulus*)>

<!attlist ModifyExternalObject

refrange CDATA "object B"

ireftype CDATA #IMPLIED

object IDREF #REQUIRED

>

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 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 form.

<!element DestroyObject EMPTY>

<!attlist DestroyObject

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 execute the contained response chain and then execute the referenced response chain.

<!element stimulus ((%Responses;)*, end?)>

<!attlist stimulus

reftype CDATA "rspchref ResponseChain"

rspchref IDREF #IMPLIED

>

Response

Response chains are called by their unique identifiers and passed parameters via the argdecl element. Response chains are initiated when the MID receives a stimulus. The system chain must exist and is the chain that is initiated by a stimulus resulting from system startup.

<!element (SystemChain | ResponseChain) (ArgumentDeclaration*, (%Responses;)+, End?)>

<!attlist ResponseChain

ID ID #IMPLIED

Label CDATA #IMPLIED

>

 

Argument Declaration

<!element ArgumentDeclaration (nameName)>

Execute Response Chain

 

The ireftype attribute contains the name of the ResponseChainRef attribute followed by the GI of the ResponseChain element. The value of this attribute shall be fixed in the DTD.

<!element ExecuteChain (argument*)>

<!attlist ExecuteChain

ireftype CDATA "rspchref 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 neither the if or elseif expression 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 expr 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 is used to terminate the case statement.

<!element Break EMPTY>

Expression

The Expression element is evaluated as a DSSSL or HyFunk expression and the result is returned.

<!element Expression CDATA>

<!attlist Expression

notation NOTATION (DSSSL | HyFunk) "DSSSL" -- expressions specified using the DSSSL or HyFunk expression language --

>

Argument

 

<!element Argument (Expression)>

 

Variable declaration

The VariableDeclaration element binds a name to a run-time storage location. Variables must be declared before use. The expr initializes the variable. The variableType attribute specifies the type of the variable. Every variable type has a default initialization: zero for integer and float types, false for boolean, and null for list andstring. The default sgmlchar is zero.

<!element VariableDeclaration ( Name, Expression?)>

Assignment statement

<!element Assignment ( Name, Expression)>

 

Variable name

<!element Name (#PCDATA)>

Execute external process

The execute element binds a name and argument declarations to a call to an external process. There is no requirement that the MID communicate with the external process after it is launched.

<!element Execute ( Name, Argument*)>

<!attlist Execute

HyTime NAME queryloc

ID ID #IMPLIED

notation NAME #REQUIRED

notfound (error | ignore) "ignore"

>

 

End

This element terminates the execution of the interactive document.

<!element end EMPTY>

Abstract IADD Subset

<!ELEMENT mid - O (vardecl*, SystemChain, ResponseChain*)>

<!ATTLIST mid ISMID NAME #FIXED "mid">

<!-- Response Chain -->

<!ELEMENT (SystemChain | ResponseChain) (argdecl*, (%respnses;)+, end)>

<!ATTLIST ResponseChain

ISMID NAME #FIXED ResponseChain

ID ID #IMPLIED

Label CDATA #IMPLIED

>

<!ATTLIST SystemChain

ISMID NAME #FIXED SystemChain

>

<!-- Variable Declaration -->

<!ELEMENT VariableDeclaration ( name, Expression?)>

<!-- Add control attributes -->

<!ATTLIST VariableDeclaration

ISMID NAME #FIXED VariableDeclaration

vartype (%VariableTypes;) string

>

<!-- Variable Name -->

<!ELEMENT Name (#PCDATA)>

<!ATTLIST Name ISMID NAME #FIXED Name>

<!--Expression-->

<!-- expressions specified using the DSSSL or HyFunk expression language -->

<!ELEMENT Expression CDATA>

<!ATTLIST Expression

ISMID NAME #FIXED Expression

notation NOTATION (DSSSL | HyFunk) "DSSSL"

>

<!-- Argument Declaration -->

<!ELEMENT ArgumentDeclaration (Name)>

<!ATTLIST ArgumentDeclaration

ISMID NAME #FIXED ArgumentDeclaration

vartype (%vartyps;) string

>

<!ELEMENT Assign ( Name, Expression)>

<!ELEMENT If ( Expression, (%responses;)*, Elseif*, Else?, End?)>

<!ATTLIST If ISMID NAME #FIXED If>

<!ELEMENT Elseif ( Expression, (%responses;)*, End?)>

<!ATTLIST If ISMID NAME #FIXED Elseif>

<!ELEMENT Else ( (%responses;)*, End?)>

<!ATTLIST Else ISMID NAME #FIXED Else>

<!ELEMENT DestroyObject EMPTY>

<!ATTLIST DestroyObject

ISMID NAME #FIXED DestroyObject

object IDREF #REQUIRED>

<!ELEMENT end EMPTY>

<!ATTLIST End ISMID NAME #FIXED End>

 

Normative Annex A: 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 11: "The ISMID Abstract Architecture."

Requirements

A conforming IADD shall contain the following sections. Each section shall be written as described below.

Abstract IADD Subset

A conforming IADD shall either reference the abstract IADD subset or define the elements from the subset that are required for the application being defined. The abstract IADD is referenced by including the IAS notation declaration, the IAS entity declaration, and the IAS entity reference in the ISMID application DTD. The following are templates for the IAS notation declaration, the IAS entity declaration, and the IAS entity reference.

<!Notation AIS PUBLIC "ISO/IEC XXXX:XXXX//NOTATION ISMID Application Definition Document//EN">

<!Entity % AIS public "-//DTD ISMID Application Defintion Document//EN" ndata AIS>

%AIS;

 

Document Type Definition

The syntax of a conforming IADD shall be governed by a valid, SGML Document Type Definition, included in this section in its entirety.

Data Content Notations

A conforming IADD shall define all ISMID intrinsic data content types using SGML notation declarations. The semantics of each notation may be further described, as deemed necessary by the ISMID 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 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.

Object generated

Object generated stimuli are invoked from within a created object .

Externally generated

Externally generated stimuli are initiated from external sources such as input from an operating environment or hardware diagnostic system..

Properties

A conforming IADD shall define the semantics of each property declared in the attribute definition list of any object element in the 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 Type]

Each container object type shall be listed by name.

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.

Create Object

The architectural form and declaration for creating this object type shall be defined.

Modify Object

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 dedlared in the ISMID application being defined.

[Content Object Type]

Each content object type shall be listed by name.

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 container type shall be listed.

Create Object

The architectural form and declaration for creating this object type shall be defined.

Modify Object

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 Type]

Each control object type shall be listed by name.

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 container type shall be listed.

Create Object

The architectural form and declaration for creating this object type shall be defined.

Modify Object

The architectural form and declaration for modifying this object type shall be defined.

Informative Annex B: Sample ISMID Application Definition Document

[This annex will be expanded to include a larger set of notation and object types]

Document Type Definition

 

Data Content Notations

<!NOTATION BMP PUBLIC "-//ISMB 0-7923-9432-1:: Graphic Notation//NOTATION Microsoft Device Dependant Bitmap//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">

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">

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 | Executechain">

Responses

This entity lists the possible responses to a given stimulus.

<!entity % responses

"%CreateObject; | %ModifyObject; | %ControlFlow; | Assign | DestroyObject">

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?">

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

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 may send an OnClick stimulus to a single object at a time.

<!element OnClick ((%responses;)*, End?)>

<!ATTLIST OnClick

ISMID NAME #FIXED "Stimulus"

>

Object-generated

OnResize

Container and content objects generate the OnResize stimulus when a user resizes the object. Responses may adjust the size of children, or initiate some other action.

<!element OnResize ((%responses;)*, end?)>

<!ATTLIST OnResize

ISMID NAME #FIXED "Stimulus"

>

OnDestroy

Container and content objects generate the OnDestroy stimulus when a user closes the objects.

<!element OnDestroy ((%responses;)*, End?)>

<!ATTLIST OnDestroy

ISMID NAME #FIXED "Stimulus"

>

OnLoadComplete

A content object generates an OnLoadComplete stimulus when it finishes loading the content specified in the ContentRef property.

<!element OnLoadComplete ((%responses;)*, End?)>

<!ATTLIST OnLoadComplete

ISMID NAME #FIXED "Stimulus"

>

Properties

Parent

The parent property defines the object that contains this object. This object will be destroyed if its parent is destroyed.

ID

The ID property defines a unique identifier for referencing the object. The ID property is required for every object type, and is therefore present in every element derived from the CreateObject architectural form.

Label

The Label property contains a descriptive name for the object.

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, OnOnn On a window, the caption shall be 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

Object

The Object property is used to reference an existing object when modifying or destroying the object.

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

Bold or not bold

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 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 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.

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.

Width

The Width property sets the width of the object to the indicated value, given in pixels.

Height

The ViewHeight property sets the height of the object to the indicated value, given in pixels.

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.

ContentRef

The ContentRef property locates the content that is to be loaded in this content object.

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

Parent, ID, Label, Caption, TitleBar, WindowState

CreateWindow

Creates a window object.

ISMID Architectural Form

This element type is derived from the CreateContainer architectural form.

Declarations

<!element CreateWindow (VariableDeclaration*, (%WindowStimuli;))>

<!ATTLIST CreateWindow

ISMID NAME #FIXED "CreateContainer"

ireftype CDATA #FIXED "Parent mid CreateWindow"

Parent IDREF #REQUIRED

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

Modifies a window object.

ISMID Architectural Form

This element type is derived from the ModifyContainer architectural form.

Declarations

<!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

Parent, ContentRef, ID, Label, Visible, ActualWidth, ActualHeight, Left, Top, Width, Height

CreateImage

Creates an image object

ISMID Architectural Form

CreateContentObject

Declarations

<!element CreateImage (VariableDeclaration*, (%ImageStimuli;))>

<!ATTLIST CreateImage

ISMID NAME #FIXED "CreateContentObject"

Parent IDREF #REQUIRED

ContentRef ENTITY #IMPLIED

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

%CreateFontProperties; >

ModifyImage

Modifies an Image object.

ISMID Architectural Form

ModifyContentObject

Declarations

<!element ModifyImage (Assign*, %ImageStimuli;))>

<!ATTLIST ModifyImage

ISMID NAME #FIXED "ModifyContentObject"

ireftype CDATA #FIXED "object CreateImage"

Object IDREF #REQUIRED

ContentRef CDATA #IMPLIED

ActualWidth NUMBER #IMPLIED

ActualHeight CDATA #IMPLIED

Left CDATA #IMPLIED

Top CDATA #IMPLIED

Width CDATA #IMPLIED

Height CDATA #IMPLIED

%ModifyFontProperties; >

Control Objects

Button

Semantics

A Button is a control object used to initiate a stimulus.

Stimuli

OnClick

Properties

Parent, ID, Label, Enabled, Visible, BevelWidth, Caption, ForeColor, Left, Top, Width, Height

CreateButton

Creates a button object.

ISMID Architectural Form

CreateControlObject

Declarations

<!element CreateButton (VariableDeclaration*, OnClick)?)>

<!ATTLIST CreateButton

ISMID NAME #FIXED "CreateControlObject"

ireftype CDATA #FIXED "parent CreateWindow"

parent IDREF #REQUIRED

ID ID #REQUIRED

Label CDATA #IMPLIED

Enabled (Enabled | NEnabled) "Enabled"

Visible (Visible | NVisible) "Visible"

BevelWidth NUMBER "2"

Caption CDATA #IMPLIED

ForeColor CDATA "000000"

Left CDATA #REQUIRED

Top CDATA #REQUIRED

Width CDATA #REQUIRED

Height CDATA #REQUIRED

%CreateFontProperties; >

ModifyButton

Modifies a button object.

ISMID Architectural Form

ModifyControlObject

Declarations

<!element ModifyButton (Assign*, %ButtonStimuli;))>

<!ATTLIST ModifyButton

ISMID NAME #FIXED "ModifyControl"

ireftype CDATA #FIXED "object CreateButton"

object IDREF #REQUIRED

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

%ModifyFontProperties; >

Annex C: Sample ISMID Instance

IN WORK