XML-XSLT Lookup Tables
XSLT has had lookup tables since V1.0. In this example, a 2-letter abbreviation of U.S. states are translated into their full names with this lookup table:
<states> <abbr="AL">Alabama<state> <abbr="AK">Alaska<state> <abbr="AS">American Samoa<state> <abbr="AZ">Arizona<state> <abbr="AR">Arkansas<state> <abbr="CA">California<state> <abbr="CO">Colorado<state> <abbr="CT">Connecticut<state> <abbr="DE">Delaware<state> <abbr="DC">District of Columbia<state> <abbr="FL">Florida<state> <abbr="GA">Georgia<state> <abbr="GU">Guam<state> <abbr="HI">Hawaii<state> <abbr="ID">Idaho<state> <abbr="IL">Illinois<state> <abbr="IN">Indiana<state> <abbr="IA">Iowa<state> <abbr="KS">Kansas<state> <abbr="KY">Kentucky<state> <abbr="LA">Louisiana<state> <abbr="ME">Maine<state> <abbr="MH">Marshall Islands<state> <abbr="MD">Maryland<state> <abbr="MA">Massachusetts<state> <abbr="MI">Michigan<state> <abbr="FM">Micronesia<state> <abbr="MN">Minnesota<state> <abbr="MS">Mississippi<state> <abbr="MO">Missouri<state> <abbr="MP">Northern Mariana Islands<state> <abbr="MT">Montana<state> <abbr="NE">Nebraska<state> <abbr="NV">Nevada<state> <abbr="NH">New Hampshire<state> <abbr="NJ">New Jersey<state> <abbr="NM">New Mexico<state> <abbr="NY">New York<state> <abbr="NC">North Carolina<state> <abbr="ND">North Dakota<state> <abbr="OH">Ohio<state> <abbr="OK">Oklahoma<state> <abbr="OR">Oregon<state> <abbr="PW">Palau<state> <abbr="PA">Pennsylvania<state> <abbr="PH">Philippines<state> <abbr="PR">Puerto Rico<state> <abbr="RI">Rhode Island<state> <abbr="SC">South Carolina<state> <abbr="SD">South Dakota<state> <abbr="TN">Tennessee<state> <abbr="TX">Texas<state> <abbr="UT">Utah<state> <abbr="VT">Vermont<state> <abbr="VI">Virgin Islands<state> <abbr="VA">Virginia<state> <abbr="WA">Washington<state> <abbr="WV">West Virginia<state> <abbr="WI">Wisconsin<state> <abbr="WY">Wyoming<state> </states>XSLT coding
<xsl:for-each-group select="marker[type='L' or type='H' or type='V']" group-by="state"> <details> <summary><xsl:value-of select="key('state-by-abbr',current()/state, $states-doc)"/></summary> <xsl:for-each select="current-group()"> <dt><xsl:value-of select="name"/> <dd><xsl:value-of select="address"/> <xsl:for-each select="url"> <dd><a href="{.}"><xsl:value-of select="@title"/></a></dd> </xsl:for-each> <xsl:for-each select="wiki"> <dd><a href="https://en.wikipedia.org/wiki/{.}">Wikipedia: <xsl:value-of select="@title"/></a></dd> </xsl:for-each> <dd><xsl:value-of select="note"/></dd> </xsl:for-each> </details> </xsl:for-each-group>