Subject: Re: Tricky inclusion match
From: Karl Stubsjoen <kstubs@xxxxxxxxx>
Date: Tue, 29 Mar 2005 09:35:35 -0700
|
Thanks for the 2.0 spec.
I'm probably going down that route, with some more questions on data
aggregation... I need to summarize data based on the result of an
apply-templates. Man, this is getting ugly... but I am faithful there
is a very realistic 1.0 solution!
So, let me ask the following question:
Use a variable to store the results of an apply-templates rule. The
result is a new element which might look something like this:
<data>
<value>1</value>
<value>1</value>
</data>
How can I aggregate (sum) the above data element which is stored in a variable?
Karl
On Tue, 29 Mar 2005 08:26:15 -0800 (PST), Mukul Gandhi
<mukul_gandhi@xxxxxxxxx> wrote:
> Following is a XSLT 2.0 solution..
>
> <?xml version="1.0"?>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="2.0">
>
> <xsl:output method="text" />
>
> <xsl:template match="/data">
> <xsl:variable name="temp1" select="colors/color" />
>
> <xsl:for-each select="pictures/picture">
> <xsl:variable name="temp2"
> select="distinct-values(color)" />
> <xsl:if
> test="count(distinct-values($temp1[.=$temp2])) >
> 1">
> picture sample #<xsl:value-of select="@sample"
> /><xsl:text>
> </xsl:text>
> </xsl:if>
> </xsl:for-each>
> </xsl:template>
>
> </xsl:stylesheet>
>
> The expression distinct-values($temp1[.=$temp2]) finds
> the intersection of sequences $temp1 and $temp2.
>
> XSLT processor used: Saxon 8.3 ..
>
> Regards,
> Mukul
>
> --- Karl Stubsjoen <kstubs@xxxxxxxxx> wrote:
> > Okay,
> > Lets say you have a set of colors and you have a
> > whole bunch of
> > pictures and you want to match on all pictures who
> > have one or more of
> > the given colors but you have to at least match on 2
> > of them (unique,
> > so not red and red - so a picture could list red
> > twice but that would
> > not be a match). I'm trying to use keys and
> > grouping to solve this
> > but thinking that I might be making this more
> > difficult. At any rate,
> > I'm stuck and would appreciate some help : )
> >
> > Sample Data (expected results below):
> >
> > <data>
> > <colors>
> > <color>red</color>
> > <color>blue</color>
> > <color>fucia</color>
> > <color>violet</color>
> > </colors>
> > <pictures>
> > <picture sample="1">
> > <color>black</color>
> > <color>grey</color>
> > <color>white</color>
> > </picture>
> > <picture sample="2">
> > <color>red</color>
> > <color>green</color>
> > <color>brown</color>
> > <color>blue</color>
> > </picture>
> > <picture sample="3">
> > <color>purple</color>
> > <color>orange</color>
> > </picture>
> > <picture sample="4">
> > <color>blue</color>
> > <color>green</color>
> > <color>red</color>
> > </picture>
> > <picture sample="5">
> > <color>fucia</color>
> > <color>green</color>
> > <color>violet</color>
> > </picture>
> > <picture sample="6">
> > <color>red</color>
> > <color>brown</color>
> > <color>red</color>
> > </picture>
> > </pictures>
> > </data>
> >
> > Expected Results (picture matches based on 2 or more
> > colors used and
> > listed in colors above)
> >
> > picture sample #2
> > picture sample #4
> > picture sample #5
> >
> >
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Small Business - Try our new resources site!
> http://smallbusiness.yahoo.com/resources/
|