xsl-list
[Top] [All Lists]

Re: [xsl] distinct values by xslt

2011-05-18 10:36:53
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>

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>