Subject: Re: [xsl] Implementation Advice: Grouping Strings by Character Range in XSLT 2 From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 29 Apr 2016 16:54:26 -0000 |
Dimitre, I see how that can work. Cheers, E. ---- Eliot Kimber, Owner Contrext, LLC http://contrext.com On 4/29/16, 11:38 AM, "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: >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, Dimitre Novatchev dn | Thread | Re: [xsl] Implementation Advice: Gr, Eliot Kimber ekimber |
Re: [xsl] Implementation Advice: Gr, Dimitre Novatchev dn | Date | [xsl] BIDI problem in XSL-FO, Michael Müller-Hille |
Month |