Hello Troy. Ok, let me summarise:
Headings (as the name of the VerseKey function) are used for module, testament, book and chapter intros. >From looking into osis2mod.cpp they have to be encoded in OSIS like: // Everything between the begin book tag and the first begin chapter tag is inBookIntro // Everything between the begin chapter tag and the first begin verse tag is inChapterIntro Books are encoded with: <div canonical="true" type="book" osisID="Gen"> So everything between this tag and the first <chapter /> tag is a book intro and retrievable using: testament.book.0 Can the intro be embedded in another node which is not a text node? Chris mentioned something like: <div type="introduction" /> The global option "Headings" is used for pre-verse titles/headings. They have to be embedded in a <title /> tag and have to be placed right before the <verse /> tag. They are retrievable using: getEntryAttributes()["Heading"]["Preverse"]["0"] > Hope this is helpful. Yes, very much. Manfred Am 17.12.2009 um 22:52 schrieb Troy A. Griffitts: > Dear Manfred, > > On 12/17/2009 12:02 PM, Manfred Bergmann wrote: >> Is it necessary to use a VerseKey for positioning in order to retrieve the >> headings? >> > VerseKey::Headings(true|false) is currently how to turn intro records on > and off for VerseKey navigated modules. These include: > testament.book.chap.0 for chapter intro > testament.book.0 for book intro > testament.0 for testament intro > 0 for module intro > > By default intro's are turned off. > > The method name is confusing because 'Headings' was chosen before we had > any semblance of OSIS subheadings in verses. VerseKey::Headings is a > prime candidate for a name change when we normalize the API naming > conventions in 2.0. > >> Which XML/OSIS tags are then used to create the headings in the module? >> > DM and others who maintain osis2mod can answer better than me, but I > believe these intros are populated from an OSIS doc by osis2mod choosing > the interverse text in the correct position, e.g. > > <verse osisID="John.1.51"> > ... > </verse> > John Chapter 2 intro material > <verse osisID="John.2.1"> > ... > </verse> > > The API lets you set this material with code like: > > VerseKey *vk = (VerseKey *)module.getKey(); > vk->Headings(true); > (*vk) = "jn.2.0"; > module.setEntry("Intro Text for John 2"); > The wiki mentions the <title/> tag and that it has to be placed right > before the verse/chapter. > >> Does this also work for testament and book? >> > Text parsing should work for jn.0.0, but I think you have to use some > crazy text for text parsing of book and testament headings... > Basically, the text you get out of VerseKey::getText() should work for > setting with VerseKey::setText(), but I would suggest just using the > setters: > > VerseKey::setTestament(0); > VerseKey::setBook(0); > >> What is the "Headings" global option doing? >> > Something entirely different. These are for sections headings in the > text, including 'pre-verse' section headings. These can be turned on > and off. Headings are the little blurbs before a section like: > > The Baptism of Jesus > > Some of these are 'pre-verse', which means they should be displayed > before your frontend's verse marker. These can be pulled from > entryAttributes, and each SWORD frontend has chapter display logic > similar to: > > VerseKey *key = (VerseKey *)currentText.getKey(); > VerseKey saveKey = *key; > > if (key->getVerse() != 1) { > key->setChapter(0); > } else { > key->setVerse(0); > > SWBuf text = "<html><body>"; > for (; ((key->Chapter() == chapter) && (key->Book() == book) && > !currentText.Error()); currentText++) { > > if (key->getVerse() == 0) { > text += currentText.RenderText(); // intro material > text += "<br/><br/>"; > continue; > } > > // see if there are any pre-verse headings > SWBuf preverseHeading = > currentText->getEntryAttributes()["Heading"]["Preverse"]["0"].c_str(); > if (preverseHeading.length()) { > text += "<br/><br/><b>"; > text += currentText.RenderText(preverseHeading); // do > any tag conversions for our requested markup > text += "</b><br/><br/>"; > } > > // render our verse number marker > text += "<font color=\"#0000ff\"><small>" + key->getVerse() > + "</small></font>"; > } > text += "</body></html>"; > textDisplay->setText(text); > textDisplay->scrollToAnchor("curVerse"); > currentText->SetKey(saveKey); > > } > > Hope this is helpful. > > Troy > > >> >> >> Manfred >> _______________________________________________ >> sword-devel mailing list: sword-devel@crosswire.org >> http://www.crosswire.org/mailman/listinfo/sword-devel >> Instructions to unsubscribe/change your settings at above page >> > > > _______________________________________________ > sword-devel mailing list: sword-devel@crosswire.org > http://www.crosswire.org/mailman/listinfo/sword-devel > Instructions to unsubscribe/change your settings at above page _______________________________________________ sword-devel mailing list: sword-devel@crosswire.org http://www.crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page