Subject: RE: [xsl] distinct values by xslt From: "JS Rawat" <jrawat@xxxxxxxxxxxxxx> Date: Thu, 19 May 2011 12:35:15 +0530 |
Hi Wendell, I am using XSLT 2.0. will you please integrate it into below xslt!!! -----Original Message----- From: Wendell Piez [mailto:wapiez@xxxxxxxxxxxxxxxx] Sent: Wednesday, May 18, 2011 9:51 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] distinct values by xslt Hi, As I understand it, this isn't really a "distinct values" problem, but rather a problem of discriminating between nodes within sets of nodes, all of which have the same values associated with them. The first question here is whether this must be XSLT 1.0, or whether XSLT 2.0 can be used. If you want to determine whether a node is the first node in the document with a specific value associated with it (such as the first 'link' element with a given @rid value), a good solution can be to use a key: <xsl:key name="link-by-rid" match="link" use="@rid"/> Once this key is set up, you can examine any $link (where $link is a single 'link' element): XSLT 1.0: generate-id($link) = generate-id(key('link-by-rid',$link/@rid)[1]) XSLT 2.0: $link is key('link-by-rid',$link/@rid)[1] This method will also be faster, typically, than using the preceding:: axis. You can do the same thing without a key, but that will often be slower too (it depends on the processor): XSLT 1.0: generate-id($link) = generate-id((//link[@rid=$link/@rid])[1]) XSLT 2.0: $link is (//link[@rid=$link/@rid])[1] The extra parentheses are necessary here, unless you opt to use the descendant:: axis instead of //. Cheers, Wendell On 5/18/2011 11:36 AM, Syd Bauman wrote: > 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> -- ====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] distinct values by xslt, Wendell Piez | Thread | Re: [xsl] distinct values by xslt, Wendell Piez |
RE: [xsl] distinct values by xslt, JS Rawat | Date | [xsl] Design approaches to separati, Costello, Roger L. |
Month |