Interscript
An Interchange Standard for Editable Documents

Motivation, Goals, and Constraints

The Base Language: A Travelogue

The Layout Model

Some Standard Constructs
Interscript Presentation to ANSI X3V1   January, 1984
Motivation, Goals, and Constraints

Motivation and Goals

What properties should an interchange standard have?

What Interscript is not

What is in the first version of Interscript?
Interscript Presentation to ANSI X3V1   January, 1984
Motivation and Goals
Motivation

Xerox needs an interchange standard for editable documents
for compatibility among products
for product evolution

The office systems world needs an interchange standard for editable documents
to replace paper documents
It is an interesting technical problem

Goals

A standard that can span a wide product range

A standard that can evolve

A standard that supports
What-You-See-Is-What-You-Get (WYSIWYG) editors
formatting languages
Interscript Presentation to ANSI X3V1   January, 1984
What properties should an interchange standard have?

It must be "as simple as possible, but no simpler"

It must enable interchange among editors with different capabilities

It must be simple to internalize a script

Both form and content must be representable

Structure must be representable and preservable

It must be simple to externalize a document

The encoding should be efficient in space and time

It must be extensible
Interscript Presentation to ANSI X3V1   January, 1984
What Interscript is not

It is not a file format

It is not a standard for editing

It is not an editing system itself
combining documents is not an Interscript function

It is not a substitute for other standards
e.g., character codes, font naming

It is not intended for direct communication among people
Interscript Presentation to ANSI X3V1   January, 1984
What is in the current version of Interscript?

A processing model
internalization  editing  externalization
( script > document > script )

A (solid) basis for a standard
a description language that can be extended by definition
small compact syntax
precise formal semantics

Standardized document constructs
TEXT (FONT, TAB)
PARAGRAPH
TABLE (TABLEROW, TABLEENTRY, COLUMNSPLIT)

Standardized layout constructs
description not prescription: TEX-like
a general layout model
overall document layout
page layout
character placement
Interscript Presentation to ANSI X3V1   January, 1984
The Base Language: A Travelogue

Why a Description Language?

Syntax and Semantics by Example

When are Two Scripts Equivalent?

Tags and Node Invariants

Ignorance-Based Editing
Interscript Presentation to ANSI X3V1   January, 1984
Why a Description Language?

Any
interchange format constitutes a description language

Documents are richly structured

A document interchange standard must be able to evolve smoothly

Simple documents should be simple

A simple language with an extension-by-definition facility has these properties

Computer-language research has developed tools for expression
and precision
programming languages and specification languages
compiler technology
syntax-description languages
formal semantics languages

The description language and its encoding are separable issues
Interscript Presentation to ANSI X3V1   January, 1984
Syntax and Semantics by Example (1)
A script is a tree of nodes
{ "This string is the only content of this node" }

A script is a tree of nodes
INTERSCRIPT/INTERCHANGE/1.0
{ DOCUMENT$
{ TEXT$ "This is the first subnode of the document" }
{ TEXT$ "This string is the only content of this node" }
} ENDSCRIPT

Basic values are atoms, numbers, strings, and quoted expressions
Atoms: TEXT DOCUMENT SimpleId any.qualified.name
Numbers: 0 1 2 3.14159 1.7E3
Strings: "just characters in quotes"
Quoted Expressions: '3+5' '{ PARAGRAPH$ leftMargin� }'
Interscript Presentation to ANSI X3V1   January, 1984
Syntax and Semantics by Example (2)

An attribute is a name-value pair
leftMargin ← 36

Expressions are very simple
leftMargin^
leftMargin^ LT (rightMargin^  20)
leftMargin^+rightMargin^  20

The only kind of structured value is a node
A content-only node is like a vector
a ← { "Now " "is " "the " "time " "for " . . . }
a^!0
An attribute-only node is like a record
origin ← { CARTESIAN$ x𡤀 y𡤀 z𡤀}
origin.y^
A node may hold both contents and attributes
{ TEXT$ font ← TimesRoman^ --an attribute--
 "This string is the only content of this node" }
Interscript Presentation to ANSI X3V1   January, 1984
Syntax and Semantics by Example (3)

A node's semantics are based on its tags
{ TABLE$ heading←{TEXT$ "Frooble production by territory"}
{ TABLEROW$
{ TABLEENTRY$ { TEXT$ "Yukon" } }
{ TABLEENTRY$ {TEXT$ "200 froobles"} }
. . .
}
}

A node value may be opened to supply items
{ TABLE$ heading←{TEXT$ "Frooble production by territory"}
{ TABLEROW$ subEg ← {TABLEENTRY$}
{ subEg^| {TEXT$ "Yukon" } }
{ subEg^| {TEXT$ "200 froobles"} }
. . .
}
}
Interscript Presentation to ANSI X3V1   January, 1984
Syntax and Semantics by Example (4)

Name scopes nest
subEg ← 7
{ TABLE$ heading←{TEXT$ "Frooble production by territory" }
{ TABLEROW$ subEg ← {TABLEENTRY$}
{ subEg^| {TEXT$ "Yukon" } }
{ subEg^| {TEXT$ "200 froobles" } }
. . .
}
}
Interscript Presentation to ANSI X3V1   January, 1984
Syntax and Semantics by Example (5)

Representing Structure in Documents

Kinds of structure:
Inheritance  nesting and names
"Styles"  by name (indirection)
Associating separate parts  by name (indirection)
Structural evaluation
name% instead of name^
sb^+7 and 5+7 and 12 are equivalent
sb%+7 has value 12, but it is only equivalent to sb%+7
Structural node opening
name%| instead of name^|
format.body %← {PARAGRAPH$ lineJustification←True^
 font ← TimesRoman^ }
{ format.body%| . . . } has value
{ PARAGRAPH$ lineJustification←True^
 font ← TimesRoman^ . . . }

Structural binding
sb %← 5
Interscript Presentation to ANSI X3V1   January, 1984
When are Two Scripts Equivalent?

When they have the same formal semantics
The formal semantics map a script into a tree of "tuples"
The semantics define a canonical representation
Two scripts are equivalent if their semantics match

Equivalence enables the testing of editors
Does the editor produce valid scripts?
Are internalization and externalization an idempotent pair?
Interscript Presentation to ANSI X3V1   January, 1984
Tags and Node Invariants

Every tag has a declaration that includes

the names and types of relevant attributes

the type of the allowable content

An invariant for nodes with this tag (a predicate)

any other tags that must also be present on a node with this tag

A tag's properties can be defined in Interscript
Interscript Presentation to ANSI X3V1   January, 1984
Ignorance-Based Editing

An editor may display whatever it can recognize

Editing known quantities in the context of unknown quantities
the text caption of a figure
the frame for some synthetic graphics

Any operation that preserves invariants results in a valid script
perform semantically meaningful operations
satisfy invariant without understanding it
change nothing (contents, tags, relevant attributes)
Interscript Presentation to ANSI X3V1   January, 1984