xsl-list
[Top] [All Lists]

Re: [xsl] Mapping from two sources

2010-10-03 06:37:37
Thank you for your answers. 

But the solution returns only elements from Doc1, I need element of Doc2 if
doc1.OLN = doc2.OLN
========
Problem

I need to have two sources:

input1 and input2. 

input1:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Order>
        <OrderLine>
                        <OLN>1</OLN>
                        <Fname>aa</Fname>
        </OrderLine>
        <OrderLine>
                        <OLN>2</OLN>
                        <Fname>bb</Fname>
        </OrderLine>    
</Order>


input2:
<?xml version="1.0" encoding="ISO-8859-1"?>
<POOrder>
        <POOrderLine>
                        <OLN>1</OLN>
                        <ID>123</ID>
                        <LName>aa</LName>
        </POOrderLine>
        <POOrderLine>
                        <OLN>2</OLN>
                        <ID>324</ID>
                        <LName>bb</LName>
        </POOrderLine>  
        <POOrderLine>
                        <OLN>3</OLN>
                        <ID>456</ID>
                        <LName>bb</LName>
        </POOrderLine>  
</POOrder>

I need the output from both sources combined. Please note that first two 
elements are coming from input1 and thrid element is from input2. What is the 
optimal way of doing this?

<?xml version="1.0" encoding="ISO-8859-1"?>
<OrderResponse>
        <Oline>
                <OLN>1</OLN>
                <Fname>aa</Fname>
                <ID>123</ID>
        </Oline>
        <Oline>
                <OLN>2</OLN>
                <Fname>bb</Fname>
                <ID>324</ID>
        </Oline>
</OrderResponse>
=====

Solution proposed:

<xsl:for-each-group select="$doc1//OrderLine, $doc2//POOrderline"
group-by="OLN">
<Oline>
<OLN><xsl:value-of select="current-grouping-key()"></OLN>
<xsl:copy-of select="current-group()/(FName, ID)"/>
</Oline>
</xsl:for-each-group>


--- On Sat, 10/2/10, Mukul Gandhi <gandhi(_dot_)mukul(_at_)gmail(_dot_)com> 
wrote:

From: Mukul Gandhi <gandhi(_dot_)mukul(_at_)gmail(_dot_)com>
Subject: Re: [xsl] Mapping from two sources
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date: Saturday, October 2, 2010, 1:07 PM
On Sat, Oct 2, 2010 at 4:29 PM,
sudheshna iyer <sudheshnaiyer(_at_)yahoo(_dot_)com>
wrote:
does xsl:for-each-group acts like inner join?

Well I think, for-each-group cannot be treated as inner
join (which is
a relational algebra abstraction, as Mike also says) -- we
are not
joining any two sets with for-each-group. The input to
for-each-group
is just a sequence, with definition of grouping key (for
e.g, the
value of group-by attribute).

I would imagine for-each-group as a kind of mapping
function,
something similar to for-each but with a kind of layer of
grouping on
top of that.



-- 
Regards,
Mukul Gandhi

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




      

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>