Subject: RE: [xsl] Highlighting words/phrases From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 27 Jul 2006 22:54:21 +0100 |
If you change your code so that it makes a recursive call on "highlight" in place of the call on "search-and-replace" (whose function is unclear from your description), then it will highlight all the occurrences. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: yguaba@xxxxxxxxxxxx [mailto:yguaba@xxxxxxxxxxxx] > Sent: 27 July 2006 22:27 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Highlighting words/phrases > > Dear all, > > I am using XSLT to output search results. The source XML > files can be very roughly exemplified thus: > > <root> > <keywords> > <keyword>term</keyword> > <keyword>another search term</keyword> > </keywords> > <document number="x"> > <contents>sample text</contents> > </document> > <document number="y"> > <contents>another sample</contents> > </document> > </root> > > Basically, I want to be able to "highlight" the key words and > phrases ("keyword" elements) by enclosing each of them > within, say, a "span" > tag with a certain "class" attribute (in order to style these > bits via CSS). > > My first idea was to use some kind of a search/replace routine, like > so: > > <xsl:template name="highlight"> > <xsl:param name="input"/> > <xsl:param name="search-string"/> > <!-- CSS class --> > <xsl:param name="class-name"/> > <xsl:choose> > <xsl:when test="$search-string and > contains($input, $search- string)"> > <xsl:value-of > select="substring-before($input, $search-string)"/> > <span class="{$class-name}"> > <xsl:value-of > select="$search-string"/> > </span> > <xsl:call-template > name="search-and-replace"> > <xsl:with-param > name="input" select="substring-after($input, $search-string)"/> > <xsl:with-param > name="search-string" select="$search-string"/> > <xsl:with-param > name="class-name" select="$class-name"/> > </xsl:call-template> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="$input"/> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > The problem is that this would only highlight the first key > word or phrase. But I would need to iterate through all the > key words using xsl:for-each and highlight them all, which > would of course not work with the above template. > > Any suggestions or links to possible solutions would be appreciated. > > Cheers, > > Erik > > > _______________________________________________________ > Novidade no Yahoo! Mail: receba alertas de novas mensagens no > seu celular. Registre seu aparelho agora! > http://br.mobile.yahoo.com/mailalertas/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Highlighting words/phrases, yguaba | Thread | Re: [xsl] Highlighting words/phrase, yguaba |
[xsl] Highlighting words/phrases, yguaba | Date | [xsl] OpenOffice 2.0 or Word 2003 X, jimmy |
Month |