|
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 |