Re: [xsl] Mapping from two sources (~ inner join in DB)

Subject: Re: [xsl] Mapping from two sources (~ inner join in DB)
From: sudheshna iyer <sudheshnaiyer@xxxxxxxxx>
Date: Sun, 3 Oct 2010 12:23:18 -0700 (PDT)
Team,

For this, I solved using two for-each loops. I am not sure whether this
is performance efficient way of doing this.  Please suggest if there is any
other better way to improve performance:
====

<?xml version="1.0"
encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:xs="http://www.w3.org/2001/XMLSchema";
xmlns:fn="http://www.w3.org/2005/xpath-functions";>
	<xsl:output method="xml"
version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:variable name="input2"
select="document('file:///C:/temp/input2.xml')"/>
	<xsl:template
match="Order">
		<OrderResponse>
			<xsl:for-each select="OrderLine">
<xsl:variable name="vOln" select="OLN"/>
				<Oline>
				<xsl:variable
name="vID">
					<xsl:for-each select="$input2/POOrder/POOrderLine">
<xsl:if test="$vOln=OLN">
							<xsl:value-of select="ID"/>
</xsl:if>
					</xsl:for-each>
					</xsl:variable>
					<OLN><xsl:value-of
select="$vOln"/></OLN>
					<ID><xsl:value-of select="$vID"/></ID>
<Fname><xsl:value-of select="Fname"/></Fname>
					<Email><xsl:value-of
select="Email"/></Email>			
				</Oline>
			</xsl:for-each>
		</OrderResponse>
</xsl:template>
</xsl:stylesheet>
=====

--- On Sun, 10/3/10, sudheshna iyer
<sudheshnaiyer@xxxxxxxxx> wrote:

> From: sudheshna iyer
<sudheshnaiyer@xxxxxxxxx>
> Subject: [xsl] Mapping from two sources (~ inner
join in DB)
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date: Sunday, October 3,
2010, 2:56 PM
> Team,
> 
> For the below question, I got the answers from you
using
> <xsl:for-each-group>. But my version of XSLT is not
> supporting
xsl:for-each-group. 
> 
> Is there a different way of implementing this? 
>
=======
> 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>
> 
> 
>       
> 
>
--~------------------------------------------------------------------
>
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@xxxxxxxxxxxxxxxxxxxxxx>
> --~--

Current Thread