Clear Text Representation and Interchange Format

The Clear Text Representation and Interchange Format consists of the Clear Text Structure Representation and Interchange Format and the Clear Text Content Representation and Interchange Format.

Clear Text Structure Representation and Interchange Format

The Clear Text Structure Representation and Interchange Format is based on SGML. The SGML representations of the base structure element value types is given in . The SGML Document Type Definition is given in .

The SGML Document Type Definition is structured to match as closely as possible the structure of the ASN.1 modules defined in . End-tags, except those for elements which have a declared content of "EMPTY", shall not be omitted in the Clear Text Structure Representation and Interchange Format. General entity references are not allowed in content are not allowed in the content of an element in the Clear Text Structure Representation and Interchange Format. The content of the document type declaration subset is limited to general entity declarations which use the external entity specification form for the entity text in the Clear Text Structure Representation and Interchange Format. See ISO/IEC 9070 for details. Good SGML style specifies that all inclusions of externally defined document components be identified by entity references which occur at the front of the document. This allows a simple SGML process to find all included document components; this process uses only the SGML information and need not understand the semantics of the what the SGML represents. This International Standard facilitates this aspect of good SGML style, but does not require its use.

Base Structure Element Value Types

The SGML representation of the base structure element value types shall be as follows. Occasionally, additional requirements on the representation of values are specifed in the comments in the SPDL Document Type Definition. These comments are normative.

Boolean type

Values of the Boolean type are represented as an attribute of type CDATA of an element. This attribute shall have as its value one of the following instances of character data: "true" or "false".

Enumerated types

If the Enumerated type consists of a finite set of values specified in this International Standard, then the type is represented as an attribute of an element in which the attribute is a name list that lists representations for the finite set of values. If the Enumerated type consists of an open ended set of values specified by Public Object Identifiers, then the type is represented by CDATA with an appropriate NOTATION attribute.

Integer type

Values of the Integer type are represented as an attribute of an element in which the attribute is a number, if the Integer is positive or a Cardinal, and is a name token which must be of the form of a sequence of decimal digits optionally preceded by a "+" or "-" sign, otherwise.

Real type

Values of the Real type are represented in the clear text form defined in . Normally, this representation is used for the value of a name token which is an attribute of an element, otherwise this representation is used for the CDATA in an element.

Printable String type

Values of the Printable String type are represented as CDATA which is the content of an element.

Octet String type

Values of the Octet String type are represented as CDATA which is the content of an element. If the Octet String is in a DATA BLOCK, then it is ASCII85 encoded (see ). If it is in a LOCAL LOCATION IDENTIFIER, the Octet String is limited to octets in the graphic characters of ISO 646. Otherwise, the Octet String is Hexadecimal encoded.

Name type

Values of the Name type are represented as CDATA which is the content of an element. Leading and trailing white space characters surrounding the name in the CDATA are ignored.

Object Identifier type

Values of the Object Identifier type are represented as CDATA which is the content of an element that has a NOTATION attribute with the value "objid". See that NOTATION declaration for the reference to the defining occurance of the notation. Leading and trailing white space characters surrounding the identifier in the CDATA are ignored.

Public Identifier type

Values of the Public Identifier type are represented as CDATA which is the content of an element that has a NOTATION attribute with the value "pubid". See that NOTATION declaration for the reference to the defining occurance of the notation. Leading and trailing white space characters surrounding the identifier in the CDATA are ignored.

Environment Name type

Values of the Environment Name type are represented as CDATA which is the content of an element that has a NOTATION attribute with the value "envnm". See that NOTATION declaration for the reference to the defining occurance of the notation. Leading and trailing white space characters surrounding the name in the CDATA are ignored.

Glyph Identifier type

Values of the Glyph Identifier type are represented as CDATA which conforms to the syntatic requirements of a structured name in ISO 9541 or a Simple Name as defined in . Leading and trailing white space characters surrounding the identifier in the CDATA are ignored.

SPDL Document Type Definition

In addition to the type representations defined in , when a composite structure element has a subordinate that is a sequence of Cardinals or a similarly simple type, that sequence is encoded as CDATA in which the elements of the sequence are separated by one or more space characters and the individual elements are represented as defined in . This composite representation is indicated in the comments which are normative.

The SGML Document Type Definition is structured to match as closely as possible the structure of the ASN.1 modules defined in .

  • The names of SGML elements are mostly 7 octets long and always no more than 8 octets. These short names suggest the SPDL structure elements that they represent. SGML Comments are used to better indicate this correspondance. The type of a base structure element is included in parentheses following the name of the structure element in comments.
  • Where there is an enumerated type whose values are in one to one correspondance with the names of structure elements, the same short names are used for both the elements of the enumerated type and for the encoding of the structure elements.
  • Simple base structure elements are often encoded as attributes of the SGML element that represents the composite structure elements to which they are subordinate. The type of the value of that attribute is chosen to be as close to the type of the base structure element as is possible in SGML. Base structure elements that whose type is a union of other types are always encoded as separate elements. There will often be an attribute that indicates which of the types in the union occurs in a given element.
  • If all of the subordinates of a composite structure element are represented as attributes, then the declared content of the SGML element that represents the composite structure element will be "EMPTY". More often, a composite structure element in which the subordinates may occur in any order has some subordinates that are represented as attributes and others that are represented as SGML elements. In such cases, the syntax of SGML requires that the attributes occur before the contained SGML elements. Within each group, however, the subordinates may occur in any order. In a composite structure element in which the subordinates shall occur in the specified order, if the first subordinate can be represented by an attribute, then that is done. All other subordinates will be represented by SGML elements in the content model of the SGML element representing the composite structure element.
  • ASN.1 type definitions are approximated in SGML be defining a parameter entity with the same name as the ASN.1 type (or a shortened form of that name). The value of the parameter entity is the "|" separated group of SGML element names for the structure elements whose value is of that type. This parameter entity is used in the position of the SGML element type in an element declaration that specifies the content model and attributes associated with values of that type. All SGML elements whose value is of that type are defined in one spot and subsequent changes to this International Standard that affect the type definition can be accomplished by editting this single "type definition". (SGML limitations on the number of element names that can occur in an name group may require defining more than one parameter entity when there are many names in the group.)
  • The SGML Document Type Definition:   <!-- (C) International Organization for Standardization 1993 Permission to copy in any form is granted for use with conforming SGML systems and applications as defined in ISO 8879-1986, provided this notice is included in all copies. Creator: Stephen Zilles Version: 1.03 94-Dec-16 --> <!-- Public document type definition. Typical invocation: <!DOCTYPE SPDL PUBLIC "ISO/IEC 10180//DTD Standard Page Description Language//EN" --> <!ENTITY % doctype "spdl" -- Document type generic identifier --> <!--This is a document type definition for ISO 10180, the Standardized Page Description Language. It follows as closely as possible the structure of the corresponding Binary Representation and Interchange Format in Clause 38 of this International Standard. The definition is divided into "modules" each of which defines the ENTITIES used, the ELEMENTs defined and ATTLISTs for those ELEMENTs. --> <!-- included DTD Entities --> <!ENTITY % fontset PUBLIC "ISO 9541-2:1991//DTD Font Attribute Set//EN"> <!ENTITY % strucnm PUBLIC "ISO 9541-2:1991//DTD Structured Name//EN"> <!-- NOTE that corrigenda have been issued against this standard and should be incorporated in the public text for these DTDs --> %fontset; %strucnm; <!-- Structure Definition "module" --> <!-- Notations used for Identifiers --> <!NOTATION pubid PUBLIC "ISO/IEC 9070//NOTATION Public Identifiers//EN" > <!NOTATION objid PUBLIC "ISO/IEC 10180//NOTATION Object Identifier type//EN" > <!NOTATION envnm PUBLIC "ISO/IEC 9070//NOTATION object-name component//EN" > <!-- Types for Base Structure Elements --> <!-- Entities --> <!ENTITY % Boolean "CDATA" -- Boolean type --> <!-- The only allowed values are "true" or "false", in lowercase#--> <!ENTITY % Integer "CDATA" -- Integer type --> <!ENTITY % Cardinl "NUMBER" -- Cardinal type --> <!ENTITY % PosIntg "NUMBER" -- Postitive Integer type --> <!ENTITY % Real "CDATA" -- Real type --> <!ENTITY % Number "CDATA" -- Number type --> <!ENTITY % NnNgNum "CDATA" -- Non Negative Number type --> <!ENTITY % Name "CDATA" -- Name type --> <!ENTITY % PrntStr "CDATA" -- Printable String type --> <!ENTITY % PblcIdn "CDATA" -- Public Identifier type --> <!-- the environment identifier type is defined in three pieces to avoid overrunning the GRPCNT quantity limit --> <!ENTITY % envid "hintnm | nSPDLnm | envrsid | fnidspc | ndxfnid | gmap | fntrsid" -- environment identifier type --> <!ENTITY % envid1 "namddim | namdxyd | namdloc | mednam | medmclr | medmtyp | medtooh | medgran | edgfnsh | medmid | fnshnam | stchnam | stchtyp | bindnam | bindtyp | bindclr | trimnam | diecnam | diecnm | pnchnam | perfnam" -- environment identifier type, continued --> <!ENTITY % envid2 "perftyp | slitnam | nsrtnam | nsrtnm | covrnam | covrnm | foldnam | nfinprm | colrsid | colrid | strpage | seppage | endpage | abrtdpi | outbnam" -- environment identifier type, continued --> <!ELEMENT (%envid;) - - CDATA -- environment identifier --> <!ATTLIST (%envid;) notation NOTATION (pubid | objid | envnm) #REQUIRED -- notation in which environment identifier is represented --> <!ELEMENT (%envid1;) - - CDATA -- environment identifier --> <!ATTLIST (%envid1;) notation NOTATION (pubid | objid | envnm) #REQUIRED -- notation in which environment identifier is represented --> <!ELEMENT (%envid2;) - - CDATA -- environment identifier --> <!ATTLIST (%envid2;) notation NOTATION (pubid | objid | envnm) #REQUIRED -- notation in which environment identifier is represented --> <!-- the public object identifier type --> <!ENTITY % pubobid "pubobid | clrsnm | psetid | pcolrid | matchrl | satisfc | dpiname | propnam | plexdpi | finopnm | colrcls | ospcnm" -- public object identifier type --> <!ELEMENT (%pubobid;) - - CDATA -- public object identifier --> <!ATTLIST (%pubobid;) notation NOTATION (pubid | objid) #REQUIRED -- notation in which public object identifier is represented --> <!-- Structure Elements, SPDL Instance and TokenSequences --> <!-- Entities --> <!ENTITY % documnt "pageset|picture" -- Document -- > <!-- the Structure Element PAGE is intentionally not encoded --> <!ENTITY % ifntspc "fntrspc|fnt1spc|rfntspc|cfntspc|ufntspc" -- includable font specification --> <!ENTITY % fontspc "fnidspc|%ifntspc;" -- font specification -- > <!ENTITY % inclst0 "pageset | picture" -- Includable Structures, part 0--> <!ENTITY % inclst1 "pictbdy | nonSPDL | prologue |infrdcl | hint | cntxdcl | resdefn | stupprc | tknseqn | fontrfr| dictspc | %ifntspc;" -- Includable Structures, part 1 --> <!ENTITY % inclst2 " fontset |gmapspc | gmapspc | fndxmap | gndxtbl | datsspc | clrsspc | patnspc | formspc | dpidcls | addldpi" -- Includable Structures, part 2 --> <!-- The list of Includable Structure Elements: pageset pageset picture picture pictbdy picture body nonSPDL non-SPDL picture body prologue prologue infrdcl informative declaration hint hint cntxdcl context declaration resdefn resource definition stupprc setup procedure tknseqn tokensequence fontrfr font reference dictspc dictionary resource specification fontspc font specification fntrspc font reference font specification fnt1spc fonttype1 specification rfntspc remapped font specification cfntspc composite font specification ufntspc user font specification gmapspc glyph index map specification fndxmap font index map fontset 9541 font attribute set gndxtbl glyph index map translation table datsspc data source specification clrsspc color space resource specification patnspc pattern resource specification formspc form resource specification dpidcls dpi declaration addldpi additional dpi --> <!ENTITY % tknsref "(tknseqn | strctid)" -- tokensequence-or-ref --> <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT %doctype; - - (%documnt;|envres|%inclst1;|%inclst2;) +( comment ) --SPDL top level structure --> <!ELEMENT tknseqn - - CDATA -- tokensequence --> <!ELEMENT comment - - CDATA -- SPDL comment --> <!-- Comment and Public Identifiers --> <!-- Comments are encoded using the SGML comment convention --> <!-- The "Object" is identifier by the SPDL DTD reference --> <!-- The prefix on Public Identifiers defined by this standard --> <!-- is "ISO/IEC 10180//" --> <!-- SPDL Document "module" --> <!-- High Level Structure Elements --> <!-- Entities --> <!ENTITY % pgstbdy "(pageset|picture|strctid)*" -- Pageset Body --> <!ENTITY % body "(picture|tknseqn|strctid)*" -- body-of-picture --> <!ENTITY % prlgref "(prologue|strctid)" -- prologue-or-ref -- > <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT pageset - - ((%prlgref;)?,%pgstbdy;) > <!ELEMENT picture - - (%body; | nonSPDL | strctid) > <!ELEMENT pictbdy - - ((%prlgref;)?,%body;) -- Picture Body --> <!ELEMENT nonSPDL - - CDATA -- non-SPDL picture body --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!ATTLIST picture contrep CDATA #REQUIRED -- content representation --> <!-- value must be a Public Identifier as defined in ISO/IEC 9070 --> <!-- see for values defined in this standard --> <!-- for non-SPDL pictures, it specifies the notation used --> <!ATTLIST nonSPDL encoded (true|false) false -- indication whether ASCII85 encoding is used on data --> <!-- Prologue Structure Elements --> <!-- Entities --> <!ENTITY % infrref "(infrdcl | strctid)" -- informative-decl-or-ref --> <!ENTITY % hintref "(hint | strctid)" -- hint-or-ref -- > <!ENTITY % dpirref "(dpidecl | strctid)" -- dpi declaration-or-ref -- > <!ENTITY % cntxref "(cntxdcl | strctid)" -- Context Declaration-or-ref --> <!ENTITY % resdref "(resdefn | resdecl |cntxadd | strctid)" -- resource-definition-or declaration-or-ref --> <!ENTITY % stupref "(stupprc | strctid)" -- setup-procedure-or-ref -- > <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT prologue - - ( extndcl*, (%infrref;)?, nSPDLop*, dpidcls?, (%cntxref;)?, (%resdref;)*, (%stupref;)? ) > <!-- where no explicit elements are defined for the following Structure Elements: extndcl* external-declaration-list (%hintref;)* informative declarations nSPDLop* non-SPDL operation-list (%cntxref;)? context-declaration (%resdref;)* resource defn, resource decl, or context addition (%stupref;)? setup-procedure --> <!ELEMENT dpidcls - - (%dpirref;)* -- dpi-declaration-list --> <!ELEMENT infrdcl - - (%hintref;)* -- informative declarations--> <!ELEMENT hint - - (hintnm,hintval) -- hint-name-and-hint-value --> <!-- hintnm = envid(see base types above) hint-name --> <!ELEMENT hintval - - ANY -- hint-value --> <!-- the type of the content(hintval) depends on the hintname(hintnm)--> <!ELEMENT nSPDLop - - (nSPDLnm,nSPDLvl) -- non-SPDL-operation-and-value --> <!-- nSPDLnm = envid(see base types above) non-SPDL-operation-name --> <!ELEMENT nSPDLvl - - ANY -- non-SPDL-operation-value --> <!-- the type of the content (nSPDLvl) depends on the opname(nSPDLnm)--> <!ELEMENT cntxdcl - - (intrsid)*-- context-dictionary-name-list --> <!-- each intrsid must be the name of a context-dictionary --> <!ELEMENT cntxadd - - (intrsid) -- context-dictionary-name --> <!ELEMENT stupprc - - %tknsref;-- setup-procedure-tokensequence --> <!-- SPDL External Reference Module --> <!-- Assignment List --> <!-- Entities --> <!ENTITY % locatid "pubobid|loclcid|sgmlext|sgmlent" -- location identifier --> <!-- where the alternatives for location identifiers are: pubobid public object identifier loclcid local location identifier sgmlext encoding dependent location identifier-1 sgmlent encoding dependent location identifier-2 --> <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT extndcl - - (strctid, (%locatid;)) -- external declaration --> <!ELEMENT strctid - - CDATA -- structure element identifier --> <!-- pubobid = pubobid(see ENTITY above) sgml public identifier --> <!ELEMENT loclcid - - CDATA -- local location identifier (Octet/Char String) --> <!ELEMENT sgmlext - - CDATA -- sgml external identifier (external id per ISO 8879) --> <!ELEMENT sgmlent - O EMPTY -- sgml external identifier as specifed via an ISO 8879 entity name --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!ATTLIST sgmlent entname ENTITY #REQUIRED -- name of entity whose declaration defines data location --> <!ATTLIST extndcl strclid (%inclst0;|%inclst1; |%inclst2;|fontspc) #REQUIRED -- structure element class identifier (enumerated type) --> <!-- NOTE: the class identifiers have been chosen to be the same as the generic identifiers for the elements they correspond to except for font specification (fontspc) which is not encoded as a SGML element because it is a choice structure element. --> <!-- SPDL Resource Definition "module" --> <!-- Assignment List --> <!-- Entities --> <!-- fontspc: font spec (see above in includable instances) --> <!ENTITY % resspec "dictspc|%fontspc;|gmapspc|clrsspc|datsspc|patnspc|formspc" -- resource specification --> <!ENTITY % resclas "(Dict|Font|Encoding|ColorSp|DataSrc|Pattern|Form|Filter)" -- resource classes (enumerated type) --> <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT envres - - ( extndcl*, (%infrref;)*, (resdecl | cntxadd)*, (resdefn | resundf)) -- environment resource --> <!ELEMENT resdefn - - (envrsid,((%resspec;)|strctid)) -- resource definition --> <!ELEMENT resundf - - (envrsid) -- resource undefinition --> <!ELEMENT resdecl - - (intrsid,envrsid) -- resource declaration --> <!ELEMENT intrsid - - CDATA -- internal resource identifier (name) --> <!-- envrsid = envid(see types above) environment resource identfier --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!ATTLIST resdefn resclid %resclas; #REQUIRED -- resource class identifier (enumerated type) --> <!ATTLIST resundf resclid %resclas; #REQUIRED -- resource class identifier (enumerated type) --> <!ATTLIST resdecl resclid %resclas; #REQUIRED -- resource class identifier (enumerated type) --> <!-- Resource Specifications --> <!-- Entities --> <!ENTITY % psetspc "(psetid | psetlst)?"-- primary set specification--> <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT dictspc - - (%tknsref;)+ -- dictionary resource specification --> <!ELEMENT datsspc - - (%locatid;|datablk) -- data source resource specification --> <!ELEMENT datablk - - CDATA -- data block (octet string)--> <!-- the CDATA shall be an ASCII85 encoded octetstring --> <!ELEMENT clrsspc - - (clrsnm, %psetspc;, (%tknsref;)+) -- color space resource specification --> <!-- clrsnm = pubobid(see types above) color space family identifier --> <!-- psetid = pubobid(see types above) primary set identifier --> <!ELEMENT psetlst - - (pcolrid+) -- primary set list --> <!-- pcolrid = pubobid(see types above) primary color identifer --> <!ELEMENT patnspc - - (%tknsref;)+ -- pattern resource specification --> <!ELEMENT formspc - - (%tknsref;)+ -- form resource specification --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!-- SPDL Fonts and Glyph Index Map "module" --> <!-- Indexed Font Resource Specifications --> <!-- Entities --> <!-- fontspc: font spec (see above in includable instances) --> <!ENTITY % fmaplst "escchar? & shftout? & shftin? & subvect?" -- fmaptype parameters list --> <!ENTITY % fontlst "((%fontspc;)|strctid)+" -- font-or-ref list -- > <!ENTITY % gndxref "gndxtbl|strctid" -- glyph-indx-xlate-tbl-or-ref -- > <!ENTITY % fndxref "fndxmap | strctid" -- font-index-map-or-ref --> <!ENTITY % fnrfref "(fontrfr|strctid)" -- font-reference-or-ref -- > <!ENTITY % remap "(gmap | (%gndxref;))" -- remap -- > <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!-- fnidspc = envid(see above) font identifier font specification --> <!ELEMENT fntrspc - - (%fnrfref;, gmap) -- font reference font specification --> <!ELEMENT fnt1spc - - CDATA -- fonttype1 font specification --> <!ELEMENT rfntspc - - (ndxfnid, (%remap;)?) -- remapped font specification --> <!-- ndxfnid = envid(see base types above) indexed font identifier --> <!-- gmap = envid(see base types above) glyph index map identifier --> <!ELEMENT gndxtbl - - CDATA -- glyph index map translation --> <!-- The CDATA is a list of Cardinals separated by one or more blanks The value of the "size" attribute of this element specifies exactly how many Cardinals shall be in this list. --> <!ELEMENT cfntspc - - ((%fmaplst;),(%fndxref;),(%fontlst;)) -- composite font specification --> <!ELEMENT escchar - - CDATA -- escchar (cardinal) --> <!ELEMENT shftout - - CDATA -- shiftout (cardinal) --> <!ELEMENT shftin - - CDATA -- shiftin (cardinal) --> <!ELEMENT subvect - - CDATA -- subvector (octet string) --> <!ELEMENT fndxmap - - CDATA -- font index map --> <!-- The CDATA is a list of Cardinals separated by one or more blanks The value of the "size" attribute of this element specifies exactly how many Cardinals shall be in this list. --> <!ELEMENT ufntspc - - (%tknsref;)+ -- user font specification --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!ATTLIST gndxtbl size NUMBER #REQUIRED -- table size (cardinal) --> <!ATTLIST cfntspc type NUMBER #REQUIRED -- fmaptype (cardinal) --> <!ATTLIST fndxmap size NUMBER #REQUIRED -- map size (cardinal) --> <!-- Font Reference --> <!-- Entities --> <!ENTITY % fntaref "fontset|strctid" -- font attribute set-or-ref --> <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT fontrfr - - (fntrsid?, reqprop?, advprop?, matchrl?, satisfc?) -- font reference --> <!-- fntrsid = envid(see base types above) font resource identifier --> <!ELEMENT reqprop - - (%fntaref;) -- required properties --> <!ELEMENT advprop - - (%fntaref;) -- advisory properties --> <!-- matchrl = pubobid(see above) match rules(enumerated type) --> <!-- satisfc = pubobid satisfaction criterion (enumerated type) --> <!-- Glyph Map Specifications --> <!-- Entities --> <!ENTITY % glyphid "smplname|strucnm" -- Glyph Identifer Type alternatives --> <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT gmapspc - - (%glyphid;)+ -- glyph index map resource specification --> <!ELEMENT smplname - - CDATA -- name local to the document --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!ATTLIST gmapspc size NUMBER #REQUIRED -- map size (cardinal) --> <!-- SPDL Document Production Instructions "module" --> <!-- Useful Data Types: dimensions --> <!-- Entities --> <!ENTITY % dimensn "(pnchdia | pnchoff | trimoff | procoff)" -- dimensions type --> <!ENTITY % dimsval "(numrdim | namddim)" -- dimension value --> <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT %dimensn; - - %dimsval; -- dimensions --> <!ELEMENT numrdim - - CDATA -- numeric dimension (non-negative number) --> <!-- namddim = envid(see base types above) named dimension --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!ATTLIST %dimensn; tolrnce NMTOKEN #IMPLIED -- tolerance (non-negative number) --> <!-- Useful Data Types: xydimensions --> <!-- Entities --> <!ENTITY % xydimsn "(medmsz | refrsz | trimdim | diecpos)" -- xydimensions type --> <!ENTITY % xydmval "(numrxyd | namdxyd)" -- xydimensions value -- > <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT %xydimsn; - - %xydmval; -- xydimensions --> <!ELEMENT numrxyd - O EMPTY -- numeric xydimensions --> <!-- namdxyd = envid(see base types above) named xydimensions --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!ATTLIST %xydimsn; tolrnce NMTOKEN #IMPLIED -- tolerance (non-negative number) --> <!ATTLIST numrxyd xdim NMTOKEN #REQUIRED -- x-dimension (non-negative number) -- ydim NMTOKEN #REQUIRED -- y-dimension (non-negative number) --> <!-- Useful Data Types: head locations --> <!-- Entities --> <!ENTITY % hdlcval "(numrloc | namdloc)" -- head locations value --> <!-- Elements --> <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) --> <!ELEMENT headloc - - %hdlcval; -- head locations --> <!ELEMENT numrloc - - (hdloctn)+ -- numeric head location --> <!ELEMENT hdloctn - - CDATA -- head location (non-negative number) --> <!-- namdloc = envid(see base types above) named head locations --> <!-- Attributes of Elements --> <!-- ELEMENTS NAME VALUE DEFAULT --> <!ATTLIST headloc tolrnce NMTOKEN #IMPLIED -- tolerance (non-negative number) --> <!-- Useful Data Types: edge --> <!-- Entities --> <!ENTITY % edge "edge (topedge | botedge | lftedge | rgtedge) #REQUIRED" -- edge type --> <!-- This parameter entity is used as shown below: -- --ELEMENT pnchedg - O EMPTY -- -- punch edge -- --ATTLIST pnchedg %edge; -- -- edge --> <!-- DPI Declaration --> <!ELEMENT dpidecl - - ( meddpi? & medsdpi? & cmeddpi? & colrdpi? & copidpi? & pagedpi? & spagdpi? & plexdpi? & sidedpi? & xshfdpi? & yshfdpi? & csiddpi? & fnshdpi? & auxpdpi? & outbdpi? & dcmtdpi? & dstrdpi? & denddpi? & timedpi? & abrtdpi? & ospcdpi? & addldpi* ) -- dpi declaration -- > <!-- The list of DPI Structure Elements: medsdpi medium select dpi meddpi medium dpi cmeddpi current medium dpi colrdpi current colorant set dpi copidpi copies dpi pagedpi page select dpi plexdpi plex dpi sidedpi sides dpi xshfdpi x-image shift dpi yshfdpi y-image shift dpi csiddpi current side dpi fnshdpi finishing dpi auxpdpi auxilliary page type dpi outbdpi output bin dpi ospcdpi output specification dpi dcmtdpi document comment dpi dstrdpi document start message dpi denddpi document end message dpi timedpi timeout dpi abrtdpi abort policy dpi addldpi additional dpi --> <!-- Additional DPI --> <!ELEMENT addldpi - - (dpiname, dpivalu) -- additional dpi --> <!-- dpiname = pubobid(see base types above) additional dpi name --> <!ELEMENT dpivalu - - ANY -- additional dpi value --> <!-- the type of the content (value) depends on the dpiname --> <!-- List of suffixs commonly used for DPI related elements clr color (also colr) cnt count col column dia diameter dim dimension edg edge (also edge) id identifier lng length loc location msg message nam name (also name and nm) num number off offset pag page (also page) pos position prm parameters prp property shf shift spc specification sz size typ type (also type) wgt weight xyd xydimension --> <!-- Medium Document Production Instructions --> <!ELEMENT meddpi - - (meddecl*) -- medium dpi --> <!ELEMENT meddecl - - (medspc) -- medium declaration --> <!ATTLIST meddecl medid CDATA #REQUIRED -- medium identifier (name) --> <!ELEMENT medspc - - (mednam?, medmsg?, medprp?) -- medium specification --> <!-- mednam = envid(see base types above) medium name --> <!ELEMENT medmsg - - CDATA -- medium message (printable string)--> <!ELEMENT medprp - - ( medmsz? & medmclr? & medmwgt? & medmtyp? & medtooh? & medgran? & medpnch? & medmult? & medfedg? & medlbls? & addlprp* ) -- medium properties --> <!-- The list of Medium Properties Structure Elements: medmsz medium size medmclr medium color medmwgt medium weight medmtyp medium type medtooh medium tooth medgran medium grain medpnch medium pre-punch medmult medium multi-part medfedg medium finish edge medlbls medium labels addlprp additional properties --> <!-- medium size = xydimension(see useful types above) --> <!-- medmclr = envid(see base types above) medium color --> <!ELEMENT medmwgt - O EMPTY -- medium weight (any order) --> <!ATTLIST medmwgt value NUMBER #REQUIRED -- medium weight value (cardinal) -- tolrnce NUMBER #IMPLIED -- medium weight tolerance (cardinal) --> <!-- medmtyp = envid(see base types above) medium type --> <!-- medtooh = envid(see base types above) medium tooth --> <!-- medgran = envid(see base types above) medium grain --> <!ELEMENT medpnch - - (pnchdia? & pnchoff? & headloc?) -- medium pre-punch (any order) --> <!ATTLIST medpnch count NUMBER #REQUIRED -- punch count (cardinal) -- %edge; -- edge(see useful types above) --> <!-- punch diameter = dimensions(see useful types above) --> <!-- punch offset = dimensions(see useful types above) --> <!-- punch location = head locations(see useful types above) --> <!ELEMENT medmult - O EMPTY -- medium multi-part (any order) --> <!ATTLIST medmult seqnnum NUMBER #REQUIRED -- sequence number (cardinal) -- seqnlng NUMBER #REQUIRED -- sequence length (cardinal) --> <!ELEMENT medfedg - - (edgfnsh?) -- medium finished edge --> <!ATTLIST medfedg %edge; -- edge id(see useful types above) --> <!-- edgfnsh = envid(see base types above) edge finish type --> <!ELEMENT medlbls - O EMPTY -- medium labels --> <!ATTLIST medlbls percolm NUMBER #REQUIRED -- per column (cardinal) -- perrow NUMBER #REQUIRED -- per row (cardinal) --> <!ELEMENT addlprp - - (propnam, propval)-- additional properties--> <!-- propnam = pubobid(see base types above) property name --> <!ELEMENT propval - - ANY -- property value (type dependent on name) --> <!ELEMENT medsdpi - - (medslct)* -- medium select dpi --> <!ELEMENT medslct - - (medmid) -- medium selection --> <!ATTLIST medslct start NUMBER #REQUIRED -- start page = page identifier (positive integer) -- end NUMBER #REQUIRED -- end page = page identifier (positive integer) --> <!-- medmid = envid(see base types above) medium identifier --> <!ELEMENT cmeddpi - - CDATA -- current medium dpi (name) --> <!-- Presentation DPI --> <!ELEMENT copidpi - O EMPTY > <!ATTLIST copidpi copies NUMBER #REQUIRED -- copies dpi (cardinal) --> <!ELEMENT pagedpi - - (pagslct)+ -- page select dpi --> <!ELEMENT pagslct - O EMPTY -- page selection --> <!ATTLIST pagslct start NUMBER #REQUIRED -- start page = page identifier (positive integer) -- end NUMBER #REQUIRED -- end page = page identifier (positive integer) --> <!ELEMENT spagdpi - - (pagslct)+ -- supplementary page select dpi --> <!ELEMENT sidedpi - O EMPTY > <!ATTLIST sidedpi sides NUMBER #REQUIRED -- sides dpi (cardinal, shall be "1" or "2") --> <!-- plexdpi = pubobid(see base types above) plex dpi --> <!ELEMENT xshfdpi - O EMPTY > <!ATTLIST xshfdpi shift NMTOKEN #REQUIRED -- x-image shift dpi (number) --> <!ELEMENT yshfdpi - O EMPTY > <!ATTLIST yshfdpi shift NMTOKEN #REQUIRED -- y-image shift dpi (number) --> <!ELEMENT csiddpi - O EMPTY > <!ATTLIST csiddpi side NUMBER #REQUIRED -- current side dpi (cardinal, shall be "1" or "2") --> <!-- Finshing DPI --> <!-- Useful Finishing Types --> <!ELEMENT refredg - O EMPTY > <!ATTLIST refredg %edge; -- reference edge = edge --> <!ELEMENT jogedge - O EMPTY > <!ATTLIST jogedge %edge; -- jog edge = edge --> <!ENTITY % fnshspc "( fnshnam | fspclst )" -- finishing specification --> <!-- The list of finishing process specification structure elements stchspc stitching specification bindspc binding specification trimspc trimming specification diecspc die cutting specification pnchspc punching specification perfspc perforating specification slitspc slitting specification nsrtspc insert specification covrspc covers specification foldspc folding specification ofinspc other finishing specification --> <!ENTITY % stchspc "(stchnam | stchprm)" -- stitching specification --> <!ENTITY % bindspc "(bindnam | bindprm)" -- binding specification --> <!ENTITY % trimspc "(trimnam | trimprm)" -- triming specification --> <!ENTITY % diecspc "(diecnam | diecprm)" -- die cutting specification --> <!ENTITY % pnchspc "(pnchnam | pnchprm)" -- punching specification --> <!ENTITY % perfspc "(perfnam | perfprm)" -- perforating specification --> <!ENTITY % slitspc "(slitnam | slitprm)" -- slitting specification --> <!ENTITY % nsrtspc "(nsrtnam | nsrtprm)" -- insert specification --> <!ENTITY % covrspc "(covrnam | covrprm)" -- covers specification --> <!ENTITY % foldspc "(foldnam | foldprm)" -- folding specification --> <!ENTITY % fprcsp1 "( %stchspc; | %bindspc; | %trimspc; | %diecspc; )" -- finishing process specification, part 1 --> <!ENTITY % fprcsp2 "( %pnchspc; | %perfspc; | %slitspc; | %nsrtspc; | %covrspc; | %foldspc; | ofinspc )" -- finishing process specification, part 2 --> <!ELEMENT fnshdpi - - (fnshmsg?, %fnshspc;) -- finishing dpi --> <!ELEMENT fnshmsg - - CDATA -- finishing message (printable string) --> <!-- fnshnam = envid(see base types above) named finishing --> <!ELEMENT fspclst - - (%fprcsp1; | %fprcsp2;)+ -- finishing specification list --> <!-- stchnam = envid(see base types above) named stitching --> <!ELEMENT stchprm - - ( refrsz? & refredg? & jogedge? & procoff? & headloc? & stchtyp? ) -- stitching parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- procoff = dimension(see useful types above) --> <!-- headloc(see useful types above) --> <!-- stchtyp = envid(see base types above) stitch type --> <!-- bindnam = envid(see base types above) named binding --> <!ELEMENT bindprm - - ( refrsz? & refredg? & jogedge? & bindtyp? & bindclr?) -- binding parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- bindtyp = envid(see base types above) binding type --> <!-- bindclr = envid(see base types above) binding color --> <!-- trimnam = envid(see base types above) named trimming --> <!ELEMENT trimprm - - ( refrsz? & refredg? & jogedge? & trimoff & trimdim ) -- trimming parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- trimoff = dimension(see useful types above) --> <!-- trimdim = xydimensions(see useful types above) --> <!-- diecnam = envid(see base types above) named die cutting --> <!ELEMENT diecprm - - ( refrsz? & refredg? & jogedge? & diecpos & diecnm ) -- die cutting parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- diecpos = xydimension(see useful types above) --> <!-- diecnm = envid(see base types above) die cut name --> <!-- pnchnam = envid(see base types above) named punching --> <!ELEMENT pnchprm - - ( refrsz? & refredg? & jogedge? & procoff? & headloc? & pnchdia? ) -- punching parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- procoff = dimension(see useful types above) --> <!-- headloc(see useful types above) --> <!-- pnchdia = dimension(see useful types above) --> <!-- perfnam = envid(see base types above) named perforating --> <!ELEMENT perfprm - - ( refrsz? & refredg? & jogedge? & procoff & headloc & perftyp ) -- perforating parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- procoff = dimension(see useful types above) --> <!-- headloc(see useful types above) --> <!-- perftyp = envid(see base types above) perforation type --> <!-- slitnam = envid(see base types above) named slitting --> <!ELEMENT slitprm - - ( refrsz? & refredg? & jogedge? & headloc ) -- slitting parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- headloc(see useful types above) --> <!-- nsrtnam = envid(see base types above) named inserting --> <!ELEMENT nsrtprm - - ( refredg? & jogedge? & nsrtlst ) -- inserting parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- procoff = dimension(see useful types above) --> <!-- headloc(see useful types above) --> <!ELEMENT nsrtlst - - (nsrtsht)+ -- insert sheet list --> <!ENTITY % nsrtid "(nsrtnm | nsrtbin)" -- insert identifier --> <!ELEMENT nsrtsht - - (%nsrtid; & nsrtmsg?) -- insert sheet (any order) --> <!ATTLIST nsrtsht topsurf (top | bottom) #IMPLIED -- insert top surface (enumerated type) -- after NUMBER #REQUIRED -- insert after (cardinal) --> <!-- nsrtnm = envid(see base types above) insert name --> <!ELEMENT nsrtbin - O EMPTY > <!ATTLIST nsrtbin bin NUMBER #REQUIRED -- insert bin (cardinal) --> <!ELEMENT nsrtmsg - - CDATA -- insert message (printable string) --> <!-- covrnam = envid(see base types above) named covers --> <!ELEMENT covrprm - - ( refrsz? & refredg? & jogedge? & frntcvr? & backcvr?) -- covers parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!ELEMENT frntcvr - - (covrnm | medspc) -- frontcover --> <!ELEMENT backcvr - - (covrnm | medspc) -- back cover --> <!-- covrnm = envid(see base types above) cover name --> <!-- foldnam = envid(see base types above) med folding --> <!ELEMENT foldprm - - ( refrsz? & refredg? & jogedge? & headloc? ) -- folding parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- headloc(see useful types above) --> <!ELEMENT ofinspc - - (finopnm & finoprm?) -- other finishing specification (any order) --> <!-- finopnm = pubobid(see base types above) finishing op name --> <!ELEMENT finoprm - - (nfinprm?, sfinprm?) -- finishing op parameters --> <!-- nfinprm = envid(see types above) named finishing op parameters --> <!ELEMENT sfinprm - - ( refrsz? & refredg? & jogedge? & procoff? & headloc? & addlprm? ) -- stitching parameters (any order) --> <!-- refrsz = xydimension(see useful types above) --> <!-- procoff = dimension(see useful types above) --> <!-- headloc(see useful types above) --> <!ELEMENT addlprm - - ANY -- additional parameters (depends on finishing op name) --> <!-- Management Document Production Instructions --> <!ENTITY % colrspc "(colrsid | colrdsc)" -- colorant set specification --> <!ELEMENT colrdpi - - (colrmsg?, %colrspc;) -- colorant set dpi --> <!ELEMENT colrmsg - - CDATA -- colorant set message (printable string) --> <!-- colrsid = envid(see base types above) colorant set identifier --> <!ELEMENT colrdsc - - (colrcls, colrid+) -- colorant set description --> <!-- colrcls = pubobid(see above) colorant set class identifier --> <!-- colrid = envid(see base types above) colorant identifier --> <!ELEMENT dstrdpi - - CDATA -- document start message dpi (printable string) --> <!ELEMENT auxpdpi - - (strpage? & seppage? & endpage?) -- auxilliary page type dpi --> <!-- strpage = envid(see base types above) start page type --> <!-- seppage = envid(see base types above) separator page type --> <!-- endpage = envid(see base types above) end page type --> <!ELEMENT dcmtdpi - - CDATA -- document comment dpi (printable string) --> <!ELEMENT timedpi - O EMPTY> <!ATTLIST timedpi timeout NUMBER #REQUIRED -- timeout dpi (cardinal) --> <!-- abrtdpi = envid(see base types above) abort policy dpi --> <!ELEMENT outbdpi - - ((outbnam | outbnum)?) -- output bin dpi --> <!ATTLIST outbdpi outposn NUMBER #IMPLIED -- output positions (cardinal) --> <!-- outbnam = envid(see base types above) output bin name --> <!ELEMENT outbnum - O EMPTY> <!ATTLIST outbnum binnum NUMBER #REQUIRED -- output bin number (cardinal) --> <!ELEMENT ospcdpi - - (addlout*) -- output specification dpi --> <!ATTLIST ospcdpi collate %Boolean; #IMPLIED -- collated (boolean) -- -- he only allowed values are "true" or "false", in lowercase-- offset %Boolean; #IMPLIED -- offset (boolean) -- -- The only allowed values are "true" or "false", in lowercase-- burst %Boolean; #IMPLIED -- burst (boolean) -- -- The only allowed values are "true" or "false", in lowercase--> <!ELEMENT addlout - - (ospcnm,ospcvl?) -- additional output --> <!-- ospcnm = pubobid(see types above) output specification name --> <!ELEMENT ospcvl - - ANY -- output specification value --> <!--output specification value depends on output specification name --> <!ELEMENT denddpi - - CDATA -- document end message dpi (printable string) -->

    Clear Text Content Representation and Interchange Format

    The SPDL content consists of sequences of tokens. Each token represents a unit of information which is processed by the content processor. This clause specifies the clear text encoding of the tokens in SPDL content.

    Token structure and delimiters

    Each token is encoded by a sequence of one or more ISO 646-encoded octets, hereafter referred to as characters. The sequence of characters encoding each token is terminated by some delimiter. The white space characters Null, Tab, Line Feed, Form Feed, Carriage Return, or Space are delimiters except when they occur within Strings, DataBlocks and, in the case of space, within Comments. The encoding for the token that follows a white space delimiter begins with the first following character that is not a white space character. The characters (, ), <, >, [, ], {, }, /, and % are special. The characters (, <, and / delimit the encoding of the preceding token and begin the encoding of a new token. The characters [, ], {, }, and the character sequences << and >> are self delimiting tokens; they terminate the encoding of any preceding token, they are the encoding of a token themselves, and the encoding of the following token begins with the first following character that is not a whitespace character. The character ) terminates the encoding of a token begun with the character ( and the encoding of the following token begins with the first following character that is not a white space character. Except when it occurs in the self delimiting token >>, the character > terminates the encoding of a token begun with the character < and the encoding of the following token begins with the first following character that is not a white space character.

    Any occurrence of the character % outside an OctetString, DataBlock, or DataBlockContinuation token introduces a Comment. The comment consists of all characters between the % and the next Carriage Return, Line Feed, or Form Feed character. The % character and the comment it delimits are together treated as one white space character.

    Token types

    There are two types of tokens in the clear text encoding of content: base tokens and composite tokens.

    Base tokens do not contain other tokens. The processing of the characters in the SPDL content produces base tokens. Examples of base tokens include those for OctetStrings, Integers, and Names.

    A composite token is a token constructed from a sequence of base and/or other composite tokens. When a composite token is encountered in content, the parser processes each of the contained tokens as it is encountered, then processes the containing composite token. The only composite tokens in the clear text encoding of content are those for Procedures.

    Encodings for content object types

    The following subclauses detail the clear text encoding for each of the SPDL object types. The encoding for objects of type Operator is described in .

    Boolean

    There is no representation for the type Boolean in the Clear Text Content Representation and Interchange Format. Objects of type Boolean may be created in content via execution of the operators True and False.

    Dictionary

    There is no representation for the type Dictionary in the Clear Text Content Representation and Interchange Format. Objects of type Dictionary may be created in content via execution of the MakeDictionary or MakeandStoreDictionary operators.

    The self-delimiting operator tokens << and >> (representing Mark and MakeandStoreDictionary, respectively; see ) may be used to clearly demark the creation of a Dictionary in content:

  • <<token token ... token >>

    Integer

    There are two representations for Integers in the Clear Text Content Representation and Interchange Format. One representation consists of an optional sign followed immediately by one or more decimal digits. The number is interpreted as a signed decimal integer and converted to an SPDL Integer object.

    An alternate representation takes the form base#number where base is a decimal integer between 2 and 36, and number is then interpreted in that base; it must consist of digits in the range 0 to base-1, inclusive. Digits greater than 9 are represented by the characters A through Z (or a through z). The number is treated as an unsigned integer in the given base and is converted to an SPDL Integer object.

    If the number represented in either representation exceeds the implementation-dependent limit for the size of an Integer, it is converted to an SPDL Real object before being pushed on the operand stack.

    Mark

    There is no representation for the type Mark in the Clear Text Content Representation and Interchange Format. Objects of type Mark may be created in content via execution of the operator Mark.

    Name

    There are two representations for objects of type Name: one for executable Names and one for literal Names..

    Executable Name

    The representation for an executable Name consists of a character from the latin alphabet: "a", "b", "c", . . . , "z"; "A", "B", "C", . . . , "Z"; or a period ".". Each succeeding character in the sequence may be chosen from the latin alphabet letters, decimal digits "0", "1", "2", . . . , "9", the underbar "_", the ":", or the period ".".

    Literal Name

    The representation for a literal Name consists of the character /, followed immediately by a character from the latin alphabet: "a", "b", "c", . . . , "z"; "A", "B", "C", . . . , "Z"; or a period ".". Each succeeding character in the sequence may be chosen from the latin alphabet letters, decimal digits "0", "1", "2", . . . , "9", the underbar "_", the ":", or the period ".".

    Null

    There is no representation for the type Null in the Clear Text Content Representation and Interchange Format. Objects of type Null may be created in content via execution of the operator Null.

    OctetString

    There are three representations for an OctetString: a Character String, a Hexadecimal encoded String and an ASCII85 encoded String.

    Character String

    An OctetString may be represented in the form

    (xyz)

    where xyz represents a sequence of characters that represent zero or more octets. Unless preceded by the character \, each character between the parentheses represents the octet which is the ISO 646 coding of that character. The OctetString shall be delimited solely by the surrounding parentheses; white space characters occuring in the OctetString are treated as characters, not as delimiters. Balanced parentheses () with zero or more included octets may appear in the OctetString token; both parentheses and the characters between them are treated as characters and not as a embedded OctetString.

    The \ character is an escape character that may be used to quote unbalanced parentheses, non-printing characters, and the \ character itself. The character immediately following the \ determines its interpretation:

  • \r Carriage Return
  • \t Horizontal Tab
  • \b BackSpace
  • \f Form Feed
  • \\ \
  • \( (
  • \) )
  • \ddd Arbitrary Octet

    If the character following the \ is not in the preceding list, the \ is ignored and the character following the \ is interpreted normally. In the \ddd form, each of the d's shall be an octal digit and the first d shall be 3 or less. The \ddd form is interpreted as the single octet whose value in octal is ddd. This form may be used to include an arbitrary octet in the OctetString.

    Hexadecimal encoded String

    An OctetString may be represented in the form

    <xyz>

    where xyz represents a sequence of zero or more hexadecimal digits, the characters 0-9 and A-F or a-f, each pair of which represents one octet in the OctetString. If there is an odd number of hexadecimal digits, a final 0 digit is assumed as the second hexidecimal digit of the last octet. White space characters occuring in the Hexadecimal encoded String are ignored and are not treated as delimiters. If the Hexadecimal encoded String is malformed, then RaiseError is invoked with SyntaxError as its operand.

    ASCII85 encoded String

    An OctetString may be represented in the form

    < xyz >

    where xyz represents a sequence of zero or more ASCII85 encoded octets (see ) in which the sub-sequence , the ISO 8879 ETAGO in the Reference Syntax, shall not occur. If an ASCII85 encoding of an OctetString would have occurances of the sub-sequence , these shall be eliminated by inserting a blank character between the < and the /. If the ASCII85 encoded String is malformed, then RaiseError is invoked with SyntaxError as its operand.

    Path

    There is no representation for Paths in the Clear Text Content Representation and Interchange Format. Paths may be created in content via execution of the path construction operators described in clause 29.

    Real

    The representation of a Real in the Clear Text Content Representation and Interchange Format takes the form of an optional sign, followed immediately by a sequence of one or more decimal digits with an embedded or leading full stop (decimal point), a trailing exponent, or both. The exponent, if present, consists of the character E or e, followed immediately by an optional sign, followed immediately by one or more decimal digits. This decimal value is converted to a binary value as specified in IEEE 754-1987. If the Real is outside the range of Reals representable within the imiplementation, then RaiseError is invoked with LimitCheck as its operand.

    SaveObjects

    There is no representation for SaveObjects in the Clear Text Content Representation and Interchange Format. SaveObjects may be created in content via execution of the SaveState operator.

    StreamObject

    There is no representation for objects of the type StreamObject in the Clear Text Content Representation and Interchange Format. Objects of type StreamObject may be created in content via execution of the Filter operator or the FindResource operator.

    Vector

    There is a representation for objects of type Vector which have an executable object reference; such object references are of type Procedure. There is no representation for objects of type Vector which have a literal object reference.

    Vector with a literal object reference

    Objects of type Vector which have a literal object reference may be created in content via execution of the MakeVector or MakeandStoreVector operators.

    The self-delimiting operator tokens [ and ] (representing Mark and MakeandStoreVector, respectively; see ) may be used to clearly demark the creation of a literal Vector in content:

  • [ token token ... token ]
    Procedure (executable VectorReference)

    The Procedure token is a composite token. The representation for a Procedure, or executable VectorReference, of length N in the Clear Text Content Representation and Interchange Format takes the form

  • {token1 token2 ... tokenN} where token I is decoded to produce a simple value or object reference that becomes element I of the executable Vector. Token execution is suspended during the processing of the whole composite token. Each token, token1 ... tokenN, may be either a base token or a composite token. Composite tokens result from processing Procedure tokens that are embedded in the sequence of characters between the matching { and } delimiters. Procedure tokens can be nested within Procedure tokens to arbitrary depth.

    Operators

    With the exception of the self-delimiting tokens [, ], <<, and >>, there is no representation for objects of type Operator in the clear text encoding. Operator objects are bound to Names in SystemDict, and may be accessed in content via their Names. lists each SPDL operator and the Name (and, if applicable, the self-delimiting token) by which it may be accessed in the clear text encoding.

    In-line Raster Graphic Image Data Tokens

    There is a token type used to encode raster graphic image Data Sources inline in clear text documents. The use of this token type is discussed in .

    DataBlock Token

    A DataBlock token is represented in the form

  • <|xyz|> where xyz represents a sequence of zero or more ASCII85-encoded octets (see ) in which the sub-sequence , the ISO 8879 ETAGO in the Reference Syntax, shall not occur. If an ASCII85 encoding of a Data Source would have occurances of the sub-sequence , these shall be eliminated by inserting a blank character between the < and the /. If the ASCII85 encoded String is malformed, then RaiseError is invoked with SyntaxError as its operand. There is no limit on the length of a DataBlock.