[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] replace a word


Subject: [xsl] replace a word
From: T Uma Shankari <umashankari@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 6 Dec 2005 14:18:46 +0530 (IST)

Greetings to all,

I have to find a word and replace that word with another word.

for example if my xml file is like this means

<question page="6" Queswav="" ChooseType="" id="0" Qno="533" chapter="chapter1" >
<stmt1 mgif1="" mgif="" Qno="533" misc="" >statement1</stmt1>
<opt ptno="1" mgif1="" mgif="" " misc=""
{sub}2{/sub}Option1{sub}5{/sub}</opt>
  <opt ptno="1" mgif1="" mgif="" " misc="" >Option2</opt>
  <opt ptno="1" mgif1="" mgif="" " misc="" >Option3</opt>
  <opt ptno="1" mgif1="" mgif="" " misc="" >Option4</opt>
 </question>


i need to find the {sub} and replace it with {/sub} so i have written this code.


xsl:template match="question" name="main">
 <xsl:for-each select="self::question">
           <xsl:variable name="stringques1">
              <h1><b><xsl:value-of select="opt" /></b></h1>
            </xsl:variable>

<xsl:variable name="stringques2">
 <xsl:choose>
 <xsl:when test="(contains($stringques1,'{sub}'))">
 <xsl:value-of select="substring-before($stringques1,'{sub}')"/>
   <sub>
   <xsl:value-of select="substring-before(substring-after($stringques1,'{sub}'),'{/sub}')"/>
   </sub>
  <xsl:value-of select="substring-after($stringques1,'{/sup}')" />
      </xsl:when>
       <xsl:otherwise>
        <xsl:value-of select="$stringques1"/>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:variable>
 </xsl:for-each>
  </xsl:template>
 </xsl:stylesheet>


It is replacing the first occurance not the oncoming occurance. Can anyone please tell where i am wrong?


regards
uma


Current Thread
Keywords
xml