如何选择具有不同属性的相同名称元素

时间:2017-04-30 12:42:42

标签: xslt

鉴于此输入:

<place>
    <name lang="en">english_nameA</name>
    <name lang="fr">french_nameA</name>
</place>
<place>
    <name lang="en">english_nameB</name>
</place>

我想选择(让他们说放到HTML表格中)法语的地方名称(如果可以使用)或英语(如果法语不可用)。

怎样才能在xslt中完成?

1 个答案:

答案 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。然后,您可以应用首选语言的多个“层”,甚至在不存在时指定默认值。

相关问题