File: Data.xml
<?xml version="1.0" encoding="US-ASCII"?>
<usstates>
<western>
<usstate>Arizona</usstate>
<usstate>California</usstate>
<usstate>Idaho</usstate>
<usstate>Montana</usstate>
<usstate>Nevada</usstate>
<usstate>Oregon</usstate>
<usstate>Washington</usstate>
<usstate>Utah</usstate>
</western>
</usstates>
File: Transform.xslt
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:key name="Capital" match="capital" use="@usstate" />
<xsl:key name="State" match="usstate" use="text()" />
<xsl:param name="cr">Arizona</xsl:param>
<xsl:template match="/">
<xsl:apply-templates select="document('capitals.xml')/capitals" />
<xsl:text>, </xsl:text>
<xsl:value-of select="key('State', $cr)" />
</xsl:template>
<xsl:template match="capitals">
<xsl:value-of select="key('Capital', $cr)" />
</xsl:template>
</xsl:stylesheet>