[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: How to show context of term in text document?

Subject: Re: How to show context of term in text document?
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Wed, 2 May 2007 23:41:44 +0530
Re:  How to show context of term in text document?
Following is a XSLT 2.0 solution for this:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      xmlns:xs="http://www.w3.org/2001/XMLSchema"
                      xmlns:fn="http://dummy-ns"
                      version="2.0">

<xsl:output method="text" />

 <xsl:template match="s">
   <xsl:variable name="result"
select="fn:getstring(normalize-space(string-join(//text(), ' ')),
'nutrient')" />
   <xsl:value-of select="$result" />
 </xsl:template>

 <xsl:function name="fn:getstring" as="xs:string">
   <xsl:param name="text" as="xs:string " />
   <xsl:param name="word" as="xs:string " />

   <xsl:variable name="x">
     <xsl:for-each select="tokenize(substring-before($text, $word), '
')[position() &lt;= 5]">
       <y><xsl:value-of select="." /></y>
     </xsl:for-each>
     <y><xsl:value-of select="concat('*', $word, '*')" /></y>
     <xsl:for-each select="tokenize(substring-after($text, $word), '
')[position() &lt;= 6]">
       <y><xsl:value-of select="." /></y>
     </xsl:for-each>
   </xsl:variable>
   <xsl:sequence select="concat('... ', string-join($x//y, ' '), ' ...')" />
 </xsl:function>

</xsl:stylesheet>

When this is applied to the XML:

<s id="39" xmlns:z="http://z-ns">
 The aforementioned oxygenated
 <z:e sem="chebi" ids="33284">nutrient</z:e> emulsion (using the
 fluorocarbon FC-80) was placed in a Harvey pediatric oxygenator
 (volume 1230cc) and maintained at about 40 DEG C
</s>

The output produced is:

... The aforementioned oxygenated  *nutrient*  emulsion (using the
fluorocarbon FC-80) ...

This might not be perfect. But it could help you get started.

On 5/2/07, Antony Quinn <aquinn@xxxxxxxxx> wrote:
Hello,

I would like to display the context in which a term appears in some
text, in the same way that Google shows the 5 or so words before and
after your search term in the document.

Example
-------

For this input:

<s id="39">
  The aforementioned oxygenated
  <z:e sem="chebi" ids="33284">nutrient</z:e> emulsion (using the
  fluorocarbon FC-80) was placed in a Harvey pediatric oxygenator
  (volume 1230cc) and maintained at about 40 DEG C
</s>

I want to show the 5 words before and after "nutrient":

... The aforementioned oxygenated *nutrient* emulsion (using the
fluorocarbon FC-80) ...

Any ideas?

Thanks,

Antony


--
Regards,
Mukul Gandhi

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.