Something like this. Use address.xml as the principal input document. Do
<xsl:variable name="addresses" select="/"/>
<xsl:variable name="states" select="document('state.xml')"/>
<xsl:template match="address">
<address>
<xsl:copy-of select="*"/>
<xsl:copy-of select="$states/states/state[name=current()/state]/abbreviation"/>
</address>
</xsl:template>
If the look-up table is large, you can use keys (xsl:key) for greater efficiency.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference