the unreachable made reachable

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

the unreachable made reachable

Michael Sperberg-McQueen

New versions of the TEI DTD files have been posted to the servers in
Chicago and Exeter; they will migrate to those in Chiba and Oslo in due
course.  The new versions correct a number of errors which had the
effect of making various elements in the DTD 'unreachable' --- that is,
not legal in any context, even though the element in question was
declared --- or not legal in all the proper contexts.  These elements
have now all been made members of the proper element classes, or
otherwise made legal in the expected contexts.

Elements affected include (but are not necessarily limited to):
affiliation, alt, altGrp, app, damage, delSpan, divGen, fLib, fsLib,
fvLib, fw, index, join, joinGrp, link, linkGrp, orgName, space,
supplied, timeline, unclear, and witList.

Files affected include:  teistr2.dtd, teifsd2.dtd, teicorp2.dtd,
teind2.dtd, teihdr2.dtd, teidict2.ent, teikey2.ent, and teiclas2.ent.


Some known bugs remain in this version of the DTD.  Perhaps the most
important is a flaw in the declaration of element classes (specifically,
in the declaration of m-dot entities):  these refer to their member
elements directly by their standard generic identifiers, instead of
using the n-dot entity which contains the generic identifier.  An
imaginary example:  a class called IMAGINARY, containing elements BLORT
and RHUBARB, ought to be declared thus:

    <!ENTITY % x.imaginary ''                                     >
    <!ENTITY % m.imaginary '%x.imaginary; %n.blort; | %n.rhubarb' >

but is currently being declared thus:

    <!ENTITY % x.imaginary ''                                     >
    <!ENTITY % m.imaginary '%x.imaginary; blort | rhubarb'        >

As a result, attempts to change the name of an element (e.g. by renaming
BLORT as BLORTE, to make the spelling parallel that of 'torte') are only
partly successful:  the new name is used in the element declaration, and
wherever BLORT is referred to directly in the declarations of other
elements, but the new name is not recognized as a member of the class

Circumvention:  add the new name as a new member of the class.  In the
imaginary example, your DTD subset or TEI.extensions.ent file should
contain the declaration:

    <!ENTITY % x.imaginary 'blorte |' >

New versions of the DTD, with a fix for this bug, are expected toward
the end of this month.  (If you need this fix urgently, please contact the
editors for a pre-release release.)


Word Perfect Intellitag and SoftQuad RulesBuilder both decline to
compile the TEI DTD in its standard distributed form.  This reflects, we
are sorry to report, bugs in those otherwise useful products, and not
(we are happy to report) bugs in the TEI DTD.  Descriptions of the
problems, and of the best known workarounds, follow.

1 Intellitag fails to handle nested marked sections properly; the
symptom is that it will report an illegal marked-section end (']]>') and
fail.  Circumvention:  remove all IGNOREd marked sections from (a copy
of) the TEI DTD.  (Make this and all other changes to a copy of the DTD,
in order (a) to have a convenient backout if you need one, and (b) in
order to ensure that when you need them, you can generate other,
different views of the TEI DTD (which will have different sets of
IGNORED marked sections).

2 Intellitag also appears to have a hard-coded limit on the number of
elements which can appear within an SGML 'name group' --- the maximum is
32, no matter what number is given in the SGML declaration.  Since the
documentation makes no mention of this limit, this would appear to be a
bug.  Circumvention:  remove references to elements not critically
needed (in particular, in the classes PHRASE and INTER).

3 SoftQuad RulesBuilder signals an error when it encounters references
to elements not declared in the DTD.  The element TREE, for example,
declared in the additional tag set for graphs, networks, and trees, is
referred to in the declaration of the P element, since tree elements are
allowed within P elements.  When the additional tag set for networks is
not selected, however, TREE is undeclared, and RulesBuilder flags this
as an error.  We believe that the SGML standard (clause 11.2.4)
explicitly specifies that in this situation the reference to TREE is not
an error, and recently reported the behavior of RulesBuilder to SoftQuad
as a bug; we hope that they will agree with our reading of the standard,
and change the behavior of RulesBuilder.  Circumvention:  remove such
references.  (You can also add dummy declarations for the elements in
question, but this is NOT recommended.)

4 In versions before 3.0, RulesBuilder signals an error when it
encounters, in the definition of a TEI model class, the reference to the
x-dot entity of that class, and says an entity end may not occur in the
position where it does occur.  A quick test seems to show that in
version 3.0, this has been fixed, at least in the Windows version.

Keep those reports coming in!

- C. M. Sperberg-McQueen
  Lou Burnard