Subject: Re: [xsl] Expanding Ranges From: Ganesh Babu N <nbabuganesh@xxxxxxxxx> Date: Fri, 20 Mar 2009 09:16:51 +0530 |
Hai, Thanks for the code. But how to get $start and $end when "-" is there between tags. Please help me. Regards, Ganesh On Thu, Mar 19, 2009 at 6:20 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote: > In XSLT 2.0 if you have the start and end of the range as integers $start > and $end, you can do > > <xsl:value-of select="for $i in $start to $end return concat('fig', $i)"/> > > In 1.0 you have to do a call on a named template that calls itself > recursively to process each number in the sequence. > > Michael Kay > http://www.saxonica.com/ > >> -----Original Message----- >> From: Ganesh Babu N [mailto:nbabuganesh@xxxxxxxxx] >> Sent: 19 March 2009 12:31 >> To: XSL >> Subject: [xsl] Expanding Ranges >> >> Dear All, >> >> My input is like below: the <cross-ref> tags are not >> continues it will come in between the content. >> >> <links> >> <p>some text <cross-ref><cr refid="MEPRfig2"> 2</cr>-<cr >> refid="MEPRfig4">4</cr></cross-ref> some text <cross-ref><cr >> refid="MEPRfig1">Figures 1</cr> and <cr >> refid="MEPRfig3">3</cr></cross-ref> some text</p> >> >> <p><cross-ref><cr refid="MEPRtbl1">1</cr>-<cr >> refid="MEPRtbl4">4</cr></cross-ref> some text <cross-ref><cr >> refid="MEPRtbl1">Tables 1</cr> and <cr >> refid="MEPRtbl2">2</cr></cross-ref> some text <cross-ref><cr >> refid="MEPRtbl1">Table1</cr></cross-ref> some text </p> >> >> <p>some text <cross-ref><cr refid="MEPRtbl1">1</cr>-<cr >> refid="MEPRtbl3">3</cr> and <cr refid="MEPRtbl4">4</cr></cross-ref> >> some text</p> >> </links> >> >> The required output will be like below: >> >> <links> >> <p>some text <cross-refs refid="fig2 fig3 fig4"> >> 2-4</cross-refs> some text <cross-refs refid="fig1 >> fig3">Figures 1 and 3</cross-refs> some text</p> >> >> <p><cross-refs refid="tbl1 tbl2 tbl3 tbl4">1-4</cross-refs> >> some text <cross-refs refid="tbl1 tbl2">Tables 1 and >> 2</cross-refs> some text <cross-ref >> refid="tbl1">Table1</cross-ref> some text </p> >> >> <p>some text <cross-refs refid="tbl1 tbl2 tbl3 tbl4">1-3 and >> 4</cross-refs> some text</p> </links> >> >> Here is the XSL which i have tried. I do not know how to >> expand the ranges. My style sheet is combining available >> attributes to single attribute. Please help me in getting >> ranges expanded. >> >> <xsl:template match="cross-ref"> >> <xsl:choose> >> <xsl:when test="count(cr) = 1"> >> <cross-ref refid="{substring-after(cr/@refid,'MEPR')}"> >> <xsl:apply-templates/> >> </cross-ref> >> </xsl:when> >> <xsl:otherwise> >> <cross-refs> >> <xsl:attribute name="refid"> >> <xsl:for-each select="cr"> >> <xsl:value-of >> select="substring-after(@refid,'MEPR')"/> >> <xsl:if >> test="position() != last()"> >> <xsl:text> </xsl:text> >> </xsl:if> >> </xsl:for-each> >> </xsl:attribute> >> <xsl:apply-templates/> >> </cross-refs> >> </xsl:otherwise> >> </xsl:choose> >> </xsl:template> >> >> <xsl:template match="cr"> >> <xsl:apply-templates/> >> </xsl:template> >> >> Regards, >> Ganesh
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Expanding Ranges, Michael Kay | Thread | RE: [xsl] Expanding Ranges, Joga Singh Rawat |
[xsl] Accessing Package Files Using, Jeff Sese | Date | RE: [xsl] Expanding Ranges, Joga Singh Rawat |
Month |