Brian J. Dumont wrote:
Not so long ago, Matthew Talbert mentioned the use of sword:// to link
to items from a dictionary. I am trying to prepare an OSIS commentary
which references a number of other commentaries as well as a number of
General Book modules. I've been trying to use Matthew's methodology and
extend it to General books.
It's not simple, however. The links need to reference the General Book
key, which is often in ThML. The link however, needs to be a valid OSIS
reference. This restricts the link from using same characters that are
typically a part of the ThML key. This includes spaces, forward
slashes, % signs, etc. Note that the fact that a % sign can't be in a
valid OSIS reference removes the possibility of url-style encoding.
Character escaping was taken into consideration when writing the
osisID/osisRef format. The relevant bit of the regex is:
(\p{L}|\p{N}|_|(\\[^\s]))+
The last option permits escaping any non-space character with a leading
\. Further to that, NBSP (0xA0), by convention, represents space (0x20)
in osisID/osisRef. But it will need to be escaped since it's not a
letter, number, or underscore.
How should I prepare these modules so that in the future they will
properly link? Could we decide on syntax? If I need to go back and
start changing General Book module keys, then I will. I just don't want
to do it twice. Furthermore, I'd like to avoid making new modules
incorrectly.
I might propose something like:
* Best practice is that general book keys should be made to avoid
special characters
This is a good idea, and should be a necessary to create OSIS or TEI
documents.
* osis2mod will convert all "." characters (which divide segments of
an OSIS reference) into "/" characters (which divide segments of a
general book reference) whenever the reference is to a general book.
This isn't the proper function of osis2mod. We should still store valid
osisIDs/osisRefs in modules. The conversion of osisRefs to sword://
links is particular to certain render formats, so any conversion like
you describe should take place within render filters. Likewise, decoding
of escapes and converting between NBSP and space should take place
within the render filters (as necessary).
--Chris
_______________________________________________
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