我在这个XSLT上真的很新,并且无法从XSLT中了解如何执行以下操作。
我有VOCABULARY值的转换图:
French -> france
Spenish -> Spain
并且还有更多(我可以将它们放在xslt文件中本身并不太多)
如何根据此预定义的地图转换具有相同条件的属性值?
...
<Languages>
<LANGUAGE>French</LANGUAGE>
<VOCABULARY>French</VOCABULARY>
</Languages>
...
答案 0 :(得分:0)
如果您以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(.)