The simplest would be to tokenise to words and then apply-templates with three
cases:
1. [1] capitalize($word)
2. $word = (bof,'and'... etc.) - $word
3. capitalize($word)
Sent from my iPad
> On 9 Apr 2018, at 21:52, David Sewell dsewell@xxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Wondering if anyone has a serviceable function (preferably in XSLT 2/3 but
v1 is fine if it works) that takes a string as input and returns it with title
capitalization according to English-language editorial practice (for example,
Chicago Manual of Style). So for example
>
> A MEMORANDUM OF UNDERSTANDING ==> A Memorandum of Understanding
>
> WHERE DID THE DRUIDS COME FROM? ==> Where Did the Druids Come From?
>
> BEING FOR THE BENEFIT OF [MR.] KITE ==> Being for the Benefit of [Mr.] Kite
>
> Use case is, as you might guess, processing a lot of titles transcribed as
all caps, wanting to convert them to standard title case format.
>
> It doesn't have to be perfect, just anything that will minimize the need for
hand-editing.
>
> David S.
>
> --
> David Sewell
> Manager of Digital Initiatives
> The University of Virginia Press
> Email: dsewell@xxxxxxxxxxxx Tel: +1 434 924 9973
> Web: http://www.upress.virginia.edu/rotunda
|