Print

Print


Arjan Loeffen writes:
 
>In my asumption, a TEI 'engine', or 'browser' for that
>matter, would have to be able to process milestones, implement the
>extended pointer syntax, check for valid attribute values, understand
>%inherited, be able to check and implement the directions recorded in
>the WSD, and represent elements such as <expan> well. Can anyone tell
>me if this is covered in the DynaText browser? Which browser, if
>not DynaText, does all this for us?
 
The Synex ViewPort engine (used to implement SoftQuad Panorama)
supports a subset of the extended pointer syntax as described
by the grammar below. The links are interpreted directly from the
markup, without any additional scripting, as you read the SGML file.
 
I am not convinced of the benefits of a validating browser (though
our software makes a number of sanity checks); by the time a document
is browsed, it ought to have passed through an authoring and validating
stage, so why pay a performance penalty for full validation each and
every time you open and parse the document?
 
 
Hasse Haitto
Synex Information AB
http://www.synex.se/
 
                                 *
 
 
Supported extended pointer syntax in Synex ViewPort/SoftQuad Panorama
=====================================================================
 
ladder  :- locterm ladder*
 
locterm :- 'ROOT'                        // default first location
        |  'HERE'                        // location of the xptr
        |  'ID' '(' NAME ')'             // only one ID allowed.
        |  'CHILD' steps
        |  'DESCENDANT' steps
        |  'ANCESTOR' steps
        |  'PREVIOUS' steps
        |  'NEXT' steps
        |  'PRECEDING' steps
        |  'FOLLOWING' steps
        |  'DITTO'                       // valid only in TO att.
 
steps     :-  '(' step ')' steps*
 
step      :-  instance [ element [ avspecs ] ]
 
avspecs   :-  attribute value avspecs*
 
instance  :-  [ '+' | '-' ] NUMBER // default sign is +
 
element   :-  NAME                 // Element name
          |   '#CDATA'             // Pseudo elements
          |   '*'                  // Any element matches
 
attribute :- NAME                  // Attribute name
          |   '*'                  // Any attribute matches
 
value     :- LITERAL               // Quoted string
          |  NAME                  // Name characters
          |  NUMBER                // Numbers
          |  NUMTOKEN              // Numbers or name characters
          |  '#IMPLIED'            // No value specified, no default
          |  '*'                   // Any value matches