鉴于此输入:
<place>
<name lang="en">english_nameA</name>
<name lang="fr">french_nameA</name>
</place>
<place>
<name lang="en">english_nameB</name>
</place>
我想选择(让他们说放到HTML表格中)法语的地方名称(如果可以使用)或英语(如果法语不可用)。
怎样才能在xslt中完成?
答案 0 :(得分:0)
您可以指定选择@lang='fr'
的名称的XPath,但如果没有@lang='fr'
的名称元素,请选择@lang='en'
<xsl:template match="place">
<xsl:value-of select="name[@lang='fr' or
@lang='en' and not(../name/@lang='fr')]"/>
</xsl:template>
使用 XSLT 2.0 或 3.0 ,您也可以先按首选值顺序选择它们,然后选择序列中的第一个值:
<xsl:template match="place">
<xsl:value-of select="(name[@lang='fr'], name[@lang='en'])[1]"/>
</xsl:template>
如果没有fr
值,则序列中的第一个将是en
。然后,您可以应用首选语言的多个“层”,甚至在不存在时指定默认值。