[jsword-devel] Method to find if BibleBook is contained in a Book

DM Smith dmsmith at crosswire.org
Tue Mar 25 07:19:41 MST 2014


Those verses exist since they are defined in the OSIS input file to osis2mod. Osis2mod retains everything in its input. This is a well documented behavior of osis2mod.

The end chapter markup will be put in the last verse that is in the chapter, which might be verse 0.

They should use xslt to strip empty verses, chapters and books out of their file into an intermediate file and give that as input to osis2mod.

Alternatively they can use <!-- ... --> to comment out huge swaths of the input file.


-- DM

On Mar 25, 2014, at 7:48 AM, Martin Denham <mjdenham at gmail.com> wrote:

> IBT have just passed me more information regarding their handling of empty verses to help clarify if this is an IBT module issue or not.  The following is an extract from IBT's e-mail:
> 
> Here are examples of how IBT's OSIS source defines empty verses in the markup:
> 
> Empty book (Epistle of Jeremiah):
> <div type="x-Synodal-non-canonical"><div type="book" osisID="EpJer"><chapter osisID="EpJer.1"><verse sID="EpJer.1.1-72" osisID="EpJer.1.1 EpJer.1.2 EpJer.1.3 EpJer.1.4 EpJer.1.5 EpJer.1.6 EpJer.1.7 EpJer.1.8 EpJer.1.9 EpJer.1.10 EpJer.1.11 EpJer.1.12 EpJer.1.13 EpJer.1.14 EpJer.1.15 EpJer.1.16 EpJer.1.17 EpJer.1.18 EpJer.1.19 EpJer.1.20 EpJer.1.21 EpJer.1.22 EpJer.1.23 EpJer.1.24 EpJer.1.25 EpJer.1.26 EpJer.1.27 EpJer.1.28 EpJer.1.29 EpJer.1.30 EpJer.1.31 EpJer.1.32 EpJer.1.33 EpJer.1.34 EpJer.1.35 EpJer.1.36 EpJer.1.37 EpJer.1.38 EpJer.1.39 EpJer.1.40 EpJer.1.41 EpJer.1.42 EpJer.1.43 EpJer.1.44 EpJer.1.45 EpJer.1.46 EpJer.1.47 EpJer.1.48 EpJer.1.49 EpJer.1.50 EpJer.1.51 EpJer.1.52 EpJer.1.53 EpJer.1.54 EpJer.1.55 EpJer.1.56 EpJer.1.57 EpJer.1.58 EpJer.1.59 EpJer.1.60 EpJer.1.61 EpJer.1.62 EpJer.1.63 EpJer.1.64 EpJer.1.65 EpJer.1.66 EpJer.1.67 EpJer.1.68 EpJer.1.69 EpJer.1.70 EpJer.1.71 EpJer.1.72"/><verse eID="EpJer.1.1-72"/></chapter></div></div>
> 
> I'm not sure how osis2mod handles all this when importing to the module, but it works perfectly without warnings or errors. Also, when the resulting module is passed to the "emptyvss" tool, it passes this test without warnings.
> 
> 
> On 25 March 2014 11:38, Martin Denham <mjdenham at gmail.com> wrote:
> I am having problems getting a list of BibleBooks contained in some AV modules which we know do not contain certain books.  I can't work out if the problem is with JSword, the modules, or osis2mod.
> 
> There are 2 related problems I can see:
> book.contains(nonExistingVerse) returns TRUE
> book.getRawText(nonExistingVerse) returns <chapter end tag>
> Here is a simple test to show the problem using KAZ which has Synodal v11n but does not contain any deuterocanonical books:
> 
>     	SwordBook kaz = (SwordBook)Books.installed().getBook("KAZ");
>     	Verse esd11Verse = new Verse(kaz.getVersification(), BibleBook.ESD1, 1, 1);
>     	System.out.println(kaz.contains(esd11Verse));	// prints: true
>     	System.out.println(kaz.getRawText(esd11Verse));	// prints: <chapter eID="gen7" osisID="1Esd.1"/>
>     	Verse esd12Verse = new Verse(kaz.getVersification(), BibleBook.ESD1, 1, 2);
>     	System.out.println(kaz.contains(esd12Verse));	// prints: true
>     	System.out.println(kaz.getRawText(esd12Verse));	// prints: <chapter eID="gen7" osisID="1Esd.1"/>
> 
> So how does "<chapter eID="gen7" osisID="1Esd.1"/>" get into verse content unexpectedly?
> 
> It seems to me like it could be either:
> a module problem; but IBT say they do not add empty verse slots
> Sword osis2mod issue
> JSword issue: why is JSword returning a chapter end tag instead of verse content
> Any ideas what might cause this problem?
> 
> Thanks
> Martin
> 
> 
> On 11 March 2014 12:15, DM Smith <dmsmith at crosswire.org> wrote:
> We haven't pushed this down into JSword. So far it is the responsibility of the front-end. Chris B has made it efficient to ask a Book whether it contains a Verse.
> 
> Essentially, when it comes to asking a module if it has meaningful content, you want containsAny(Key verses, boolean includeIntros) and containsAny(Key verses) { return containsAny(verses, false); }
> 
> I think it should ignore verse 0 by default. If it doesn't have verse content, then does the content really mean something?
> 
> As you have noted contains(Key) is confusing. There are a few places where it means containsAny. Usually it means containAll. The name, contains, was chosen early as we derived from a container class where the argument was an element of the container.  That is, contains is supposed to mean isMemberOf. Later we changed the inheritance as it wasn't an "is a" relationship.
> 
> But we need to be careful of not introducing more confusion.
> 
> By the way, the list serve was holding mail for a few days.
> 
> In Him,
>         DM
> 
> On Mar 8, 2014, at 5:26 PM, Martin Denham <mjdenham at gmail.com> wrote:
> 
> > Is there an efficient way to find if a BibleBook is contained in a Book (Bible or commentary) using JSword?
> >
> > I recall this subject being discussed but can't recall the outcome.
> >
> > Thanks
> > Martin
> > _______________________________________________
> > jsword-devel mailing list
> > jsword-devel at crosswire.org
> > http://www.crosswire.org/mailman/listinfo/jsword-devel
> 
> 
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel
> 
> 
> 
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/jsword-devel/attachments/20140325/944d6328/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4145 bytes
Desc: not available
URL: <http://www.crosswire.org/pipermail/jsword-devel/attachments/20140325/944d6328/attachment.p7s>


More information about the jsword-devel mailing list