[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] duplicate elimination


Subject: Re: [xsl] duplicate elimination
From: "Ihe Onwuka ihe.onwuka@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 1 Nov 2014 19:27:56 -0000

Oh thanks Martin for eliminating the blind alley I was wandering up.

On Sat, Nov 1, 2014 at 7:24 PM, Ihe Onwuka <ihe.onwuka@xxxxxxxxx> wrote:

> Solved. Templates were being applied to a single line element hence it had
> no siblings.
>
> Fix was to change the scope of the xsl:variable so that it entailed
> multiple line elements.
>
> On Sat, Nov 1, 2014 at 6:19 PM, Ihe Onwuka <ihe.onwuka@xxxxxxxxx> wrote:
>
>> Yes and it works when i use Saxon 9.5 whatever against the XML snippet
>> that I posted.
>>
>> Unfortunately for me that is not how the XML manifests, rather it is the
>> product of some intermediate step and pipelined through a variable.
>>
>> i.e the XML you saw is actually the content of a variable (call it $line)
>> which is the subject of an apply-templates as in <xsl:apply-templates
>> select="$line"/> where $line contains the posted XML.
>>
>> Now that shouldn't make a difference but duplicates aren't being
>> eliminated in this scenario.
>>
>> So the plot thickens.
>>
>> On Sat, Nov 1, 2014 at 5:56 PM, Martin Honnen martin.honnen@xxxxxx <
>> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>>
>>> Ihe Onwuka ihe.onwuka@xxxxxxxxx wrote:
>>>
>>>>
>>>>
>>>> On Sat, Nov 1, 2014 at 5:26 PM, Martin Honnen martin.honnen@xxxxxx
>>>> <mailto:martin.honnen@xxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx
>>>> <mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> wrote:
>>>>
>>>
>>>      Use the "=" operator and all preceding sibling line elements:
>>>>
>>>>        <xsl:template match="line[title[1] =
>>>>     preceding-sibling::line/title[__1]]"/>
>>>>        <xsl:template match="line">
>>>>          <xsl:apply-templates select="title[1]"/>
>>>>        </xsl:template>
>>>>     --~--
>>>>
>>>>
>>>> One of the variations I had tried before. It does not work.
>>>>
>>>
>>> When I use Saxon 6.5.5 against your posted input sample and the
>>> stylesheet
>>>
>>> <xsl:stylesheet
>>>   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>>>   version="1.0">
>>>
>>>   <xsl:template match="line[title[1] = preceding-sibling::line/title[
>>> 1]]"/>
>>>
>>>   <xsl:template match="line">
>>>     <xsl:apply-templates select="title[1]"/>
>>>   </xsl:template>
>>>
>>> </xsl:stylesheet>
>>>
>>> I get the output
>>>
>>> <?xml version="1.0" encoding="utf-8"?>
>>>       La foto
>>>       La C:ltima parada (Lo peor de todo)
>>>       Polvo Eres
>>>       "7 dC-as al desnudo"
>>>
>>>       "7 vidas"
>>>
>>>
>>> which looks fine to me as for eliminating the duplicates.


Current Thread
Keywords
xml