A large subset of the TEI recommendations for extended pointers has been implemented in the Synex Viewport engine, and is consequently available to applications of this engine, such as Softquad's Panorama and Panorama Pro.
Here is the formal specification for the subset implemented by Synex. Note that the ten keywords given here in upper case can in fact be specified in upper or lower case, or a mixture:
locterm ::= 'ROOT' // default first rung | 'HERE' // location of the xptr. | 'ID' '(' NAME ')' // only one ID is allowed. | 'CHILD' steps | 'ANCESTOR' steps | 'PREVIOUS' steps | 'NEXT' steps | 'PRECEDING' steps | 'FOLLOWING' steps | 'DITTO' // valid only in TO attribute. steps ::= '(' step ') | steps '(' step ')' step ::= instance | instance element | instance element avspecs avspecs ::= attribute value | avspecs attribute value instance ::= 'ALL' | NUMBER // default sign is + | '+' NUMBER | '-' NUMBER element ::= NAME | '#CDATA' | '*' attribute ::= NAME | '*' value ::= LITERAL // i.e. a quoted string. | NAME // As for attribute values in | NUMBER // a document, NMTOKENs need not | NUMTOKEN // be quoted. | '#IMPLIED' // No value specified, no default. | '*' // Any value matches. range ::= NUMBER | NUMBER NUMBER</EG></P>
You do not need to use the TEI dtd to take advantage of TEI extended pointers (though it may be a good idea to do so for other reasons). If you are using Panorama, you specify in your dtd or document that it should treat any element as a TEI extended pointer by supplying a processing instruction like the following:
<?TAGLINK foo "TEI-P3">The element named (<foo> in the above example) must, of course, be defined in your dtd with attributes doc, from and to in the same way as the TEI elements <xptr> and <xref>.
A simple test file, demonstrating some of the features documented here is available from the URL http://users.ox.ac.uk/~lou/papers/XR/XRtest.sgm. You must have Panorama installed on your machine to read this file.