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