[osis-core] empty tag / milestone proposal

Troy A. Griffitts osis-core@bibletechnologieswg.org
Wed, 19 Jun 2002 12:41:12 -0700


yeah!  Thanks for the comments Harry.  At least you seem to understand 
my problems.

So, where do we go from here?

Seems like there are 2 camps:

1) those concerned with XSLT parsing which MAY be harder to do with 
milestones over segmented containers.

2) those concerned that segmented containers are not practicle in a 
richly marked up text (p, q (multilevel), textCrit, verse, POS (part of 
speech), whoKnowsWhat, which may all overlap at multiple levels)


I don't use XSLT in my software, and I am concerned with allowing rich 
markup.  This puts me predominently in camp 2.


 From comments at the OSIS conference, I would put my money on the 
majority of people being in camp 2.

A few examples:

Bob Pritchet marks up multiple versification schemes in his text.  He 
uses all milestones and was happy we chose this approach (Rome OSIS was 
all milestones for verse marks).  So, for example, he marks Josephus up 
with both versification schemes in the same text.

I spoke with a gentleman who's name illudes me, at the moment, who is 
doing research on sentence diagramming in Biblical texts.  We had (Rome 
OSIS) e.g. <w POS="directObject"> (w != word; but instead some low level 
text fragment) and I assured him he could markup his POS annotation in 
the text and retrieve his data.


	Thanks again for the comments,
		-Troy.





Harry Plantinga wrote:
> I can think of two reasons why such usage would be less than
> idea. (Of course, all solutions to the overlapping hierarchies
> problem are less than ideal.)
> 
> 1. In <verse verseID="jn.1.1" mStart="jn.1.1"/>In the beginning...<verse
> mEnd="jn.1.1"/>, the verse is not a container as far as CSS, XSLT,
> etc. are concerned.  Want to render in HTML and give a style to the
> whole verse?  Can't do it, unless you put some container around the verse.
> 
> To process a verse like this, you might have to parse the whole document,
> turning on processing at the opening <verse/> and turning off processing
> at the closing <verse/>. That means every access to such an element
> means traversing the whole document, or some large part of it.
> 
> 2. Worse, what is between the <verse/> tags may not be well-formed xml.
> E.g.
> 
> <p>...<verse verseID="jn.1.1" mStart="jn.1.1"/>In the </p>beginning...<verse
> mEnd="jn.1.1"/>
> 
> The verse itself is
> 
> In the </p> beginning...
> 
> What are we to make of that? what elements might it be intended that
> the "In the" belongs in? Do we have to search backwards to see where
> the <p> started, what its attributes were, etc?
> 
> One way to process such things that I can think of is to process the
> smallest container containing both milestones and jump to/highlight
> the verse in question. (Hence the imporance of having <div> containers.)
> 
> However, the other solution also has problems. If you split containers
> into pieces at overlapping hierarchy boundaries, you get unreasonable
> growth in the number of pieces you need when you have multiple overlapping
> hierarchies.
> 
> I don't know how to solve these problems, but I would suggest that the
> linked containers would be easier if there is little overlap and the
> milestone approach may be necessary (though a pain in the posterior)
> if there is lots of overlap.
> 
> -Harry
> 
> -----Original Message-----
> From: owner-osis-core@bibletechnologieswg.org
> [mailto:owner-osis-core@bibletechnologieswg.org]On Behalf Of Troy A.
> Griffitts
> Sent: Wednesday, June 19, 2002 2:05 PM
> To: osis-core@bibletechnologieswg.org
> Subject: Re: [osis-core] empty tag / milestone proposal
> 
> 
> I am proposing that, in OSIS, the following 2 structures be
> interchangable and identical:
> 
> <verse verseID="jn.1.1">In the beginning...</verse>
> <verse verseID="jn.1.1" mStart="jn.1.1"/>In the beginning...<verse
> mEnd="jn.1.1"/>
> 
> 
> mStart and mEnd should NOT be global attributes.  <div>, for example,
> should NOT allow this type of behaviour.
> 
> Please tell me why this sucks.  I'm perfectly ok with someone explaining
> why this sucks and finally implementing my problem passages some other
> way, but I really have been frustrated, and frozen from completing ABS
> work because this issue has not been resolved.  Can we get more than 2
> of us on the phone or in person to deal with these issues that have
> lagged for more than a month?
> 
> 	-Troy.
> 
> 
> 
> 
> 
> 
> 
> Patrick Durusau wrote:
> 
>>(Got a delayed start this morning getting house guests on the road.
>>Expect the next version just after NOON East Coast time.)
>>
>>Troy,
>>
>>XML treats <head></head> and <head/> as syntactically equivalent. Unless
>>an element has required content (in other words, elements that must
>>occur)  I think you already have milestones. (Am I missing something
> 
> here?)
> 
>>Since <div> is mixed content, you could write all of the elements that
>>may occur in <div> as empty elements, or so I am reading the XML spec.
>>
>>I may be missing the purpose of the patch. Is it to add the mstart,
>>mstop attributes? Is so, can I add them to global?
>>
>>I would like to leave the generic milestone for cases where people want
>>to use standard containers and yet also do some milestone markup.
>>
>>Patrick
>>
>>Troy A. Griffitts wrote:
>>
>>
>>>Attached is a proposal to allow some elements to be used as empty
>>>milestones optionally.  Please consider applying this patch.
>>>
>>>I would also suggest removing the generic milestone element, but this
>>>patch does not do this.
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>--- osisCore_1test12.xsd.orig    Tue Jun 18 19:45:00 2002
>>>+++ osisCore_1test12.xsd    Tue Jun 18 20:13:05 2002
>>>@@ -308,6 +308,7 @@
>>>                           <xs:element ref="w"/>
>>>        </xs:choice>
>>>        <xs:attributeGroup ref="globalAttributes"/>
>>>+        <xs:attributeGroup ref="milestoneAttributes"/>
>>>       </xs:complexType>
>>></xs:element>
>>>
>>>@@ -765,6 +766,7 @@
>>>               <xs:element ref="w"/>
>>>        </xs:choice>
>>>        <xs:attributeGroup ref="globalAttributes"/>
>>>+        <xs:attributeGroup ref="milestoneAttributes"/>
>>>       </xs:complexType>
>>></xs:element>
>>>
>>>@@ -798,6 +800,7 @@
>>>        <xs:attribute name="next" type="xs:string" use="optional"/>
>>>        <xs:attribute name="prev" type="xs:string" use="optional"/>
>>>        <xs:attributeGroup ref="globalAttributes"/>
>>>+        <xs:attributeGroup ref="milestoneAttributes"/>
>>>       </xs:complexType>
>>></xs:element>
>>>
>>>@@ -895,6 +898,7 @@
>>>        <xs:attribute name="next" type="xs:string" use="optional"/>
>>>        <xs:attribute name="prev" type="xs:string" use="optional"/>
>>>        <xs:attributeGroup ref="globalAttributes"/>
>>>+        <xs:attributeGroup ref="milestoneAttributes"/>
>>>       </xs:complexType>
>>></xs:element>
>>>
>>>@@ -976,6 +980,7 @@
>>>        <xs:attribute name="prev" type="xs:string" use="optional"/>
>>>            <xs:attribute name="who" type="xs:string" use="optional"/>
>>>        <xs:attributeGroup ref="globalAttributes"/>
>>>+        <xs:attributeGroup ref="milestoneAttributes"/>
>>>       </xs:complexType>
>>></xs:element>
>>>
>>>@@ -1027,6 +1032,7 @@
>>>        </xs:choice>
>>>        <xs:attribute name="changeType" type="changeType"
>>>use="optional"/>
>>>        <xs:attributeGroup ref="globalAttributes"/>
>>>+        <xs:attributeGroup ref="milestoneAttributes"/>
>>>       </xs:complexType>
>>></xs:element>
>>>
>>>@@ -1059,6 +1065,7 @@
>>>        <xs:attribute name="next" type="xs:string" use="optional"/>
>>>        <xs:attribute name="prev" type="xs:string" use="optional"/>
>>>        <xs:attributeGroup ref="globalAttributes"/>
>>>+        <xs:attributeGroup ref="milestoneAttributes"/>
>>>       </xs:complexType>
>>></xs:element>
>>>
>>>@@ -1117,6 +1124,11 @@
>>>    <xs:attribute name="outCite" type="osisRef" use="optional"/>
>>></xs:attributeGroup>
>>>
>>>+<!-- allow some container elements to be left empty and used as
>>>milestones. eg. either <verse verseID="jn.1.1">In the
>>>beginning...</verse> OR <verse verseID="jn.1.1" mStart="jn.1.1"/>In
>>>the beginning...<verse mEnd="jn.1.1"/> -->
>>>+<xs:attributeGroup name="milestoneAttributes">
>>>+    <xs:attribute name="mStart" type="xs:string" use="optional"/>
>>>+    <xs:attribute name="mEnd" type="xs:string" use="optional"/>
>>>+</xs:attributeGroup>
>>>
>>><!-- simple types -->
>>>
>>>@@ -1369,4 +1381,4 @@
>>>    <xs:union memberTypes="roleOSIS attributeExtension"/>
>>></xs:simpleType>
>>>
>>>-</xs:schema>
>>>\ No newline at end of file
>>>+</xs:schema>
>>>
> 
>