如何使用XSLT从XML中筛选指定语言的票据翻译内容?
按指定语言筛选XSLT翻译内容
针对你的XML结构,要精准获取某一种语言的翻译,只需在XPath选择器中通过@lang属性做筛选即可,具体方法如下:
直接指定语言筛选
在xsl:value-of的select属性里,通过谓词[@lang='目标语言代码']匹配对应语言的translation元素:
获取法语(fr)翻译:
<xsl:value-of select="description-translations/translation[@lang='fr']" />输出结果:
.Petite Galette获取荷兰语(nl)翻译:
<xsl:value-of select="description-translations/translation[@lang='nl']" />输出结果:
.Kleine Wrap获取英语(en)翻译:
<xsl:value-of select="description-translations/translation[@lang='en']" />输出结果:
.Small Wrap
动态切换语言(变量方式)
如果需要灵活切换目标语言,可以先定义一个变量存储语言代码,再通过变量引用筛选:
<!-- 定义目标语言变量 --> <xsl:variable name="target-lang" select="'en'" /> <!-- 根据变量获取对应翻译 --> <xsl:value-of select="description-translations/translation[@lang=$target-lang]" />
后续只需修改$target-lang的取值,就能快速切换翻译语言。
增加翻译缺失的 fallback 逻辑
如果担心某些语言没有对应的翻译,可以添加 fallback 规则,默认显示原description的内容:
<xsl:value-of select="description-translations/translation[@lang='en'] | description[not(description-translations/translation[@lang='en'])]" />
这段代码的逻辑是:如果找到英语翻译就输出它,否则输出原始的description内容。
内容的提问来源于stack exchange,提问作者Da Davi
相关产品推荐
相关产品推荐

