Re: [xsl] Intersection of two sets based on a subset of fields?

Subject: Re: [xsl] Intersection of two sets based on a subset of fields?
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 21 May 2020 14:45:39 -0000
In the language of relational algebra, it's a join, not an intersection.

In XSLT, joins are best performed using the key() function. In XSLT 2.0 (or is
it 3.0?) you can define a composite key with multiple fields.

Michael Kay
Saxonica

> On 21 May 2020, at 15:17, Roger L Costello costello@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi Folks,
>
> I have a set of Book instances. I call this Set #1. Here are two instances:
>
> <Book>
>    <Title>ABC</Title>
>    <Author>John Doe</Author>
>    <Country>USA</Country>
>    <Binding>hardcover</Binding>
> </Book>
>
> <Book>
>    <Title>XYZ</Title>
>    <Author>Mary Sue</Author>
>    <Country>CAN</Country>
>    <Binding>hardcover</Binding>
> </Book>
>
> I have a set of Music instances. I call this Set #2. Here is one instance:
>
> <Music>
>    <Genre>Classical</Genre>
>    <Author>John Doe</Author>
>    <Country>USA</Country>
>    <Cost>9.95</Cost>
> </Music>
>
> Query: Find the subset of Set #1 that intersects with Set #2 at the <Author>
and <Country> elements.
>
> If Set #1 consists of the two instances shown above and Set #2 consists of
the one instance shown above, then the result of the query is the following:
>
> <Book>
>    <Title>ABC</Title>
>    <Author>John Doe</Author>
>    <Country>USA</Country>
>    <Binding>hardcover</Binding>
> </Book>
>
> That Book instance has an <Author> and <Country> that intersects with the
<Author> and <Country> in the Music instance.
>
> I view this as an intersection problem. However, it is an intersection at
specific fields (the Author and Country fields). Do you view it as an
intersection problem?
>
> If it is viewed as an intersection problem, then is there a nice XPath
expression that does intersection-at-specific-fields?
>
> If it is better viewed not as an intersection problem, then how is it better
viewed? is there a nice XPath expression for that view?
>
> /Roger

Current Thread