Subject: Re: [xsl] Duplicate Elimination From: Ihe Onwuka <ihe.onwuka@xxxxxxxxx> Date: Wed, 12 Mar 2014 23:42:35 +0000 |
As suspected it was possible to avoid grouping. See the predicate tacked on to B/Date. Thanks all. <xsl:apply-templates select="A/Date | B/Date[not(A/Date/text() = text())]> <xsl:sort select="." order="ascending"/> </xsl:apply-templates> On Wed, Mar 12, 2014 at 11:26 PM, Ihe Onwuka <ihe.onwuka@xxxxxxxxx> wrote: > Yes that did occur but grouping syntax is not something I retain in > short term memory so am going to try and avoid that...... we'll see. > > On Wed, Mar 12, 2014 at 10:09 PM, Wendell Piez <wapiez@xxxxxxxxxxxxxxx> wrote: >> Hi, >> >> I hate to say it, but this is nicely handled as a grouping problem: >> >> <xsl:for-each-group select="(A|B)/Date" group-by="."> >> <xsl:apply-templates select=".'/> <!-- applies a template to the >> first member of each group --> >> <!-- select="current-group()[1]" to be more explicit --> >> </xsl:for-each-group> >> >> Many grouping problems are hidden in plain sight. :-) >> >> Cheers, Wendell >> >> >> >> On Wed, Mar 12, 2014 at 5:14 PM, Martin Holmes <mholmes@xxxxxxx> wrote: >>> If the text content of the element is all you care about, you could do >>> something like this: >>> >>> <xsl:variable name="distinctDates"> >>> <xsl:for-each select="distinct-values(A/Date | B/Date)"> >>> <xsl:sort/> >>> <Date><xsl:value-of select="."/></Date> >>> </xsl:for-each> >>> </xsl:variable> >>> >>> <xsl:apply-templates select="$distinctDates/Date"/> >>> >>> >>> >>> >>> On 14-03-12 01:34 PM, Ihe Onwuka wrote: >>>> >>>> I have Date elements coming from 2 different parents. >>>> >>>> <A> >>>> <Date>blah</Date> >>>> </A> >>>> >>>> <B> >>>> <Date>blah</Date> >>>> </B> >>>> >>>> I am doing >>>> >>>> <xsl:apply-templates select="A/Date | B/Date> >>>> <xsl:sort select="." order="ascending"/> >>>> </xsl:apply-templates> >>>> >>>> and >>>> >>>> <xsl:template match="Date"> >>>> etc >>>> </xsl:template> >>>> >>>> I have noticed that when A and B have a child element of the same date >>>> the Date template gets fired on each occasion, whereas I only want it >>>> fired once >>>> >>>> I thought the union operator in the apply-templates would have the >>>> effect of eliminating duplicates or aren't they duplicates if they >>>> have the same content but come from different parents. >>> >> >> >> >> -- >> Wendell Piez | http://www.wendellpiez.com >> XML | XSLT | electronic publishing >> Eat Your Vegetables >> _____oo_________o_o___ooooo____ooooooo_^
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Duplicate Elimination, Ihe Onwuka | Thread | Re: [xsl] Duplicate Elimination, David Carlisle |
Re: [xsl] Duplicate Elimination, Ihe Onwuka | Date | Re: [xsl] printing input XML file l, Kevin Brown |
Month |