[osis-core] one more past unrsolved issue - deriving the presentation value from a complex osisID

Todd Tillinghast osis-core@bibletechnologieswg.org
Wed, 30 Oct 2002 14:52:29 -0700


PROBLEM: It is difficult and in some cases impossible to derive the
verse identifiers that match those in current printed editions from an
OSIS encoded document.

Examples:
The TEV renders the following paragraph with "2-6a" as the verse
identifier.
Here are some options for how it could be encoded:
<p osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6 Matt.1.6a">
<p osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6 Matt.1.6.a">
<p osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6a">
<p osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6a">
<p osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6a kjv:Matt.1.2
kjv:Matt.1.3 kjv:Matt.1.4 kjv:Matt.1.5 kjv:1.6">
<p osisID="kjv:Matt.1.2 kjv:Matt.1.3 kjv:Matt.1.4 Matt.1.2 Matt.1.3
Matt.1.4 Matt.1.5 Matt.1.6a kjv:Matt.1.5 kjv:1.6">
<p osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6">
<p osisID="Matt.1.6 Matt.1.5 Matt.1.4 Matt.1.3 Matt.1.2 Matt.1.6a">
<p osisID="Matt.1.2 Matt.1.4 Matt.1.3 Matt.1.5 Matt.1.6a">
<p osisID="Matt.1.2 Matt.1.4 Matt.1.3 Matt.1.5 Matt.1.6a">

In some cases it is possible to create an algorithm that would derive
the desired text, but in others the translators may have been
inconsistent.  In any case such an algorithm is complicated in XSL.

SOLUTION OPTION 1: Put the display value in as one of the osisID values.
4a <p osisID="Display.2-6a Matt.1.2 Matt.1.4 Matt.1.3 Matt.1.5
Matt.1.6a">  OR
4b <p osisID="Matt.1.2-6a.display Matt.1.2 Matt.1.4 Matt.1.3 Matt.1.5
Matt.1.6a">
OR
4c <p osisID="Matt.1.2-6a Matt.1.2 Matt.1.4 Matt.1.3 Matt.1.5
Matt.1.6a"> where the convention is that the FIRST value when there is a
list of osisIDs is used for display.
  This creates a strange value in the "namespace" but makes it easy to
render and would be HARMLESS otherwise.  The rendering system can either
employ a fancy algorithm to derive "2-6a" and/or use the value following
the "Display." OR with a trailing ".display" when such a value is
present (Options 4a and 4b).  This does not add a questionable
attribute, does not "misuse" <seg>, does not bend the meaning of
milestone, and still provides a mechanism to solve the problem.

SOLUTION OPTION 2: Without changing the schema is the following:
<p osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6 Matt.1.6a"><seg
type="verseIdentifier">2-6a</seg>text of the verses</p>

This is a non-standard and would likely result in many users ignoring
the type attribute and incorrectly applying the text.

SOLUTION OPTION 3:
<p><milestoneStart osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6
Matt.1.6a" textIdentifier="2-6a"/>text of the verses</p>
For this special case use a milestone and ADD a "textIdentifier" value
to <milestone>

SOLUTION OPTION 4: Allow milestone to be non-empty in the same way that
<reference> is non-empty.  This is a handy solution but is contrary to
the nature of milestones.
<p><milestoneStart osisID="Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5 Matt.1.6
Matt.1.6a">2-6a</milestoneStart>text of the verses</p>
For this special case use a milestone and ADD a "textIdentifier" value
to <milestone>

SOLUTION OPTION 5:
Tough this is a rendering issue.  Suck it up and write algorithms to
solve this problem.

I prefer the 4c, is there a need to change the schema as in options 3
and 4?

Is there a "best practice" that we can recommend for general use?

Todd