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: [email protected] 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:
The ISMID HyTime support declarations, page *).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,
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 CreateContainers 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
#REQUIREDID ID
#REQUIREDLabel 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 ModifyContainers content model. All variable declarations must occur when the object is created; new variables shall not be declared when modifying a container object.
All modifications of an object 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
CreateContentObjectrefrange 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
CreateControlrefrange 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
ModifyControlrefrange 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
ModifyExternalObjectrefrange
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
DestroyObjectireftype 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
stimulusreftype 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
ResponseChainID ID #IMPLIED
Label CDATA #IMPLIED
>
Argument Declaration
<!element
ArgumentDeclaration (nameName)>
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
ExecuteChainireftype 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 users 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