Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
transpec(file format)					   transpec(file format)

Name
     transpec - translation specification for instant

Synopsis
     file.ts

Description
     The transpec file is used by the instant program to translate an SGML docu-
     ment  instance to a format suitable for a formatting application.	The con-
     vention is to name the file with the suffix .ts.

     A transpec file is composed of a number of  individual  translation  specs.
     Each  translation spec (transpec) is made up of a number of fields, one per
     line.  Translation specs are separated by a line with a leading dash.  Text
     after the dash is ignored.  Fields are composed of two parts, a name and  a
     value,  separated	by a colon.  The colon must immediately follow the name,
     and any amount of whitespace (blanks and tabs) may be present  between  the
     colon and value.  Values should not be quoted, and you should be careful of
     trailing  spaces.	 (Trailing  space will be considered part of the value.)
     Quotes, if they appear, will be considered part of the value of the fields.
     Lines that begin with whitespace (blanks and tabs) are  a	continuation  of
     the previous line; the leading space is ignored.  These characteristics are
     very  similar to those of e-mail headers.	Lines beginning with a # (number
     sign) are comments and blank lines are ignored.

Field Descriptions
     Some fields are for identifying criteria that determines  if  a  particular
     spec  matches an element in the instance.	Others specify what action is to
     take place when a match happens, such as sending text to the output stream.

   Criteria fields
     Criteria fields restrict the conditions under which  a  single  translation
     spec  will apply.	If each field specified in a particular transpec matches
     an element under consideration in the document instance, then that transla-
     tion spec is said to match. The appropriate actions, as specified	in  that
     spec, are then taken.  The program, instant, searches the list of transpecs
     in  the  order  given  in	the file.  Therefore, the more restrictive specs
     (those with more criteria) should appear before less restrictive ones.

     For quick reference, this is a  brief  summary  of  the  possible	criteria
     fields for translation. A complete discussion of each follows.

     Field Label   Field Value	      Description
     GI 	   gi ...	      name of this GI
     AttValue	   attname reg-expr   current element has attribute with value
     Content	   reg-expr	      is reg-expr in char content>
     Context	   context	      element context, up the tree
     NthChild	   number	      current element is Nth child of its parent
     PAttSet	   attname (val)      parent has this attribute set (optional to value val)
     Relation	   relationship gi    gi has relationship to current element
     VarREValue    var REvalue	      variable is set to regular expression value
     VarValue	   var value	      variable is set to value

     GI: gi [...]
	    gi	is  the name of the generic identifier, or element name, to con-
	    sider.  More than one GI may appear in this field.

     AttValue: attname regular-expression
	    This is an attribute name-value pair, where attname is an  attribute
	    if	the  GI.   The regular-expression is of the form accepted by the
	    unix program egrep.  This pair is compared to the corresponding  at-
	    tribute  name-value  pairs of the GI under consideration.  To simply
	    test if an attribute us set, use . (a dot)	for  regular-expression.
	    There may be more than one of these lines for each transpec.

     Content: regular-expression
	    This  specifies  that  the character content of GI contains a string
	    matching the regular-expression.

     Context: context
	    This specifies the context in which to apply this translation  spec.
	    It	is  either a list of generic identifiers or a regular expression
	    describing a list of generic identifiers, looking up the  hierarchy.
	    The first is the parent of the GI.

     NthChild: number
	    This specifies that the GI is the numberth child element of its par-
	    ent.   Children  are numbered starting with 1.  Negative numbers may
	    be used to indicate order counting backwards.  For example,  -1  de-
	    notes the last child.

     PAttSet: attname
	    This  specifies  that the parent has this attribute, attname, set to
	    any value (not IMPLIED).  A value to match may optionally be  speci-
	    fied after attname.

     Relation: relationship gi
	    This  specifies that the current element has the relationship to the
	    named gi.  The acceptable relationships are: ancestor  (anywhere  up
	    the  tree),  child	(immediate child), descendant (anywhere down the
	    tree), parent (immediate ancestor), sibling (share same parent  ele-
	    ment), sibling+ (any later sibling), sibling+1 (the immediately fol-
	    lowing  sibling), sibling- (any earlier sibling), sibling-1 (the im-
	    mediately following sibling).

     VarREValue: varname REvalue
	    This specifies that  the  global  variable	varname  has  the  value
	    REvalue,  where  REvalue  is  a regular expression (see the VarValue
	    statement).

     VarValue: varname value
	    This specifies that the global variable varname  has  the  (literal)
	    value value (see the VarREValue statement).

     There  are two special GIs.  If specified, _Start and _End are processed as
     if they were GIs in the instance at the start and end of  the  translation,
     respectively.   Their  criteria  are never checked.  Only their actions are
     performed.

   Action fields
     For quick reference, this is a brief  summary  of	the  action  fields  for
     translation.  They are only performed if all the criteria are satisfied.  A
     complete discussion of each follows.

     Field Label   Field Value	 Description
     Action	   spec-id	 use transpec whose spec ID is `spec-id'
     EndText	   text 	 text for end of element
     Increment	   name 	 increment variable `name'
     Ignore	   key		 flag for ignoring element's children and/or data
     Message	   text 	 text to send to stderr
     Quit	   text 	 print text and quit program
     Replace	   text 	 replace this subtree with text
     Set	   name value	 set variable name to value
     SpecID	   spec-id	 unique Spec ID (int) of this spec
     StartText	   text 	 text for start of element

     Action: spec-id
	    Use the actions of the spec identified by the SpecID  with	matching
	    identifier spec-id.

     EndText: text
	    This specifies text to be output when the end tag is processed.

     Ignore: key
	    This  specifies that the data or children for this element are to be
	    ignored.  Set key to all to ignore the element (data and child  ele-
	    ments),  to  data  to  ignore  the	immediate character data content
	    (child elements are  still	descended  into),  and	to  children  to
	    process  the immediate character data content but not descended into
	    child elements.  Other actions specified in this transpec are  still
	    performed, however.

     Increment: name
	    This  is  used  to increment a variable whose value is a number.  If
	    the variable is not a number, no action will be taken.  The variable
	    must have been previously defined.	This action is done  immediately
	    before  EndText.  There may be more than one of these lines for each
	    transpec.

     Message: text
	    This specifies a string to be printed to the standard error when the
	    matching element is processed.  It is  intended  for  informing  the
	    user  of the progress of the translation.  It is also used for vali-
	    dation of instances (see the -v flag of instant(1)); a spec would be
	    written to recognize a construct that is not allowed.   This  action
	    is	done  immediately after StartText.  Messages are also useful for
	    debugging spec files; one is able to easily  tell  when  a	matching
	    spec  is  processed,  without  looking  at	the actual output of the
	    translation.  Note that the spec writer is responsible  for  putting
	    newlines (\n) in the message text.

     Replace: text
	    This  specifies  text  to replace the current subtree with.  This is
	    equivalent to StartText and Ignore.

     Quit: text
	    This specifies text to be printed to the standard error.   The  pro-
	    gram then terminates with exit status 1.  This is intended for bail-
	    ing out when an undesirable instance is encountered (such as when it
	    is known that the formatting application can never handle a class of
	    components, like tables).

     Set: name value
	    This  is  used  to	set  a	variable whose name is name and value is
	    value.  Names that would be valid for GIs in the  document	instance
	    are valid for variable names.  value is the rest of the line and may
	    be	any  string.	This  action is done immediately before EndText.
	    There may be more than one of these lines for  each  transpec.   See
	    the discussion on variables below.

     SpecID: spec-id
	    This  names  the spec with the number spec-id. Other specs may refer
	    to this one by this number by an Action field or an _action  special
	    variable.  This is used for cases where several specs to perform the
	    exact same action.

     StartText: text
	    This specifies text to be output when the start tag is processed.

   Other Fields
     These  fields  may appear anywhere.  The action occurs when the translation
     spec file is read, before any elements are translated.  Theses are indepen-
     dent of any element processing.

     Var: name value
	    This is used to define a variable whose name is name  and  value  is
	    value.   It is similar to Set, but it may occur anywhere in the file
	    and takes effect when the spec file is read.

   Text Strings
     The text referred to in the StartText, EndText, Replace,  and  Message  ac-
     tions  is more than simple character strings.  Special sequences allow more
     complex output.

     One type of special sequence is for C-style string processing.   Most  spe-
     cial  characters  are escaped with a \ (backslash). Like in C or shell pro-
     grams, to print a \ (backslash), you must escape it with another backslash.
     These special character strings are:

     \n (backslash-n)
	    This specifies that a newline character is to be printed to the out-
	    put stream.

     \r (backslash-r)
	    This specifies that a carriage return character is to be printed  to
	    the output stream.

     \t (backslash-t)
	    This  specifies  that a tab character is to be printed to the output
	    stream.

     \s (backslash-s)
	    This specifies that a space is to be printed to the  output  stream.
	    This  is useful for the end of a transpec line, where it can be dif-
	    ficult to tell if a blank is present at the end.

     \007 (backslash-007)
	    This specifies that the character whose octal value is 007 is to  be
	    printed  to  the  output stream.  This works for any octal character
	    value.

     ^ (caret)
	    This specifies the that position in the string will be at the  start
	    of a line in the output stream.

     If the first token of the text string is #include, then the second token is
     taken  to	be  a  file  name and that file is included.  If the file is not
     found, the library directory, as mentioned above, is searched.  If the text
     string starts with a ! (exclamation point), the rest of the line  is  taken
     to be a command and the output of that command is inserted.

     An  element's attributes may also be used in the text of output fields.  To
     use an attribute value, precede its name with a ${ (dollar sign-left  curly
     bracket) and follow it with a } (right curly bracket).  (This style is fol-
     lowed by the Bourne shell.)  For example, ${TYPE}.  If the attribute is not
     set  (not IMPLIED), nothing will be printed to the output stream.	To spec-
     ify a value to use if the attribute is not set, place the value  after  the
     attribute	name,  separated  by  a space.	To return the attribute value in
     lower-case, add a colon followed by lower-case l (${TYPE:l}.

Variables
     Variables in instant are similar to those	in  many  other  string-oriented
     programming  languages,  such  as	sh  and awk.  They are set by: Var: name
     value and Set: name value.  Values may be set and reset to any string.   In
     a Var line, if the value begins with a !, then the rest of the line is exe-
     cuted as a command, and its output is taken as the value.

     A	reference to the value of a variable follows the same syntax as a refer-
     ence to the value of an attribute:  ${name}.  If that variable has not been
     defined, a null value will be returned.  A default value  can  be	returned
     instead  of  null	for an undefined variable by using the form:  ${name de-
     fault}.

     Variables may be used as attributes are, that is in any of the text strings
     mentioned above.  In fact, if an attribute name is referred to  and  it  is
     not  set  for  a  given element, instant looks for a variable with the same
     name.  This way global defaults can be set.  If you want to  be  sure  that
     you  are  accessing a local variable value, not an attribute value, you can
     use lower or mixed case names.  Attribute names, as passed by sgmls, are in
     upper case.

     Any number of Var actions may appear in the spec file.  These set the  val-
     ues  of  the variables before any translation takes place.  The Set actions
     within transpecs are performed when that spec is processed when an  element
     matches the given criteria.

   Preset Variables
     Several  variables  are preset by instant upon start of the program.  Their
     values may be overridden in transpec files or on the command line.

     date   This is the date and time that the program started. The  format  is:
	    Tue 10 Aug 1993, 16:52.

     host   This  is  the name of the host where the program is run.  It is what
	    is returned by the gethostname library call.

     transpec
	    This is the translation spec filename.

     user   This is the login name of the user running the program.

   Special Variables
     There is a collection of special variables called special variables.  These
     are identified by starting the names with a _ (underscore).  This is a sum-
     mary of the special variables.  A complete discussion of each special vari-
     able follows.  spec-id refers to a number	specified  in  a  SpecID  field.
     When  used  in  a	special variable, it means to perform the action in that
     translation spec.

     Note that when a spec-id is given in a special variable, the default is  to
     perform  the translation spec named by the spec-id ignoring of any criteria
     statements found there.  For most special variables  that	use  a	spec-id,
     postpending a "t" to the spec-id (with no spaces between them, eg, "${_fol-
     lowrel  child TITLE 15t}"), will cause the criteria statements in the named
     translation spec to evaluate successfully before that translation spec will
     be processed.

     Variable Usage			   Description
     _action spec-id			   do spec with id spec-id
     _allatts				   print all attribute/value pairs
     _attval att [value] spec-id	   use spec-id if attribute matches
     _chasetogi gi spec-id		   follow IDREFs until gi found
     _eachatt att spec-id [spec-id]	   do spec-id for each word of attribute value
     _eachcon spec-id [spec-id] 	   do spec-id for each word of content
     _env env-variable			   return value of env variable
     _filename				   filename of notation
     _find rel gi spec-id		   find gi based on relationship
     _followlink [attname] spec-id	   follow IDREFs [attname] and use spec-id
     _followrel rel gi spec-id [spec-id]   do spec-id on rel if it matches
     _gi [M|L|U]			   return GI name; M, L, U case
     _id id [spec-id]			   find element with ID and use spec-id
     _include filename			   insert file here
     _infile [line]			   instance filename [and line number]
     _insertnode S|E spec-id		   do spec-id when element is traversed
     _isset var [value] spec-id 	   do spec-id if variable matches
     _location				   print location of current element
     _namelist spec-id [spec-id]	   content is namelist, do spec-id for each
     _nchild [gi]			   number of child elements [named attname]
     _osftable format [flag]		   print table format specification
     _path				   print path to current element
     _pattr attname			   value of parent's attribute
     _pfind args ...			   same as _find, but start at parent
     _relation rel gi spec-id [spec-id]    do spec-id if relation matches
     _set var value			   set variable to value
     _!command				   command to run

     _action spec-id
	    Use the actions of the spec identified by the SpecID  with	matching
	    identifier	spec-id.   This  behaves similarly to the Action action,
	    but is in addition to the present translation spec.

     _allatts
	    Print all attribute name-value pairs of the current element  to  the
	    output  stream.   The  name  and  value are separated by a = (equals
	    sign), and the value is surrounded by quotes.  This  can  be  useful
	    for creating a normalized version of the instance.

     _attval attname [value] spec-id
	    If	the  current  element has an attribute named attname, optionally
	    whose value matches value, use the actions of the  transpec  identi-
	    fied by spec-id.

     _chasetogi gi spec-id
	    Follow  IDREF attributes until if finds an element whose GI is gi or
	    which has a child element with that GI.  It will apply the	transpec
	    spec-id to that element.  By default, instant assumes the attributes
	    named  LINKEND,  LINKENDS,	and  IDREF  are of type IDREF or IDREFS.
	    (This corresponds with the OSF DTDs.)  You can change this	by  set-
	    ting  the  variable link_atts to a space-separated list of attribute
	    names.

     _eachatt att spec-id [spec-id2]
	    The transpec named by spec-id is invoked once per each word found in
	    the value of the attribute att.  Inside  the  target  transpec,  the
	    current  word  being  processed  is  available in the variable named
	    each_A (${each_A}).  If spec-id2 is specified, it will  use  spec-id
	    for the first word in the attribute and spec-id2 for the others.

     _eachcon spec-id [spec-id2]
	    The transpec named by spec-id is invoked once per each word found in
	    the content of the current element.  Inside the target transpec, the
	    current  word  being  processed  is  available in the variable named
	    each_C (${each_C}).  If spec-id2 is specified, it will  use  spec-id
	    for the first word in the content and spec-id2 for the others.

     _env env-variable
	    Print the value of the environment variable env-variable to the out-
	    put stream.

     _filename
	    Print  the filename of the notation associated with this element, if
	    any.  This is used to get the filename of an external  notation  en-
	    tity  reference.   For  example,  to print the filename in the latex
	    macro from the epsf macro package, use \\epsfboxi{${_filename}}.

     _find [top] relationship args ... spec-id
	    Descend the document hierarchy finding elements that  match  one  of
	    several  criteria.	When one is found, the action specified by spec-
	    id is performed.  If top is specified, the search starts at the  top
	    of	the document hierarchy, rather than at the current element.  The
	    possible values for relationship  are  gi,	gi-parent,  parent,  and
	    attr,  and	take different arguments.  Explanations may be best done
	    by example: _find gi CHAPTER 123 means to find elements whose GI  is
	    CHAPTER,  and  perform action 123; _find gi-parent TITLE CHAPTER 124
	    means to find elements whose GI is TITLE and whose parent  is  CHAP-
	    TER, and perform action 124; _find parent BODY 125 means to find el-
	    ements whose parent's GI is BODY, and perform action 125; _find attr
	    TYPE  UGLY	125 means to find elements whose attribute named TYPE is
	    set to UGLY, and perform action 126.

     _followlink [attname] spec-id
	    When processing an element, instant will follow the IDREF attributes
	    until an element with no IDREF attributes is found.   It  will  then
	    apply  the transpec specified by spec-id to that element.  If speci-
	    fied, it will follow the link pointed to by  attname.   By	default,
	    instant  assumes  the  attributes  named LINKEND and LINKENDS are if
	    type IDREF or IDREFS.  You can change this by setting  the	variable
	    link_atts to a space-separated list of attribute names.

     _followrel relationship gi spec-id [spec-id2]
	    If	the  gi  has  the specified relationship to the current element,
	    perform the action specified by spec-id on the related element.   If
	    the relationship to gi does not exist, and spec-id2 is present, per-
	    form  spec-id2  on	the  current element.  See the discussion of the
	    criteria field Relation for acceptable relationship names.

     _gi [M|L|U]
	    Print the name of the current GI to the output  stream.   If  speci-
	    fied, M, L, or U will ensure the GI name is printed in mixed, lower,
	    or upper case, respectively.

     _id id [spec-id]
	    Find  the  element with id and use spec-id, if set.  If not set, use
	    the spec for that element's context.

     _include filename
	    Insert the file filename into the output stream.

     _infile [line]
	    Print the name of the sgml instance file to the  output  stream.  If
	    line  is  specified,  also	print  the line number.  This depends on
	    sgmls being called with the -l option.

     _insertnode S|E spec-id
	    Do spec-id when the current element is traversed at  a  later  pass.
	    This  can  be considered inserting a node, without content, into the
	    hierarchy.	This is only useful if done to elements before they  are
	    processed.	 Typically  _chasetogi or _followlink is specified early
	    in an instance's processing, so that when the elements found by  one
	    of	these actions are processed in their turn, the added actions are
	    performed.	_insertnode would be specified as the action of a  spec-
	    id pointed to in a _chasetogi or _followlink usage.

     _location
	    The  location of the current element is printed to the output stream
	    in several ways: the path to the element  (see  _path),  a	position
	    hint, which is the nearest title, the line number, if the ESIS (out-
	    put from sgmls) contains line numbers, and the ID of the element, if
	    it has one.  This is especially useful when using the Message action
	    to validate an instance.

     _namelist spec-id [spec-id2]
	    This  assumes  that the content of the current element is a namelist
	    (a list of element IDs), and applies the action based on spec-id for
	    each element pointed to.  If spec-id2  is  specified,  it  will  use
	    spec-id  for  the first ID in the namelist and spec-id2 for the oth-
	    ers.

     _nchild [gi]
	    Print the number of child elements of  the	element  to  the  output
	    stream.   If gi is specified, print the number of child element with
	    that name.

     _osftable tex|tbl|check [flag]
	    Print table markup into the output stream.	The  format  depends  on
	    whether  tex or tbl is specified.  The flag may be one of cellstart,
	    cellend, rowstart, rowend, top, or	bottom.   The  value  determines
	    what  markup  or text will be generated.  If cellstart is specified,
	    the correct markup for the beginning of a cell is output.	If  top,
	    bottom,  or  rowend are specified, the correct markup for the end of
	    the appropriate position is printed to the output stream.  If  check
	    is	specified, the attributes and child elements are checked for er-
	    rors and consistency.

     _path  Print the path to current GI to the output stream.	A path	is  each
	    element,  going down the tree from the topmost element.  A number in
	    parentheses after each element name shows which  child  element  the
	    next  one  is  in  the order of children for that element.	Ordering
	    starts at 0.  For example: OSF-BOOK(3) BODY(0)  CHAPTER(4)	SECTION.
	    This says the path is <OSF-BOOK>'s third child, <BODY>'s zeroth, and
	    <CHAPTER>'s fourth, which is named <SECTION>.

     _pattr name
	    Print the value of parent's attribute whose name is name to the out-
	    put stream.

     _pfind rel gi spec-id
	    This  is  exactly the same as _find except that the search starts at
	    the current element's parent.

     _relation relationship gi spec-id [spec-id2]
	    If the gi has the specified relationship  to  the  current	element,
	    perform  the action specified by spec-id on the current element.  If
	    the relationship test fails and spec-id2 is specified, perform  that
	    action.   See  the discussion of the criteria field Relation for ac-
	    ceptable relationship names.

     _set varname value
	    Set the value of the variable varname to value.

     _isset varname [value] spec-id
	    If the value of the variable varname is set to value,  then  perform
	    action  referred  to  by spec-id.  If value is not specified, action
	    will be performed if varname is set to any value.

     _! command
	    Run the command command, directing its standard output into the out-
	    put stream.

   Immediate Variables
     Immediate variables are like special variables, except that  they	are  ex-
     panded  when  the	transpec  is originally processed (special variables are
     processed later, near when the final output is being generated).  The  gen-
     eral syntax of immediate variables is ${+immediate_variable ...}.

     There is currently only one immediate variable defined:

     +content
	    This special variable is replaced by the data content of the current
	    element.

Examples
     The following will output the given string for elements whose generic iden-
     tifier  is P (for paragraph).  At the start of processing this element, the
     program ensures that the output starts on a new line, the troff macro  <.P>
     is output, then a newline.  At the end of this element processing, the pro-
     gram ensures that the output starts on a new line.
     GI:	     P
     StartText:      ^.P^
     EndText:	     ^
     -

     The following will output the given string for elements whose generic iden-
     tifier  is  CMD-ARGUMENT  and  which  have an attribute PRESENCE set to the
     value OPTIONAL.
     GI:	     CMD-ARGUMENT
     AttValue:	     PRESENCE OPTIONAL
     StartText:      $\\[
     EndText:	     $\\]
     -

     The following prints the section number, title, and page number of the tar-
     get of a cross reference.	Assume the cross reference points to  a  section
     element,  which  contains	a  title element.  The criteria for this spec to
     match is that the attribute OSFROLE is set to the value getfull.	The  ac-
     tion is to replace the content of the <XREF> element with the given string.
     When  processing  the  string,  instant will follow the IDREF attributes of
     <XREF> until an element with no IDREF attributes is found. It will then ap-
     ply the transpec numbered 87 to that element, which will print the name  of
     the  GI in mixed case into the output stream.  It will then print the LaTeX
     reference instruction with the value of the LINKEND attribute as  an  argu-
     ment.  (This will become the section number after processing by LaTeX.)  It
     will  then  follow  IDREFs  until	if finds an element whose GI is TITLE or
     which has a child element with that GI.  It will apply  the  transpec  num-
     bered  1  to  that  element,  which copies the title into the output stream
     where the cross reference occurs.	Finally, it will  print  the  word  page
     followed by the LaTeX instruction to obtain the page number of a reference.
     GI:	     XREF
     AttValue:	     OSFROLE getfull
     Replace:	     ${_followlink 87} \\ref{${LINKEND}},\s
		     {\\bf ${_chasetogi TITLE 1}}, page \\pageref{${LINKEND}}
     -
     # Print GI name, in mixed case
     GI:	     _pr_gi_name
     SpecID:	     87
     Ignore:	     1
     EndText:	     ${_gi M}
     -
     GI:	     _pass-text
     SpecID:	     1
     -

Related Information
     instant(1), sgmls(1), egrep(1).

							   transpec(file format)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=transpec&sektion=5&manpath=FreeBSD+Ports+15.1.quarterly>

home | help