|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Tricky inclusion match
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/
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








