To follow up on my previous response on &quot;OSIS with TEI and XHTML5 (was Fwd: Standardizing on a Web Infrastructure and Web Service API for Scripture)&quot;: <a href="http://www.crosswire.org/pipermail/osis-users/2010-January/000015.html">http://www.crosswire.org/pipermail/osis-users/2010-January/000015.html</a><br>

<br>On Mon, Jan 18, 2010 at 12:01 PM, Troy A. Griffitts <span dir="ltr">&lt;<a href="mailto:scribe@crosswire.org" target="_blank">scribe@crosswire.org</a>&gt;</span> wrote:<br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">

OSIS, though in someways unwieldy, gives me a finite set of tags to
handle when writing software to parse OSIS.  If OSIS were to import TEI
tags directly, I am sure there are plenty of global attributes and
other aspects of the TEI specification regarding those attributes that
I would have to handle as a software engineer, even though they will
likely never be used or worth allowing for use against the time it
would take me to implement code to handle all aspects of those TEI tags
and their children/attributes.  And per my first question above, do you
have a particular use case where it would be advantageous that the tags
were actually imported from the TEI specification?<br></blockquote><br>Having a finite set of tags and the benefits thereof also raises the
issue of the need for an unambiguous document structure, or rather a
single document structure. Troy, as you&#39;ve said before, you can&#39;t actually
use OSIS as your raw data format at CrossWire because an OSIS document can be
authored in many different ways and so there is much more programming logic that is needed to handle all of the possible OSIS styles. If we could define a single document structure, however, one that is a subset of the freedom that OSIS provides (perhaps taking cues from OXES), we could then have an XML format for scripture that would be suited for efficient interchange and application traversal.<br>

<br>Currently we have the problem of two overlapping hierarchies: BSP and BCV. However, there could be potentially multiple versification systems, so there could be even more than two overlapping hierarchies, probably why the &lt;p&gt; element isn&#39;t currently milestonable. To get around the problem of overlapping hierarchies, what if we introduced stand-off markup into the equation? The words of scripture themselves could all be located in a flat structure as siblings; then in the header there could be multiple CONCUR sections (views) that list out the elements which belong to the various parts of the hierarchies<br>

<br>For example, the current approach:<br><br><div style="margin-left: 40px;"><span style="font-family: courier new,monospace;">&lt;p&gt;<br>    &lt;verse osisID=&quot;Example.1.1&quot; sID=&quot;Example.1.1&quot; /&gt;<br>

    &lt;w id=&quot;w1&quot;&gt;Then&lt;/w&gt;<br>    &lt;w id=&quot;w2&quot;&gt;he&lt;/w&gt;<br>    &lt;w id=&quot;w3&quot;&gt;said&lt;/w&gt;&lt;w id=&quot;p1&quot;&gt;,&lt;/w&gt;<br>    &lt;q marker=&quot;“&quot; sID=&quot;Example.1.1.q1&quot; /&gt;<br>

        &lt;w id=&quot;w4&quot;&gt;Let&lt;/w&gt;<br>        &lt;w id=&quot;w5&quot;&gt;us&lt;/w&gt;<br>        &lt;w id=&quot;w6&quot;&gt;go&lt;/w&gt;&lt;w id=&quot;p2&quot;&gt;...&lt;/w&gt;<br>&lt;/p&gt;<br>&lt;p&gt;<br>

    &lt;w id=&quot;w7&quot;&gt;but&lt;/w&gt;<br>    &lt;verse eID=&quot;Example.1.1&quot; /&gt;<br>    &lt;verse osisID=&quot;Example.1.2&quot; sID=&quot;Example.1.2&quot;/&gt;<br>    &lt;w id=&quot;w8&quot;&gt;don&#39;t&lt;/w&gt;<br>

    &lt;w id=&quot;w9&quot;&gt;forget&lt;/w&gt;<br>    &lt;w id=&quot;w10&quot;&gt;your&lt;/w&gt;<br>    &lt;w id=&quot;w11&quot;&gt;backpack&lt;/w&gt;&lt;w id=&quot;p3&quot;&gt;.&lt;/w&gt;<br>    &lt;q marker=&quot;”&quot; eID=&quot;Example.1.1.q1&quot; /&gt;<br>

    &lt;verse eID=&quot;Example.1.2&quot; /&gt;<br>&lt;/p&gt;</span><br></div><br><br><br>Could instead appear as (I&#39;m making up these element names):<br><br><div style="margin-left: 40px;"><span style="font-family: courier new,monospace;">&lt;concur&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    &lt;view type=&quot;verse&quot; osisID=&quot;Example.1.1&quot; xpointer=&quot;range(#w1, #w7)&quot; /&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &lt;view type=&quot;verse&quot; osisID=&quot;Example.1.2&quot; xpointer=&quot;range(#w8, #q2)&quot; /&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    &lt;view type=&quot;quote&quot; xpointer=&quot;range(#q1, #q2)&quot; /&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &lt;view type=&quot;para&quot;  xpointer=&quot;range(#w1, #p2)&quot; /&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    &lt;view type=&quot;para&quot;  xpointer=&quot;range(#w7, #q2)&quot; /&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&lt;/concur&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&lt;content&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &lt;w id=&quot;w1&quot;&gt;Then&lt;/w&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    &lt;w id=&quot;w2&quot;&gt;he&lt;/w&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &lt;w id=&quot;w3&quot;&gt;said&lt;/w&gt;&lt;w id=&quot;p1&quot;&gt;,&lt;/w&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    &lt;w id=&quot;q1&quot;&gt;“&lt;/w&gt;&lt;w id=&quot;w4&quot;&gt;Let&lt;/w&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &lt;w id=&quot;w5&quot;&gt;us&lt;/w&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    &lt;w id=&quot;w6&quot;&gt;go&lt;/w&gt;&lt;w id=&quot;p2&quot;&gt;...&lt;/w&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &lt;w id=&quot;w7&quot;&gt;but&lt;/w&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    &lt;w id=&quot;w8&quot;&gt;don&#39;t&lt;/w&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &lt;w id=&quot;w9&quot;&gt;forget&lt;/w&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    &lt;w id=&quot;w10&quot;&gt;your&lt;/w&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &lt;w id=&quot;w11&quot;&gt;backpack&lt;/w&gt;&lt;w id=&quot;p3&quot;&gt;.&lt;/w&gt;&lt;w id=&quot;q2&quot;&gt;”&lt;/w&gt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&lt;/content&gt;    </span><br></div><br>By structuring a document like this, multiple overlapping hierarchies can be cleanly defined, although they are separated from the underlying content: this however, provides the benefit of clearing up the confusion as to where the &lt;verse&gt;, &lt;p&gt;, and &lt;q&gt; elements should be placed: in the concur section, they each can share references to the same content elements and so their boundaries are specified at the exact same location. This means that XML processors would be able to consistently handle each of the hierarchies as they interweave throughout the content data.<br>

<br>Efraim Feinstein and James Tauber introduced me to this approach to structuring markup. See also: <a href="http://www.tei-c.org/Guidelines/P4/html/NH.html#NHCO">http://www.tei-c.org/Guidelines/P4/html/NH.html#NHCO</a><br>

<br>Weston<br><br>