I see, that provides a little bit of clarity.
I did notice that I can simply put this and it still works properly. Thus eliminating the document() form the XSLT, since the variable is already in the included LUT.xsl
Code:
<xsl:for-each select="$MappingFile">
<Document>
<xsl:value-of select="key('KeyRefItem',$sKey)[../@Src = $sList]/../@Tgt"/>
<xsl:copy-of select="key('KeyRefItem',$sKey)"/>
</Document>
</xsl:for-each>
So I've been reading the changes of <xsl:key> between 1.0 and 2.0, but I still can't extract the eased restrictions on global variables in the 'match' and 'use' attributes.
In 1.0, using <xsl:for-each> was the only way to "change" the context node so the key() function could reference a LookupTable from an external source (document, included xslt, etc). So there is no way to "pre-build" various indexes, so a single key could be used to match against all of them. The <xsl:for-each> seems like a very "trick" method. It also is restricting the key to the single document tree/context node, rather then the pool of all possible global available trees. (Multiple included xsls, with mulitple LUTs)