Re: [xsl] distinct values by xslt

Subject: Re: [xsl] distinct values by xslt
From: Syd Bauman <Syd_Bauman@xxxxxxxxx>
Date: Wed, 18 May 2011 11:36:40 -0400
I'm afraid this is too confusing to delve into right now, but I'm
wondering about the test for a preceding link (line 07). Do you
imagine that it is testing from a current node of a <link> that has
type=figure? It's not -- the current node is still the <p> that fired
the whole template to match.

01.  <xsl:template match="p">
02.    <p class="Para_indented">
03.      <xsl:apply-templates/>
04.    </p>
05.    <xsl:if test="link[@type='figure']">
06.      <xsl:variable name="figid" select="link[@type='figure']/@rid"/>
07.      <xsl:if test="not(preceding::link[@type='figure'][@rid=$figid])">
08.        <xsl:apply-templates select="//object[@id=$figid]"/>
09.      </xsl:if>
10.    </xsl:if>
11.    <xsl:if test="link[@type='table']">
12.      <xsl:variable name="tableid" select="link[@type='table']/@rid"/>
13.      <xsl:if test="not(preceding::link[@type='table'][@rid=$tableid])">
14.        <xsl:apply-templates select="//object[@id=$tableid]"/>
15.      </xsl:if>
16.    </xsl:if>
17.  </xsl:template>

Also I wonder if you are doing what you really want in line 06. The
variable figid is getting set to the sequence of all @rid values of
<link> children of the current <p> that match the criteria (have a
type= of 'figure'). For the test data, that means the string value of
figid is "f2 f3 f1".

> Anyone have any idea about to find out distinct attribute value by
> xslt. Figure 2 and Figure 3 are getting deleted by the logic
> provided by me as shown in the below XSLT. Below are the require
> things
>  
> XSLT
> <xsl:template match="p">
> <p class="Para_indented">
>  <xsl:apply-templates/>
> </p>
>   <xsl:if test="link[@type='figure']">
>    <xsl:variable name="figid" select="link[@type='figure']/@rid"/>
>    <xsl:if test="not(preceding::link[@type='figure'][@rid=$figid])">
>     <xsl:apply-templates select="//object[@id=$figid]"/>
>    </xsl:if>
>   </xsl:if>
>   <xsl:if test="link[@type='table']">
>    <xsl:variable name="tableid" select="link[@type='table']/@rid"/>
>    <xsl:if test="not(preceding::link[@type='table'][@rid=$tableid])">
>     <xsl:apply-templates select="//object[@id=$tableid]"/>
>    </xsl:if>
>   </xsl:if>
> </xsl:template>
> 
>  
> Input
> <p>First One of the primary goals (<link rid="f1" type="figure">Fig.
> 1</link>).</p>
> <p>second (see <link rid="f2" type="figure">Fig. 2</link>) and thos and
> <link rid="f3" type="figure">Fig. 3</link>). supporting the prediction that
> these species accelerate their development at the expense of growth (<link
> rid="f1" type="figure">Fig. 1</link>).</p>
>  
>  
> Required OUTPUT
> <p class="Para_Indented">First One of the primary goals (<a class="figcit"
> href="#fig1">Fig. 1</a>).</p>
> <div class="divFigure">
>  <table class="Figure" width="100%" align="center" border="0" id="fig1">
>  </table>
> </div>
> <p class="Para_Indented">second (see <a class="figcit" href="#fig2">Fig.
> 2</a>) and thos and <a class="figcit" href="#fig3">Fig. 3</a>). supporting
> the prediction that these species accelerate their development at the
> expense of growth (<a class="figcit" href="#fig1">Fig. 1</a>).</p>
> <div class="divFigure">
>  <table class="Figure" width="100%" align="center" border="0" id="fig2">
>  </table>
> </div>
> <div class="divFigure">
>  <table class="Figure" width="100%" align="center" border="0" id="fig3">
>  </table>
> </div>
>  
> CURRENT OUTPUT
> <p class="Para_Indented">First One of the primary goals (<a class="figcit"
> href="#fig1">Fig. 1</a>).</p>
> <div class="divFigure">
>  <table class="Figure" width="100%" align="center" border="0" id="fig1">
>  </table>
> </div>
> <p class="Para_Indented">second (see <a class="figcit" href="#fig2">Fig.
> 2</a>) and thos and <a class="figcit" href="#fig3">Fig. 3</a>). supporting
> the prediction that these species accelerate their development at the
> expense of growth (<a class="figcit" href="#fig1">Fig. 1</a>).</p>

Current Thread