xsl-list
[Top] [All Lists]

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

2020-05-21 09:45:46
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(_at_)mitre(_dot_)org 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> 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 

--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>