Hi WROX XSLT forum,
Im quite new using XSLT templates, but already have a requirement (advanced XSLT for me) im facing multiple files+context roots issue, among others) to no avail yet.

In short I need to parse file1.xml and if a element "key" value exists in file2.xml - also an element value, then output the file1 Xml, if not skip.
Ive read a number of web articles discussing combining multiples Xml fiels with XSLT, alas, I havent found a working solution yet. (help!)
------------------------------------
(file1) SamplePeopleSoft.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Rows>
<Row>
...
<SubAccount>D4P8</SubAccount>
...
</Row>
<Row>
...
<SubAccount> D1MW</SubAccount>
...
</Row>
</Rows>
(file2) B1CSHValidPLA.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="B1CSHValidPLA.xsd" generated="2010-11-04T07:30:00">
<B1CSHValidPLA>
<ID>1</ID>
<ValidPLA>B1CSH0044C</ValidPLA>
</B1CSHValidPLA>
...
</dataroot>
(my .xsl with several attempts...)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" />
<xsl:variable name="b1cshvalidPLADoc" select="document('B1CSHValidPLA.xml')" />
<xsl:key name="validPLAkeys" match="B1CSHValidPLA" use="ValidPLA"/>
<xsl:template match="/">
<xsl:for-each select="document('B1CSHValidPLA.xml')">
<xsl:value-of select="key('validPLAkeys', 'B1CSH0051C')" />
</xsl:for-each>
<!-- <xsl:variable name="validPLAIDs" select="document('B1CSHValidPLA.xml')//ValidPLA" /> -->
<!-- <xsl:value-of select="$validPLAIDs" /> -->
<xsl:value-of select="count(document('B1CSHValidPLA.xml')//ValidPLA)" />
<!-- output header info -->
<xsl:text disable-output-escaping="yes"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>]]></xsl:text>
<xsl:text disable-output-escaping="yes"><![CDATA[<Rows>]]></xsl:text>
<xsl:for-each select="document('SamplePeopleSoft.xml')/Rows/Row">
<xsl:variable name="subacct"> <xsl:value-of select="SubAccount" /> </xsl:variable>
<xsl:value-of select="$subacct" />
<xsl:text disable-output-escaping="yes"><![CDATA[<Row>]]></xsl:text>
<!-- invoke templates to copy the child nodes -->
<!-- <xsl:copy-of select="child::*" /> -->
<!--
<xsl:apply-templates select="Ledger"/>
<xsl:apply-templates select="BusinessUnit"/>
<xsl:apply-templates select="Dept"/>
<xsl:apply-templates select="Office"/>
<xsl:apply-templates select="Account"/>
<xsl:apply-templates select="Descr"/>
<xsl:apply-templates select="GAAPID"/>
<xsl:apply-templates select="GAAPDescription"/>
<xsl:apply-templates select="SubAccount"/>
<xsl:apply-templates select="ForeignCcyCode"/>
<xsl:apply-templates select="LTDForeignCcyAmt"/>
<xsl:apply-templates select="BaseCcyCode"/>
<xsl:apply-templates select="LTDBaseCcyAmt"/>
<xsl:apply-templates select="Year"/>
<xsl:apply-templates select="Period"/>
-->
<xsl:text disable-output-escaping="yes"><![CDATA[</Row>]]></xsl:text>
</xsl:for-each>
<xsl:text disable-output-escaping="yes"><![CDATA[</Rows>]]></xsl:text>
</xsl:template>
<xsl:template match="Ledger">
<xsl:text disable-output-escaping="yes"><![CDATA[<LEDGER>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</Ledger>]]></xsl:text>
</xsl:template>
<xsl:template match="BusinessUnit">
<xsl:text disable-output-escaping="yes"><![CDATA[<BusinessUnit>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</BusinessUnit>]]></xsl:text>
</xsl:template>
<xsl:template match="Dept">
<xsl:text disable-output-escaping="yes"><![CDATA[<Dept>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</Dept>]]></xsl:text>
</xsl:template>
<xsl:template match="Office">
<xsl:text disable-output-escaping="yes"><![CDATA[<Office>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</Office>]]></xsl:text>
</xsl:template>
<xsl:template match="Account">
<xsl:text disable-output-escaping="yes"><![CDATA[<Account>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</Account>]]></xsl:text>
</xsl:template>
<xsl:template match="Descr">
<xsl:text disable-output-escaping="yes"><![CDATA[<Descr>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</Descr>]]></xsl:text>
</xsl:template>
<xsl:template match="GAAPID">
<xsl:text disable-output-escaping="yes"><![CDATA[<GAAPID>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</GAAPID>]]></xsl:text>
</xsl:template>
<xsl:template match="GAAPDescription">
<xsl:text disable-output-escaping="yes"><![CDATA[<GAAPDescription>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</GAAPDescription>]]></xsl:text>
</xsl:template>
<xsl:template match="LedgerCode">
<xsl:text disable-output-escaping="yes"><![CDATA[<LedgerCode>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</LedgerCode>]]></xsl:text>
</xsl:template>
<xsl:template match="SubAccount">
<xsl:text disable-output-escaping="yes"><![CDATA[<SubAccount>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</SubAccount>]]></xsl:text>
</xsl:template>
<xsl:template match="ForeignCcyCode">
<xsl:text disable-output-escaping="yes"><![CDATA[<ForeignCcyCode>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</ForeignCcyCode>]]></xsl:text>
</xsl:template>
<xsl:template match="LTDForeignCcyAmt">
<xsl:text disable-output-escaping="yes"><![CDATA[<LTDForeignCcyAmt>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</LTDForeignCcyAmt>]]></xsl:text>
</xsl:template>
<xsl:template match="BaseCcyCode">
<xsl:text disable-output-escaping="yes"><![CDATA[<BaseCcyCode>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</BaseCcyCode>]]></xsl:text>
</xsl:template>
<xsl:template match="LTDBaseCcyAmt">
<xsl:text disable-output-escaping="yes"><![CDATA[<LTDBaseCcyAmt>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</LTDBaseCcyAmt>]]></xsl:text>
</xsl:template>
<xsl:template match="Year">
<xsl:text disable-output-escaping="yes"><![CDATA[<Year>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</Year>]]></xsl:text>
</xsl:template>
<xsl:template match="Period">
<xsl:text disable-output-escaping="yes"><![CDATA[<Period>]]></xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes"><![CDATA[</Period>]]></xsl:text>
</xsl:template>
</xsl:stylesheet>
Im using MSXSL 4.0 to test.
thks in advance.
Lee!