Subject: Re: [xsl] Implementation Advice: Grouping Strings by Character Range in XSLT 2 From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 29 Apr 2016 16:37:58 -0000 |
I am at work and don't have the time for a complete/tested implementation, but one can use the function string-to-codepoints() and then perform on the result: <xsl:for-each-group select="$theCodepoints" group-adjacent=f:codepointToRange(.)> . . . . . . . . </xsl:for-each-group> Cheers, Dimitre On Fri, Apr 29, 2016 at 8:04 AM, Eliot Kimber ekimber@xxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Using XSLT 2, I have a requirement to take text and group contiguous > sequences of characters in markup according to a given character range the > characters are in. This is to support the application of range-specific > fonts to text in HTML. > > I have a static definition of the character ranges for a given national > language and there shouldn't be any overlap between ranges. Given this > static definition, I'm generating XSLT code to operate on text nodes in > order to apply the range markup. The > > For example, given the text string "abcdefg" where range "R1" is "cde" and > R2 is "g", the marked up result should be: abc<span > class="R1">cde</span>f<span class="R2">g</span> > > My initial approach is to generate a template that takes the current > language and the text node and then applies templates in a > language-specific mode. > > For each language I'm then generating a template to do the range matching. > > My question, once I'm in a language-specific template for a text node, > what is the most efficient and/or easiest to code way to map the string to > ranges? Since I'm generating the code it doesn't have to be concise. > > I'm thinking along the lines of using analyze-string to match on any of > the groups and then within the matching-substring clause have a choice > group to determine which range actually matched. But it feels like I'm > missing a more elegant way to determine the actual range. > > Or maybe there's a clearer/simpler/more efficient way using tail recursion? > > Thanks, > > Eliot > ---- > Eliot Kimber, Owner > Contrext, LLC > http://contrext.com > > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- To achieve the impossible dream, try going to sleep. ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- Sanity is madness put to good use. ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Implementation Advice: Gr, Eliot Kimber ekimber | Thread | Re: [xsl] Implementation Advice: Gr, Eliot Kimber ekimber |
Re: [xsl] Implementation Advice: Gr, Eliot Kimber ekimber | Date | Re: [xsl] Implementation Advice: Gr, Eliot Kimber ekimber |
Month |