This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: A unique distinct problem
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] A unique distinct problem
- From: "Evan Lenz" <elenz at xyzfind dot com>
- Date: Wed, 8 Aug 2001 14:41:16 -0700
- Cc: <nshafer at ephibian dot com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
I think this should work for you:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates
select="/report/subscriber/location/shift_date[not(@date=preceding::shift_da
te/@date)]">
<xsl:sort select="@date"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="shift_date">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates
select="/report/subscriber/location/shift_date[@date=current()/@date]/credit
_card[not(@type=preceding::credit_card[../@date=current()/@date]/@type)]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="credit_card">
<xsl:copy>
<xsl:copy-of select="@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Evan Lenz
XYZFind Corp.
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Nate
> Sent: Wednesday, August 08, 2001 1:49 PM
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] A unique distinct problem
>
>
> I have found a lot of info on the web, including the archive for this
> list, about selecting distinct nodes using the preceding-sibling axis, and
> what not. However, I still haven't been able to find a solution for this
> somewhat more convoluted problem. Given this xml:
>
> <report>
> <subscriber number="001930">
> <location number="358107">
> <shift_date date="09-JUL-01">
> <credit_card type="Visa">
> </credit_card>
> <credit_card type="Switch">
> </credit_card>
> <credit_card type="Mastercard">
> </credit_card>
> </shift_date>
> <shift_date date="10-JUL-01">
> <credit_card type="Visa">
> </credit_card>
> </shift_date>
> </location>
> <location number="358108">
> <shift_date date="08-JUL-01">
> <credit_card type="American Express">
> </credit_card>
> <credit_card type="Visa">
> </credit_card>
> <credit_card type="Switch">
> </credit_card>
> <credit_card type="Mastercard">
> </credit_card>
> </shift_date>
> <shift_date date="09-JUL-01">
> <credit_card type="Visa">
> </credit_card>
> <credit_card type="Mastercard">
> </credit_card>
> </shift_date>
> </location>
> <location number="358199">
> <shift_date date="08-JUL-01">
> <credit_card type="Visa">
> </credit_card>
> <credit_card type="Switch">
> </credit_card>
> <credit_card type="Mastercard">
> </credit_card>
> </shift_date>
> <shift_date date="10-JUL-01">
> <credit_card type="American Express">
> </credit_card>
> <credit_card type="Visa">
> </credit_card>
> <credit_card type="Mastercard">
> </credit_card>
> </shift_date>
> </location>
> </subscriber>
> </report>
>
> I want to iterate over a list of shift_dates and all the credit cards that
> were used on that date for each subscriber. So I want a list like this:
>
> <shift_date date="08-JUL-01">
> <credit_card type="American Express"/>
> <credit_card type="Visa"/>
> <credit_card type="Switch"/>
> <credit_card type="Mastercard"/>
> </shift_date>
> <shift_date date="09-JUL-01"/>
> <credit_card type="Visa"/>
> <credit_card type="Switch"/>
> <credit_card type="Mastercard"/>
> </shift_date>
> <shift_date date="10-JUL-01"/>
> <credit_card type="American Express"/>
> <credit_card type="Visa"/>
> <credit_card type="Mastercard"/>
> </shift_date>
>
> So I basicly want every credit card on each date, but without duplicates
> in the list. Is this possible with XSLT 1.0? Or should I wait for
> select-distinct in XSLT 2.0?
>
> Please cc my email, nshafer@ephibian.com, in the reply, I am not
> subscribed to this list.
>
> Thanks,
> Nate
>
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list