如果您以 XML 格式定义映射
<xsl:variable name="conversionRules">
<rule from="French" to="France" />
<rule from="Spanish" to="Spain" />
</xsl:variable>
并定义一个键
<xsl:key name="conversionKey" match="rule" use="@from" />
然后在 XSLT 2.0 中,您可以使用以下方法有效地查找此映射中的项目
key('conversionKey', value, $conversionRules)/@to
例如
<xsl:template match="VOCABULARY">
<xsl:copy>
<xsl:value-of select="key('conversionKey', ., $conversionRules)/@to" />
</xsl:copy>
</xsl:template>
如果您在样式表的不同位置重复执行此操作,则可能值得定义一个函数
<xsl:function name="local:lang-to-country" as="xs:string">
<xsl:param name="lang" as="xs:string" />
<xsl:sequence select="key('conversionKey', $lang, $conversionRules)/@to" />
</xsl:function>
(将相关xmlns:xs="http://www.w3.org/2001/XMLSchema"
和xmlns:local="urn:local"
声明添加到xsl:stylesheet
),然后您可以简单地进行转换local:lang-to-country(.)